能力值:
( LV2,RANK:10 )
|
-
-
2 楼
是不是有自校验
|
能力值:
( LV6,RANK:80 )
|
-
-
3 楼
你写的那里经过重定位后,指令就变了啊。
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
坐等大牛解答
|
能力值:
( LV6,RANK:80 )
|
-
-
5 楼
[QUOTE=sydyzjl;1117582]我想将一个crackme直接改成注册机,改后的程序却无法打开。
经分析,程序根据注册名生成注册码,存在[ebp-1C],并由关键跳0040CB78控制程序走向,并在0040CBAC的Call处弹出注册正确窗口。
73462
我想将程序直接改成注册机,需将0040CB78...[/QUOTE]
我已经告诉你原因了,这个程序是易语言写的,krnln.fnr会对你修改的地方进行重定位,导致代码已经不是原来的代码了。
所以出错了。最简单的解决方法是从重定位表中清除这几个地址的信息。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
重定位的问题
|
能力值:
( LV6,RANK:80 )
|
-
-
7 楼
好了,搞定了。
|
能力值:
( LV6,RANK:80 )
|
-
-
8 楼
在0040CBAC的位置进行一个jmp hook.
0040CB7E 68 04000080 push 0x80000004
0040CB83 6A 00 push 0x0
0040CB85 68 DFC04000 push crackme1.0040C0DF
0040CB8A 68 01030080 push 0x80000301
0040CB8F 6A 00 push 0x0
0040CB91 68 00000000 push 0x0
0040CB96 68 04000080 push 0x80000004
0040CB9B 6A 00 push 0x0
0040CB9D 68 E6C04000 push crackme1.0040C0E6
0040CBA2 68 03000000 push 0x3
0040CBA7 BB 00030000 mov ebx,0x300
[COLOR="Red"]0040CBAC E9 16010000 jmp crackme1.0040CCC7[/COLOR] //inline hook
在0040CCC7处写入如下代码。最完美的方案也稍微难一点的方法是直接从重定位表里剔除关于这个地址的重定位信息,由于时间关系也不搞了,可以自己写一个重定位分析软件,删除指定地址重定位,不难吧。
0040CCC7 60 pushad
0040CCC8 8B4D E4 mov ecx,dword ptr ss:[ebp-0x1C]
0040CCCB 894D A8 [COLOR="Red"]mov dword ptr ss:[ebp-0x58],ecx[/COLOR] //把注册码的指针替换到堆栈里
0040CCCE 61 popad
0040CCCF E8 D0FFFFFF call crackme1.0040CCA4
0040CCD4 ^ E9 D8FEFFFF jmp crackme1.0040CBB1 //跳回去add esp,0x300
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
多谢解答!!
|
|
|