软件名称:执业医师考试宝典(公卫助理)4.0注册文件
壳的名称:ASPack 2.12 -> Alexey Solodovnikov [覆盖]
测试环境:winxp sp2,Peid,Ollydbg,LordPE v1.4,ImportREC。
(一)1.打开OD,F3打开ZY_GW_ZL4.0_WD21L4P9ERegFile.exe。
看到
005B5001 > 60 PUSHAD
005B5002 E8 03000000 CALL ZY_GW_ZL.005B500A
005B5007 - E9 EB045D45 JMP 45B854F7
005B500C 55 PUSH EBP
005B500D C3 RETN
005B500E E8 01000000 CALL ZY_GW_ZL.005B5014
005B5013 EB 5D JMP SHORT ZY_GW_ZL.005B5072
005B5015 BB EDFFFFFF MOV EBX,-13
005B501A 03DD ADD EBX,EBP
005B501C 81EB 00501B00 SUB EBX,1B5000
005B5022 83BD 22040000 0>CMP DWORD PTR SS:[EBP+422],0
005B5029 899D 22040000 MOV DWORD PTR SS:[EBP+422],EBX
005B502F 0F85 65030000 JNZ ZY_GW_ZL.005B539A
005B5035 8D85 2E040000 LEA EAX,DWORD PTR SS:[EBP+42E]
005B503B 50 PUSH EAX
005B503C FF95 4D0F0000 CALL DWORD PTR SS:[EBP+F4D]
005B5042 8985 26040000 MOV DWORD PTR SS:[EBP+426],EAX
005B5048 8BF8 MOV EDI,EAX
005B504A 8D5D 5E LEA EBX,DWORD PTR SS:[EBP+5E]
005B504D 53 PUSH EBX
005B504E 50 PUSH EAX
005B504F FF95 490F0000 CALL DWORD PTR SS:[EBP+F49]
005B5055 8985 4D050000 MOV DWORD PTR SS:[EBP+54D],EAX
005B505B 8D5D 6B LEA EBX,DWORD PTR SS:[EBP+6B]
005B505E 53 PUSH EBX
005B505F 57 PUSH EDI
005B5060 FF95 490F0000 CALL DWORD PTR SS:[EBP+F49]
005B5066 8985 51050000 MOV DWORD PTR SS:[EBP+551],EAX
005B506C 8D45 77 LEA EAX,DWORD PTR SS:[EBP+77]
005B506F FFE0 JMP EAX
005B5071 56 PUSH ESI
005B5072 6972 74 75616C4>IMUL ESI,DWORD PTR DS:[EDX+74],416C6175
005B5079 6C INS BYTE PTR ES:[EDI],DX ; I/O 命令
005B507A 6C INS BYTE PTR ES:[EDI],DX ; I/O 命令
005B507B 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O 命令
005B507C 6300 ARPL WORD PTR DS:[EAX],AX
005B507E 56 PUSH ESI
005B507F 6972 74 75616C4>IMUL ESI,DWORD PTR DS:[EDX+74],466C6175
2.ALT+O弹出调试选项,选异常选项卡,把所有的全部√上,点确定。
3.CTRL+F2重新加载ZY_GW_ZL4.0_WD21L4P9ERegFile.exe
4.ALT+M查看内存,找到
内存映射, 条目 42
地址=005A7000
大小=0000E000 (57344.)
属主=ZY_GW_ZL 00400000
区段=.rsrc
包含=资源
类型=Imag 01001002
访问=R
初始访问=RWE
按F2访问上设置断点,F9运行可看到。
005B575F 8A18 MOV BL,BYTE PTR DS:[EAX]
005B5761 40 INC EAX
005B5762 885C24 0C MOV BYTE PTR SS:[ESP+C],BL
005B5766 8902 MOV DWORD PTR DS:[EDX],EAX
005B5768 8B42 08 MOV EAX,DWORD PTR DS:[EDX+8]
005B576B 8B7C24 0C MOV EDI,DWORD PTR SS:[ESP+C]
005B576F C1E0 08 SHL EAX,8
005B5772 81E7 FF000000 AND EDI,0FF
005B5778 0BC7 OR EAX,EDI
005B577A 8B7A 04 MOV EDI,DWORD PTR DS:[EDX+4]
005B577D 03FE ADD EDI,ESI
005B577F 8942 08 MOV DWORD PTR DS:[EDX+8],EAX
005B5782 8BC7 MOV EAX,EDI
005B5784 897A 04 MOV DWORD PTR DS:[EDX+4],EDI
005B5787 3BC1 CMP EAX,ECX
005B5789 ^ 73 D2 JNB SHORT ZY_GW_ZL.005B575D
005B578B 5B POP EBX
005B578C 8B72 04 MOV ESI,DWORD PTR DS:[EDX+4]
005B578F 8B42 08 MOV EAX,DWORD PTR DS:[EDX+8]
005B5792 8B7C24 10 MOV EDI,DWORD PTR SS:[ESP+10]
005B5796 2BCE SUB ECX,ESI
005B5798 D3E8 SHR EAX,CL
005B579A B9 18000000 MOV ECX,18
005B579F 2BCF SUB ECX,EDI
005B57A1 25 FFFFFF00 AND EAX,0FFFFFF
005B57A6 D3E8 SHR EAX,CL
005B57A8 03F7 ADD ESI,EDI
005B57AA 5F POP EDI
005B57AB 8972 04 MOV DWORD PTR DS:[EDX+4],ESI
005B57AE 5E POP ESI
005B57AF 59 POP ECX
005B57B0 C2 0400 RETN 4
5.再次按ALT+M查看内存,找到内存映射, 条目 35
地址=00401000
大小=00169000 (1478656.)
属主=ZY_GW_ZL 00400000
区段=CODE
包含=代码
类型=Imag 01001002
访问=R
初始访问=RWE
按F2访问上设置断点,F9运行可看到
0056978C 55 PUSH EBP
0056978D 8BEC MOV EBP,ESP
0056978F 81C4 E8FEFFFF ADD ESP,-118
00569795 B8 5C945600 MOV EAX,ZY_GW_ZL.0056945C ; e
0056979A E8 6DD0E9FF CALL ZY_GW_ZL.0040680C
0056979F 33C0 XOR EAX,EAX
005697A1 55 PUSH EBP
005697A2 68 26995600 PUSH ZY_GW_ZL.00569926
005697A7 64:FF30 PUSH DWORD PTR FS:[EAX]
005697AA 64:8920 MOV DWORD PTR FS:[EAX],ESP
005697AD 68 80000000 PUSH 80
005697B2 68 E0B85800 PUSH ZY_GW_ZL.0058B8E0 ; c:\windows\system32
005697B7 E8 B8D3E9FF CALL ZY_GW_ZL.00406B74 ; JMP 到 kernel32.GetSystemDirectoryA
005697BC 8D85 6CFFFFFF LEA EAX,DWORD PTR SS:[EBP-94]
005697C2 BA E0B85800 MOV EDX,ZY_GW_ZL.0058B8E0 ; c:\windows\system32
005697C7 B9 81000000 MOV ECX,81
005697CC E8 2F99E9FF CALL ZY_GW_ZL.00403100
005697D1 8D95 6CFFFFFF LEA EDX,DWORD PTR SS:[EBP-94]
005697D7 8D85 E8FEFFFF LEA EAX,DWORD PTR SS:[EBP-118]
005697DD E8 5296E9FF CALL ZY_GW_ZL.00402E34
005697E2 BA 34995600 MOV EDX,ZY_GW_ZL.00569934
005697E7 8D85 E8FEFFFF LEA EAX,DWORD PTR SS:[EBP-118]
005697ED B1 82 MOV CL,82
005697EF E8 1096E9FF CALL ZY_GW_ZL.00402E04
005697F4 8D95 E8FEFFFF LEA EDX,DWORD PTR SS:[EBP-118]
005697FA B8 DCB85800 MOV EAX,ZY_GW_ZL.0058B8DC
005697FF E8 9CAEE9FF CALL ZY_GW_ZL.004046A0
00569804 B8 D8B85800 MOV EAX,ZY_GW_ZL.0058B8D8
00569809 B9 40995600 MOV ECX,ZY_GW_ZL.00569940 ; diskid32.dll
0056980E 8B15 DCB85800 MOV EDX,DWORD PTR DS:[58B8DC]
00569814 E8 4BAFE9FF CALL ZY_GW_ZL.00404764
00569819 A1 D8B85800 MOV EAX,DWORD PTR DS:[58B8D8]
0056981E E8 D1FCE9FF CALL ZY_GW_ZL.004094F4
00569823 84C0 TEST AL,AL
00569825 75 16 JNZ SHORT ZY_GW_ZL.0056983D
00569827 B9 58995600 MOV ECX,ZY_GW_ZL.00569958 ; diskid32.dll文件找不到,请重新安装《考试宝典》
0056982C B2 01 MOV DL,1
0056982E A1 0C7C4000 MOV EAX,DWORD PTR DS:[407C0C]
6.鼠标右键选择用OllyDump脱壳调试进程,
看到入口点地址:1B5001->修正为:16978C,点脱壳,我起unpacked.exe,退出Ollydbg程序。
7.用Peid查壳Borland Delphi 6.0 - 7.0,运行unpacked.exe,发现不能运行提示List index out of bounds (0).
(二)1.打开运行原文件ZY_GW_ZL4.0_WD21L4P9ERegFile.exe。
2.打开LordPE.EXE,找到ZY_GW_ZL4.0_WD21L4P9ERegFile.exe进程文件,鼠标右键选完整脱壳。
3.保存dumped.exe,退出LordPE.EXE。
(三)1.打开RecImport.exe,找到ZY_GW_ZL4.0_WD21L4P9ERegFile.exe进程文件。
发现OEP:001B5001修改为16978C,点自动搜索IAT,点获取输入表,点修复抓取文件,打开dumped.exe,提示文件修复完成,退出RecImport.exe,ZY_GW_ZL4.0_WD21L4P9ERegFile.exe。我们看到多了一个dumped_.exe。
2.打开dumped_.exe文件
提示dumped_.exe遇到问题需要关闭。之后就运行不了,只有干掉dumped_.exe进程了。
还请各位高手指点一二。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课