首页
社区
课程
招聘
[原创]相见恨晚,新来菜鸟第一帖:VC编写注册机 FOR “riijj Crackme (1) 的详解”
发表于: 2008-4-20 00:43 5984

[原创]相见恨晚,新来菜鸟第一帖:VC编写注册机 FOR “riijj Crackme (1) 的详解”

2008-4-20 00:43
5984

【标  题】相见恨晚,新来菜鸟第一帖:VC编写注册机 FOR “riijj Crackme (1) 的详解”
【对  象】刚来菜鸟
【下载地址】http://bbs.pediy.com/upload/files/1084801702.zip
【破解工具】OD,VC
【保护方式】序列号
【任  务】学习编写注册机
【破文作者】qery
【组  织】没有
【备  注】高手飘过,免得费你的时间,本人新来菜鸟,为了鼓励和我差不多的菜鸟一起学习一起进步!!
【电  邮】qery#yahoo.cn  ;前面的#用@代替

        觉得有点悲哀,孤陋寡闻的我这个时候才看到看雪。既然来了,就认真学习一下,我看了下Crack Tutorial,有些资料还是很容易上手,当然那些都已经是老古董了,老古董才是基础!我是看CCDebuger兄的OllyDBG 入门系列文章开始,不多,也才看了三两篇,给入门菜鸟的我帮助简直无话说。呵呵,在此谢谢各位大侠的杰作的帮助,也希望我能继续菜下去!!

        首先说明这不是破文,只是给出注册机,代码中相应给出了同反汇编的程序对应关系。想给菜鸟如我菜鸟一点信心:破文具体解释和Crackme下载地址,请看riijj 兄写的“【原创】riijj Crackme (1) 的详解”:http://bbs.pediy.com/showthread.php?t=7505

#include <iostream>
#include <string>
using namespace std;

short catlat(int& var);//**********对应:call 0040134A 的声明

int main()
{
char ch,ser[16],name[16];
short k=0,var2=0,i,j;
int cnum,var1;     //var1保存循环计算需要的数据,对应004050AC中的数据
char* yourname=name;
char* series=ser;
//**********对应:00401250及其上那些语句**********//
cout<<"enter your name:";   //获取用户名
while((ch=cin.get())!=10)   //有换行表示输入完毕
{                                                         //10为换行符,13为回车符
         name[k]=ch;
         k++;
}
name[k]='\0';
cout<<endl;

//**********对应:00401252  cmp   eax, 3 *********//
  if(strlen(yourname)<3)      //判断用户名字节是否大于等于3,否则结束
{
         cout<<sizeof(short)<<"need more byte"<<endl;
         return -1;
}

//**********对应:00401276 到00401296  *********//
cnum=(name[0]%name[1])*name[2]+1;
var1=4294967295/cnum;    //十进制数字4294967295 对应 0x FFFFFFFFH

//**********对应:004012A0到004012B8  的循环转移*********//
for(i=0;i<15;i++)
{
         var2=catlat(var1);        //call  0040134A
         ser[i]=(var2%26)+65;
}
ser[i]='\0';
//cout<<series<<endl;

//**********真正序列号开始计算*********//
//**********对应:004012A0到004012B8  的循环转移*********//
for(i=0;i<strlen(yourname);i++)
{
         cnum=int(name[i]);   //这两行对应004012CD 到004012E0
         cnum=123*(cnum/32);
         if(cnum>0)
         {
                 for(j=0;j<=cnum;j++)
                 {
                         var2=catlat(var1);    //call  0040134A
                 }                 
         }
         else
         {
                 var2=catlat(var1);      //call  0040134A
         }
         ser[i]=(var2%26)+65;
}
ser[i]='\0';

//显示结果
cout<<"name:"<<yourname<<endl<<"series:"<<series<<endl;
cin.get();
return 0;
}

//**********对应:call 0040134A    *********//
short catlat(int& var)  
{
        int varin;short tt;
        var*=214013;      //十进制数字214013 对应 0x 343FDH
        var+=2531011;     //十进制数字2531011 对应 0x 269EC3
        varin=var;

        if(varin<0)
        {               
                varin = abs(varin/65536)+1;
                tt = short(32768-varin);
        }
        else
        {
                tt = short(varin/65536);
        }
        return tt;
}

//签名:新菜鸟


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 270
活跃值: (132)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
支持一下,精神鼓励,哈哈

比我上进呀,我到现在汇编还没看完~~~~~
2008-4-20 01:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也是菜鳥,進來學習了
2008-4-20 01:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
才接触~进来学习一下!
2008-4-20 04:27
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
支持下~~~~~
2008-6-7 09:19
0
雪    币: 212
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6

我还不会算法。。。
2008-6-7 15:29
0
游客
登录 | 注册 方可回帖
返回