用ollddbg 寻找注册码的教程
作者:夜袭来
qq:20517896
email:loop_jspone@yahoo.com.cn
练习程序 ke_crackme2.exe (由风飘雪提供)
1.先用 fi.exe 侦测壳
2.用 upxshell 脱壳
3.用olludbg.exe 打开已经脱壳的文件
4.点 f9 运行程序之后,右键点击 搜索--> 字符参考,
找到 00401345 |. 68 b8344000 push key-crac.004034b8 ; |text = " good
job, i wish you the very best" ,双击来到主窗口:
向上找,找到关键跳转 :
00401309 |> 8b15 38304000 /mov edx,dword ptr ds:[403038]
0040130f |. 8a90 37304000 |mov dl,byte ptr ds:[eax+403037]
00401315 |. 81e2 ff000000 |and edx,0ff
0040131b |. 8bda |mov ebx,edx
0040131d |. 0fafda |imul ebx,edx
00401320 |. 03f3 |add esi,ebx
00401322 |. 8bda |mov ebx,edx
00401324 |. d1fb |sar ebx,1
00401326 |. 03f3 |add esi,ebx
00401328 |. 2bf2 |sub esi,edx
0040132a |. 40 |inc eax
0040132b |. 49 |dec ecx
0040132c |.^75 db \jnz short key-crac.00401309
0040132e |. 56 push esi
0040132f |. 68 38314000 push key-crac.00403138
00401334 |. e8 4a000000 call key-crac.00401383
00401339 |. 5e pop esi
0040133a |. 3bc6 cmp eax,esi ** 关键比较,可知真正数据必定在其中了,在此处
按 f2 下断点。
0040133c |. 75 15 jnz short key-crac.00401353 ** 关键跳转
0040133e |. 6a 00 push 0 ; /style =
mb_ok|mb_applmodal
00401340 |. 68 62344000 push key-crac.00403462 ; |title = "key/crackme
#2 "
00401345 |. 68 b8344000 push key-crac.004034b8 ; |text = " good job, i
wish you the very best"
0040134a |. 6a 00 push 0 ; |howner = null
0040134c |. e8 9d000000 call <jmp.&user32.messageboxa> ; \messageboxa
5.随便填写注册信息提交后,被中断于 0040133a ,此时 可以看到主窗口下面,显示了两条信息
esi=00035beb
eax=0001e0f3
点右键 修改寄存 查看 esi的16进制:00035beb ,10进制有符号:220139 ,此为真正的注册码,同样查
看eax ,里面就是刚才乱填写的假注册码。
6.得到注册码,第一个阶段完毕。
7.由上面的信息可写出注册机:
打开 keymake.exe, 按f8,进行注册机设置,点浏览找到要破解程序key-crackme2.exe,添加中断信
息(位于0040133c |. 75 15 jnz short key-crac.00401353 处):
中断地址:0040133a
中断次数:1
第一字节:3b
指令长度:2
右边选择:寄存器方式: esi:十进制 生成注册机,与破解程序放在一个目录下即可。
8.本文完毕