文件在这里:
http://www.namipan.com/d/040915wgzz.rar/3888b5e02dc54f33fe2de60676230d60c52936ad32933b00
我的步骤:用PEid0.95查壳 :为UltraProtect 1.x -> RISCO Software Inc.
用OD载入,忽略除内存访问外的其它异常
00440000 > 60 PUSHAD ;停在这里
00440001 41 INC ECX
00440002 0F8C 01000000 JL 外挂制作.00440009
00440008 FC CLD
00440009 FC CLD
0044000A F9 STC
0044000B F9 STC
0044000C 85DD TEST EBP,EBX
0044000E BB 4B004400 MOV EBX,外挂制作.0044004B
00440013 68 F50C8389 PUSH 89830CF5
00440018 66:C1CD D7 ROR BP,0D7 ; 移位常量超出 1..31 的范围
0044001C 59 POP ECX
.......
然后按F9运行
......
0044E829 CD 01 INT 1 ;停在这里
0044E82B 40 INC EAX
0044E82C 40 INC EAX
0044E82D 0BC0 OR EAX,EAX
0044E82F 75 05 JNZ SHORT 外挂制作.0044E836
0044E831 90 NOP
0044E832 90 NOP
0044E833 90 NOP
0044E834 90 NOP
0044E835 61 POPAD
0044E836 33C0 XOR EAX,EAX
0044E838 64:8F00 POP DWORD PTR FS:[EAX]
0044E83B 58 POP EAX
然后在堆栈中找SE句柄
0012FF70 0012FFE0 指向下一个 SEH 记录的指针
0012FF74 0044E80D SE处理程序
0012FF78 74E895EF
0012FF7C D5F6BB56
0012FF80 0000003B
再在数据窗口跟随,接着下内存访问断点,按shift+F9
第一次停在
0044E80D 8B5C24 0C MOV EBX,DWORD PTR SS:[ESP+C] ;停在这里,按F2下断
0044E811 8383 B8000000 0>ADD DWORD PTR DS:[EBX+B8],2
0044E818 33C0 XOR EAX,EAX
再按shift+F9
0044E85D 8B048E MOV EAX,DWORD PTR DS:[ESI+ECX*4] ;停在这里,再按F2下断
0044E860 8B5C8E 04 MOV EBX,DWORD PTR DS:[ESI+ECX*4+4]
0044E864 2BC3 SUB EAX,EBX
0044E866 C1C8 02 ROR EAX,2
0044E869 2BC2 SUB EAX,EDX
0044E86B 81F2 679DF3AB XOR EDX,ABF39D67
0044E871 89048E MOV DWORD PTR DS:[ESI+ECX*4],EAX ;第三次按shift+F9停在这里,然后取消所有断点,包括内存访问断点
0044E874 49 DEC ECX
0044E875 ^ EB E1 JMP SHORT 外挂制作.0044E858
0044E877 61 POPAD
0044E878 61 POPAD
0044E879 C3 RETN ;光标点这里,按F4运行到此。
然后按Ctrl+T 设置条件 在命令是一个框里输入:Push ebp
接着跟踪进入,这时停在了
7C864B49 55 PUSH EBP ;停在这里
7C864B4A 8BEC MOV EBP,ESP
7C864B4C 83EC 0C SUB ESP,0C
7C864B4F 56 PUSH ESI
7C864B50 8B75 0C MOV ESI,DWORD PTR SS:[EBP+C]
----------------------------------------------------------------------------------------------------
但是有时前面步骤相同,却会停在
6600357C > 55 PUSH EBP ;停在这里
6600357D 8BEC MOV EBP,ESP
6600357F 6A FF PUSH -1
----------------------------------------------------------------------------------------------------
不知道上面那六个字节(五字节)是不是被偷的代码,请高手指点
我把那六个字节(五字节)当成被偷代码。接下来按Alt+M在401000处下断,再按F9运行,来到了
00401B2D E8 EEFFFFFF CALL 外挂制作.00401B20 ; JMP 到 MSVBVM60.ThunRTMain
00401B32 0000 ADD BYTE PTR DS:[EAX],AL
00401B34 0000 ADD BYTE PTR DS:[EAX],AL
00401B36 0000 ADD BYTE PTR DS:[EAX],AL
00401B38 3000 XOR BYTE PTR DS:[EAX],AL
将复制过来的那六个字节拷到了00401B2D之前,再在PUSH EBP处设为新的EIP,然后就在这个位置Dump出程序
————————————————————————————————————
不知道以上过程有没有做错?
————————————————————————————————————
接下来是用ImportREC1.6来修复,OEP地址为1B27
修复后的文件不能运行,双击后会弹出程序运行错误的框框
请教,这是为什么?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!