一个简单的CM
本帖最后由 称霸梦 于 2016-4-13 20:24 编辑前言: 第一次写这种可能写的有点乱= =
来到吾爱已经差不多两年了,因为自己有工作只能下班这点时间学学自己爱好, 这个帖子没什么技术含量请各位大大高抬贵手= = 下面进入正题!
先打开看看运行界面,
打开od 载入搜索字符串就能看到Sorry , The serial is incorect ! 的字样双击来到反汇编窗口,
来到
0042FA52|.E8 D96EFDFF call Acid_bur.00406930
0042FA57|.83F8 04 cmp eax,0x4
0042FA5A|.7D 1D jge short Acid_bur.0042FA79
0042FA5C|.6A 00 push 0x0
0042FA5E|.B9 74FB4200 mov ecx,Acid_bur.0042FB74 ;Try Again!
0042FA63|.BA 80FB4200 mov edx,Acid_bur.0042FB80 ;Sorry , The serial is incorect !
0042FA68|.A1 480A4300 mov eax,dword ptr ds:
0042FA6D|.8B00 mov eax,dword ptr ds:
很明显看到有cmp 比较指令 但是 下面这一条指令并不是关键跳!!!
再往下拉就能看到
0042FAFE|.E8 F93EFDFF call Acid_bur.004039FC ;对比call
0042FB03|.75 1A jnz short Acid_bur.0042FB1F ;爆破nop
0042FB05|.6A 00 push 0x0
0042FB07|.B9 CCFB4200 mov ecx,Acid_bur.0042FBCC ;Congratz !!
0042FB0C|.BA D8FB4200 mov edx,Acid_bur.0042FBD8 ;Good job dude =)
0042FB11|.A1 480A4300 mov eax,dword ptr ds:
0042FB16|.8B00 mov eax,dword ptr ds:
0042FB18|.E8 53A6FFFF call Acid_bur.0042A170
0042FB1D|.EB 18 jmp short Acid_bur.0042FB37
0042FB1F|>6A 00 push 0x0
0042FB21|.B9 74FB4200 mov ecx,Acid_bur.0042FB74 ;ASCII 54,"Try Again!"
0042FB26|.BA 80FB4200 mov edx,Acid_bur.0042FB80 ;ASCII 53,"Sorry , The serial is incorect !"
0042FB2B|.A1 480A4300 mov eax,dword ptr ds:
0042FB30|.8B00 mov eax,dword ptr ds:
0042FB32|.E8 39A6FFFF call Acid_bur.0042A170
可以明显看到“Good job dude =)”的字符串 我们知道 0042FB03|.75 1A jnz short Acid_bur.0042FB1F这一条只要不要让他跳 就能完成爆破!
但是这个并不是我想要的。我要的是什么呢每次输错了之后 弹出来的消息框不是 Sorry , The serial is incorect ! 字符串 而是我们的注册码!接下来来完成我伟大的目标=。=哈哈哈哈哈
我们往上拉来到 0042F998 下断
当我们 输入好用户名 注册码的时候。点击Check it baby!我输入了用户名称霸梦 注册码为52pojie = =我懒了点 看下前面三张图就知道了。。
程序断下, 一路f8
来到当走过 0042FAE5这个call之后 我们可以发现堆栈里边多了一个不认识的字符串= =
这个是不是注册码我们还不知道 在F8单步走
走到这里之后 寄存器里分别保存了 eax 真正的注册码 跟我们输入的假注册码 52pojie
到这里之后基本 我们已经知道真正的注册码 那来开始实现我们的功能吧 ,
走过之后我们知道这里就是弹出错误信息框的”罪魁祸首“-。-
堆栈里还保存着注册码的内存地址 01D8A624
在数据窗口 Ctrl+G 输入 01D8A624正是保存着真正的注册码的地址
0042FB1F|> \6A 00 push 0x0
0042FB21|.B9 74FB4200 mov ecx,Acid_bur.0042FB74 ;ASCII 54,"ry Again!"
0042FB26|.BA 80FB4200 mov edx,Acid_bur.0042FB80 ;这里改为mov edx,01D8A624
0042FB2B|.A1 480A4300 mov eax,dword ptr ds:
0042FB30|.8B00 mov eax,dword ptr ds:
0042FB32|.E8 39A6FFFF call Acid_bur.0042A170
只要把0042FB26 mov edx,0042FB80 这里改为mov edx,01D8A624
就大功告成啦。
但是标题还有个缺陷 在数据窗口往下拉 找到一处0000.......0000的空白处
再把0042FB21 mov edx,0042FB74 这里改为mov edx,01D8AA94
修改完之后的代码
运行截图:
沙发!! 值得学习{:1_921:}
页:
[1]