好友
阅读权限10
听众
最后登录1970-1-1
|
称霸梦
发表于 2016-4-13 20:22
本帖最后由 称霸梦 于 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:[0x430A48]
0042FA6D |. 8B00 mov eax,dword ptr ds:[eax]
很明显看到有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:[0x430A48]
0042FB16 |. 8B00 mov eax,dword ptr ds:[eax]
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:[0x430A48]
0042FB30 |. 8B00 mov eax,dword ptr ds:[eax]
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:[0x430A48]
0042FB30 |. 8B00 mov eax,dword ptr ds:[eax]
0042FB32 |. E8 39A6FFFF call Acid_bur.0042A170
只要把0042FB26 mov edx,0042FB80 这里改为mov edx,01D8A624
就大功告成啦。
但是标题还有个缺陷 在数据窗口往下拉 找到一处0000.......0000的空白处
再把0042FB21 mov edx,0042FB74 这里改为mov edx,01D8AA94
修改完之后的代码
运行截图:
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|