反汇编——编写注册机

      将要和大家一起来分析CrackMe的注册算法,并写出注册机,现在我们开始,所用的CrackMe可以问我索取,用到的OD由于比较大,没法上传附件,大家去网上搜把。
我们先运行这个CrackMe,然后随便输入用户名和序列号,再点击确定,毫无反应,说明我们输入的用户名和序列号是错误的,然后用OD打开这个软件,常规的方法是查找字符串,不过在软件界面上作者很明显的说到无字符串提醒,无敏感函数的调用,看来我们只能另寻他法了。也无妨,我们用IDA来打开看一下。在IDA左侧的函数区我们看到一个函数UpDateData会MFC的应该知道,这个函数有两个功能,一是将控件上的数据赋给控件关联的变量,二是将控件关联变量的值显示到控件上,我们就可以猜测,在这个CrackMe中,作者是不是也使用这个函数来实现获取用户名和序列号的呢,双击这个函数,在右边的区域会弹出一个图形的调用窗口,点击这个图形窗口上一蓝色字母N右边向下的箭头,就可以跳到该函数的被调用区域,记录这个函数所在区域的地址(text:00401586),用OD打开这个软件后,按下ctrl G,输入00401586,就可以在OD中找到UpDateData函数的被调用区域,在00401586    E8 CB030000        CALL 这一行按下F2下断点后,按F9运行程序,直到弹出这个软件的对话框界面,然后再界面中输入用户名和序列号(比如我这里用户名是ambers,序列号是123456),点击“确定”后,程序会在00401586    E8 CB030000        CALL 这一行停下,这时我们按F8,单步执行下来,执行到00401594    |.    8D5424 10        LEA EDX,DWORD PTR SS:[ESP 10]这一行代码的时候我们会看到EAX寄存器中存放的是我们输入的用户名的地址,下面这段代码则是将我们输入的用户名存入EDX所指向的栈区,
00401598    |> /8A08            /MOV CL,BYTE PTR DS:[EAX]
0040159A    |. |40                |INC EAX
0040159B    |. |880A            |MOV BYTE PTR DS:[EDX],CL
0040159D    |. |42                |INC EDX
0040159E    |. |84C9            |TEST CL,CL
004015A0    |.^\75 F6            \JNZ SHORT CRE
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值