呵呵,周末有空又拿出OD来乱玩一通,发现了一个很好玩的东西。轻点鼠标
就可以实现注册了,究竟是怎么做的呢?
首先,我们用OD随便载入一个程序,这里我用的是一个CRACKME。
好,废话不说直接用OD打开。因为可能是网通线路的问题我这边什么图片都无法显示,所以就不贴图啦兄弟们见谅啊
打开之后来到了这里:
00401000 > 6A 00 push 0 ; (initial cpu selection)
00401002 E8 23040000 call <jmp.&kernel32.GetModuleHandleA>
00401007 A3 F0344000 mov [4034F0], eax
0040100C 50 push eax
0040100D E8 13000000 call 00401025
00401012 6A 00 push 0
00401014 E8 0B040000 call <jmp.&kernel32.ExitProcess>
00401019 6A 00 push 0
0040101B E8 0A040000 call <jmp.&kernel32.GetModuleHandleA>
00401020 A3 F0344000 mov [4034F0], eax
一大片代码,看都看不懂。现在打开字符串参考,找到下面这个提示:
Ultra String Reference, 条目 9
Address=00401345
Disassembly=push 004034B8
Text String= good job, i wish you the very best
双击一下,就来到了对应的代码处。恩,很快就来到了这里:
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ; key/crackme #2
00401345 |68 B8344000 push 004034B8 ; good job, i wish you the very best
看到第一句代码是一个跳转,跳到哪里去了?我们到00401353这里看看
00401353 6A 00 push 0
00401355 68 62344000 push 00403462 ; key/crackme #2
0040135A 68 86344000 push 00403486 ; you have enter a wrong serial, please try again
0040135F 6A 00 push 0
呵呵,搞了半天原来是错误提示。看来没什么特别的,不过我们关心的也不是这里。
回到第一段代码上来:
0040133C /75 15 jnz short 00401353
0040133E |6A 00 push 0
00401340 |68 62344000 push 00403462 ; key/crackme #2
00401345 |68 B8344000 push 004034B8 ; good job, i wish you the very best
注意刚才提到的那个跳转,嗯,就是下面这个
0040133C /75 15 jnz short 00401353
我们在这个跳转上设置一个断点,不会设置断点的就跟帖问,在这里就不多说啦
好,设置完了断点,重新载入一下程序。任意输入一组注册名注册码什么123或者321的随大家便
单击确定后,程序肯定就被中断了。
关键的时刻到来了,现在我们关心一下旁边的寄存器窗口,什么。。。那个是寄存器窗口?
嗯,就是右上角的那个窗口,把你面的内容给大家抠出来:
EAX 00000079
ECX 00000000
EDX 00403139 ASCII "21"
EBX 00000019
ESP 0012FC00
EBP 0012FC00
ESI 000025E6
EDI 0012FC7C
EIP 0040133C 123.0040133C
C 1 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 0 DS 0023 32位 0(FFFFFFFF)
S 1 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000287 (NO,B,NE,BE,S,PE,L,LE)
MM0 0.0, 0.0
MM1 0.0, 0.0
MM2 0.0, 0.0
MM3 0.0, 0.0
MM4 0.0, 0.0
MM5 0.0, 0.0
MM6 0.0, 0.0
MM7 0.0, 0.0
上边的什么EAX,EBX之类的我们不要管他们,后面的也不管就注意中间的。我们注意这一行
Z 0 DS 0023 32位 0(FFFFFFFF)
在OD 中应该是以红色显示出来的,嗯。最关键的地方到了!
现在单击一下字母Z后面的那个0选中之后再单击鼠标右键,选择“置1”
呵呵,现在再按一下F9看看,是不是弹出了注册成功的提示呢?
轻点鼠标,就直接注册成功了
呵呵,B组的兄弟们都学到了吗?
什么还有A组呢?对了,A组的兄弟们人在哪里呢?不要光学我们的成果呀
呵呵
[课程]Linux pwn 探索篇!