//下面也是被吃掉的OEP变形的代码
006EE848 61 POPAD 006EE849 FF15 115F6D00 CALL [6D5F11] ; ACProtec.0046262C 006EE84F FF35 8C2C4F00 PUSH DWORD PTR [4F2C8C] ; ACProtec.004F5D0C 006EE855 8B0C24 MOV ECX, [ESP] ; ntdll.77F944A8 006EE858 8F05 ED5E6D00 POP DWORD PTR [6D5EED] ; ntdll.77F944A8 006EE85E A1 982F4F00 MOV EAX, [4F2F98] 006EE863 8B00 MOV EAX, [EAX] 006EE865 890D E95E6D00 MOV [6D5EE9], ECX 006EE86B FF35 E95E6D00 PUSH DWORD PTR [6D5EE9] ; ntdll.77F57D70 006EE871 50 PUSH EAX 006EE872 B8 0CFB4700 MOV EAX, 47FB0C 006EE877 8BC8 MOV ECX, EAX 006EE879 58 POP EAX ; ntdll.77F944A8 006EE87A 8B11 MOV EDX, [ECX] 006EE87C 59 POP ECX ; ntdll.77F944A8 006EE87D 51 PUSH ECX 006EE87E B9 2C264600 MOV ECX, 46262C 006EE883 890D 0D5F6D00 MOV [6D5F0D], ECX 006EE889 59 POP ECX ; ntdll.77F944A8 006EE88A FF15 0D5F6D00 CALL [6D5F0D] 006EE890 A1 982F4F00 MOV EAX, [4F2F98] 006EE895 8B00 MOV EAX, [EAX] 006EE897 90 NOP 006EE898 90 NOP 006EE899 60 PUSHAD
00403D6F AB STOS DWORD PTR ES:[EDI] 00403D70 E8 99F7D4FF CALL 0015350E //原来是这个CALL进入之后出错的 00403D75 51 PUSH ECX
006D6665 90 NOP 006D6666 8B448C 04 MOV EAX, [ESP+ECX*4+4] 006D666A 89048C MOV [ESP+ECX*4], EAX ; dumped.006D5922 006D666D 41 INC ECX 006D666E ^ EB ED JMP SHORT 006D665D ; dumped.006D665D 006D6670 893C8C MOV [ESP+ECX*4], EDI 006D6673 60 PUSHAD
//知道了Key=006DA149就简单了,退出. //然后重新脱一次.在数据解码的时候就把这个正确的Key=006DA149写进去. //当然,也可以把 006D660C 的那个条件跳转改成绝对跳转. //重新脱一次之后,可以运行了.
============================================================== ************************************************************** 后记:
这个程序的破解版我也弄出来了.不过是在地址006E7498的时候就Dump出来了.
然后把下面的指令 006E5E6E 66:81BD 17DB400>CMP WORD PTR [EBP+40DB17], 0FF00
改成了: 006E5E6E 66:C785 17DB4000 4F4B MOV WORD PTR [EBP+40DB17], 4B4F
然后保存起来就算是解除了加壳之后弹出的"未注册"框!
------------------------------------------------------------------ 【总 结】:
以上只是我这个懒人的方法,每个人都有自己的方法.
这个文章只能做一个参看.你脱的时候可别完全学我啊.不然出错了我也不知道怎么办.
我自己感觉有很多地方写得很罗嗦,而且表达得也不好,如果有什么地方写错了,请大侠多多指正.
最后在这里感谢你花了那么多时间看这篇文章!
辉仔Yock 2004.04.11 上一页 1 2 3 4 |