压缩壳压缩代码后 用OD载入后,我们查字符串 一般是查不到什么的,但是等壳解压缩完成后我们可以查找到很多有用的信息,我们找压缩壳的OEP难找的时候,只要在我们认为是OEP的时候 查找下字符串 看出现的注释够不够多 就知道OEP有没有过了,如果过了,就重新来过再找,不过记住上次的地址 下次在快到的时候再用同样的方法 收缩 OEP地址范围 在不久的将来OEP就会被你发现 ,然后就是DUMP修复。这样的方法我是屡试屡成。
一般在看到大的跳转的时候就用上面这种方法找OEP会更快点的
例如下面;用OD载入一个用ASPACK2.12加壳的软件
暂停地方
00456001 > 60 PUSHAD
00456002 E8 03000000 CALL wujiAge.0045600A
00456007 - E9 EB045D45 JMP 45A264F7
0045600C 55 PUSH EBP
0045600D C3 RETN
0045600E E8 01000000 CALL wujiAge.00456014
00456013 EB 5D JMP SHORT wujiAge.00456072
00456015 BB EDFFFFFF MOV EBX,-13
0045601A 03DD ADD EBX,EBP
0045601C 81EB 00600500 SUB EBX,56000
00456022 83BD 22040000 0>CMP DWORD PTR SS:[EBP+422],0
00456029 899D 22040000 MOV DWORD PTR SS:[EBP+422],EBX
0045602F 0F85 65030000 JNZ wujiAge.0045639A
00456035 8D85 2E040000 LEA EAX,DWORD PTR SS:[EBP+42E]
0045603B 50 PUSH EAX
0045603C FF95 4D0F0000 CALL DWORD PTR SS:[EBP+F4D]
00456042 8985 26040000 MOV DWORD PTR SS:[EBP+426],EAX
00456048 8BF8 MOV EDI,EAX
0045604A 8D5D 5E LEA EBX,DWORD PTR SS:[EBP+5E]
查找字符串
超级字串参考+ , 条目 0
地址=00456001
反汇编=PUSHAD
文本字串=(初始 cpu 选择)
没有其它任何内容
我们按F7一步步走
到了0045600E E8 01000000 CALL wujiAge.00456014这句 就可以按F8,如果不过 程序会直接运行的
注意 用那些高手的说法尽量不要回跳,走到
00456395 ^\E9 EBFEFFFF JMP wujiAge.00456285
0045639A B8 32890100 MOV EAX,18932
0045639F 50 PUSH EAX
004563A0 0385 22040000 ADD EAX,DWORD PTR SS:[EBP+422]
004563A6 59 POP ECX
004563A7 0BC9 OR ECX,ECX
004563A9 8985 A8030000 MOV DWORD PTR SS:[EBP+3A8],EAX
004563AF 61 POPAD
004563B0 75 08 JNZ SHORT wujiAge.004563BA
004563B2 B8 01000000 MOV EAX,1
004563B7 C2 0C00 RETN 0C
004563BA 68 32894100 PUSH wujiAge.00418932
004563BF C3 RETN
查询字符 仍然没什么东西
然后再F8 走到004563BA 68 32894100 PUSH wujiAge.00418932
004563BF C3 RETN
返回,是个很大的返回跳转我们F7 到了
00418932 6A 60 PUSH60 ;(初始 cpu 选择)
00418934 68 10DA4300 PUSH wujiAge.0043DA10
00418939 E8 EA0C0000 CALL wujiAge.00419628
0041893E BF 94000000 MOV EDI,94
00418943 8BC7 MOV EAX,EDI
00418945 E8 36FDFFFF CALL wujiAge.00418680
0041894A 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
0041894D 8BF4 MOV ESI,ESP
0041894F 893E MOV DWORD PTR DS:[ESI],EDI
00418951 56 PUSH ESI
00418952 FF15 88924300 CALL DWORD PTR DS:[439288] ; kernel32.GetVersionExA
00418958 8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10]
0041895B 890D F0C44400 MOV DWORD PTR DS:[44C4F0],ECX
00418961 8B46 04 MOV EAX,DWORD PTR DS:[ESI+4]
00418964 A3 FCC44400 MOV DWORD PTR DS:[44C4FC],EAX
00418969 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8]
0041896C 8915 00C54400 MOV DWORD PTR DS:[44C500],EDX
00418972 8B76 0C MOV ESI,DWORD PTR DS:[ESI+C]
到了
00418932 6A 60 PUSH60
这句 看很多程序入口的样子
查找字符串
00407348 PUSH wujiAge.0043A310 heroskin.dll
00407478 PUSH wujiAge.0043A364 sjl_client
004074B3 PUSH wujiAge.0043A364 sjl_client
004074CE PUSH wujiAge.0043A2A8 英雄年代还在运行,关闭本程序会导致游戏退出,是否关闭本程序?
00407563 PUSH wujiAge.0043A3B0 %s %x.%x%x.%x%xgeteventstate %s:%d
004076C3 PUSH wujiAge.0043A18C \
00407779 PUSH wujiAge.0043A3C0 geteventstate %s:%d
00407DFD PUSH wujiAge.0043A43C m_hangstarted
00407E1D PUSH wujiAge.0043A42C m_gameinited
00407E38 PUSH wujiAge.0043A41C m_userbekicked
00407E54 PUSH wujiAge.0043A404 m_gameresartinsession
00407E70 PUSH wujiAge.0043A3F4 m_gamecrashed
00407E8C PUSH wujiAge.0043A3E4 m_needrestart
00407EAE PUSH wujiAge.0043A3E0 88
00407F76 PUSH wujiAge.0043A364 sjl_client
00407F90 PUSH wujiAge.0043A454 in.log
0040800D PUSH wujiAge.0043A44C out.login.log
004086AB PUSH wujiAge.0043A4DC 显示主窗口
004086C8 PUSH wujiAge.0043A4D4 退出
00408733 PUSH wujiAge.0043A364 sjl_client
00408A1D PUSH wujiAge.0043A340 66.36.243.164
00408D62 PUSH wujiAge.0043A6A0 unlimitedhero
00408D73 PUSH wujiAge.0043A690 herobillforrealunlimitedhero
0040CD35 PUSH wujiAge.0043A6B8 61.145
0040CFEE MOV EAX,wujiAge.0043B0B0 鸠c腊cx{d
0040D82B PUSH wujiAge.0043BC20 user32
0040D84B PUSH wujiAge.0043BC0C getsystemmetrics
0040D85C PUSH wujiAge.0043BBF8 monitorfromwindow
0040D86D PUSH wujiAge.0043BBE8 monitorfromrectmonitorfromwindow
0040D87E PUSH wujiAge.0043BBD4 monitorfrompoint
0040D88F PUSH wujiAge.0043BBC0 enumdisplaymonitorsmonitorfrompoint
0040D8A0 PUSH wujiAge.0043BBB0 getmonitorinfoaenumdisplaymonitorsmonitorfrompoint
0040D8B1 PUSH wujiAge.0043BB9C enumdisplaydevicesagetmonitorinfoaenumdisplaymonitorsmonitorfrompoint
00417A86 MOV DWORD PTR DS:[EAX],wujiAge.0043D7D0 s{a*{aunknown exception
00417A95 MOV DWORD PTR DS:[ESI],wujiAge.0043D7D0 s{a*{aunknown exception
00417AD2 MOV DWORD PTR DS:[ESI],wujiAge.0043D7D0 s{a*{aunknown exception
00417B18 MOV DWORD PTR DS:[ECX],wujiAge.0043D7D0 s{a*{aunknown exception
00417B31 MOV EAX,wujiAge.0043D7D8 unknown exception
00418934 PUSH wujiAge.0043DA10 (初始 cpu 选择)
还有很多 这里应该就是OEP了 DUMP下来 用Import REC1.6 修复下能运行^_^
我是个菜鸟 这种方法也只适合菜鸟,高手莫见笑
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)