网站首页 二手房 > 综合生活 > 正文
想必现在有很多小伙伴对于脱壳破解方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于脱壳破解方面的知识分享给大家,希望大家会喜欢哦。
1、OD载入 隐藏OD 忽略所有异常
2、这个壳是穿山甲4.0的 软件官方说是双层加壳 这个我自己也不知道怎么看 全当是吧:)
3、研究一晚上发现下三个断点就可以直接找到OEP了!因为这个软件是双进程先要转换为单进程!
4、版权动归芝士新史回答网站或原要作者所产有
5、下断bp OpenMutexA SHIFT+F9
6、7C80EC1B > 8BFF MOV EDI,EDI ; ntdll.7C930738//断在这里
7、7C80EC1D 55 PUSH EBP
8、7C80EC1E 8BEC MOV EBP,ESP
9、7C80EC20 51 PUSH ECX
10、7C80EC21 51 PUSH ECX
11、7C80EC22 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
12、7C80EC26 56 PUSH ESI
13、7C80EC27 0F84 7A500300 JE kernel32.7C843CA7
14、此时堆栈
15、0012F798 00543DB8 /CALL 到 OpenMutexA 来自 游戏菜单.00543DB2
16、0012F79C 001F0001 |Access = 1F0001
17、0012F7A0 00000000 |Inheritable = FALSE
18、0012F7A4 0012FDD8 MutexName = "75C:A5ED094E6" //0012FDD8
19、CTRL+G 00401000 输入代码
20、60 9C 68 D8 FD 12 00 33 C0 50 50 E8 2F DB 40 7C 9D 61 E9 04 DC 40 7C
21、在复制的代码处 新建EIP SHIFT+F9 再次断下 F2取消断点 CTRL+G->00401000 撤消修改
22、这样双进程就转换为单进程了!
23、此时 ALT+M 打开内存映象 在第一个.RSRC上 F2下断点 SHIFT+F9
24、断在这里 不管他 再ALT+M 在00401000 F2下断点 SHIFT+F9
25、7C93280D 66:8B50 0C MOV DX,WORD PTR DS:[EAX+C] //
26、的和年多全提,展车类界专识。
27、7C932811 66:8955 B0 MOV WORD PTR SS:[EBP-50],DX
28、7C932815 8D70 10 LEA ESI,DWORD PTR DS:[EAX+10]
29、一应因条及接她区做处转达整,集记界太状。
30、7C932818 8975 90 MOV DWORD PTR SS:[EBP-70],ESI
31、7C93281B 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
32、7C93281E 66:F742 02 FFFF TEST WORD PTR DS:[EDX+2],0FFFF
33、7C932824 75 11 JNZ SHORT ntdll.7C932837
34、断在这里 现在就是要用F8慢慢跟了
35、00D8F68F 8B12 MOV EDX,DWORD PTR DS:[EDX]
36、00D8F691 8955 DC MOV DWORD PTR SS:[EBP-24],EDX
37、00D8F694 834D FC FF OR DWORD PTR SS:[EBP-4],FFFFFFFF
38、00D8F698 EB 11 JMP SHORT 00D8F6AB //跳
39、00D8F69A 6A 01 PUSH 1
40、00D8F69C 58 POP EAX
41、00D8F69D C3 RETN
42、00D8F69E 8B65 E8 MOV ESP,DWORD PTR SS:[EBP-18]
43、00D8F6A1 834D FC FF OR DWORD PTR SS:[EBP-4],FFFFFFFF
44、00D8F6A5 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8]
45、00D8F6A8 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
46、00D8F6AB A1 E400DA00 MOV EAX,DWORD PTR DS:[DA00E4]
47、00D8F6B0 3190 88000000 XOR DWORD PTR DS:[EAX+88],EDX
48、00D8F6B6 A1 E400DA00 MOV EAX,DWORD PTR DS:[DA00E4]
49、00D8F6BB 3190 88000000 XOR DWORD PTR DS:[EAX+88],EDX
50、00D8F6C1 A1 E400DA00 MOV EAX,DWORD PTR DS:[DA00E4]
51、00D8F6C6 8B88 90000000 MOV ECX,DWORD PTR DS:[EAX+90]
52、00D8F6CC 3348 2C XOR ECX,DWORD PTR DS:[EAX+2C]
53、00D8F6CF 3348 18 XOR ECX,DWORD PTR DS:[EAX+18]
54、00D8F6D2 030D FC00DA00 ADD ECX,DWORD PTR DS:[DA00FC] ; 游戏菜单.00400000
55、00D8F6D8 8B17 MOV EDX,DWORD PTR DS:[EDI]
56、00D8F6DA 85D2 TEST EDX,EDX
57、00D8F6DC 75 1B JNZ SHORT 00D8F6F9 //跳
58、00D8F6DE FF77 18 PUSH DWORD PTR DS:[EDI+18]
59、00D8F6E1 FF77 14 PUSH DWORD PTR DS:[EDI+14]
60、00D8F6E4 FF77 10 PUSH DWORD PTR DS:[EDI+10]
61、00D8F6E7 8B90 90000000 MOV EDX,DWORD PTR DS:[EAX+90]
62、00D8F6ED 3350 40 XOR EDX,DWORD PTR DS:[EAX+40]
63、00D8F6F0 3350 04 XOR EDX,DWORD PTR DS:[EAX+4]
64、00D8F6F9 83FA 01 CMP EDX,1 //跳到这里 再F8
65、00D8F6FC 75 1E JNZ SHORT 00D8F71C
66、00D8F6FE FF77 04 PUSH DWORD PTR DS:[EDI+4]
67、00D8F701 FF77 08 PUSH DWORD PTR DS:[EDI+8]
68、00D8F704 6A 00 PUSH 0
69、00D8F706 FF77 0C PUSH DWORD PTR DS:[EDI+C]
70、00D8F709 8B90 90000000 MOV EDX,DWORD PTR DS:[EAX+90]
71、00D8F70F 3350 40 XOR EDX,DWORD PTR DS:[EAX+40]
72、00D8F712 3350 04 XOR EDX,DWORD PTR DS:[EAX+4]
73、00D8F715 2BCA SUB ECX,EDX
74、00D8F717 FFD1 CALL ECX ; 游戏菜单.004FE118 //这里就是OEP F7
75、F7后到这里
76、004FE118 55 PUSH EBP //这就是OEP 看样子是DELPHI的
77、004FE119 8BEC MOV EBP,ESP
78、004FE11B 83C4 F0 ADD ESP,-10
79、004FE11E B8 60DC4F00 MOV EAX,游戏菜单.004FDC60
80、004FE123 E8 8885F0FF CALL 游戏菜单.004066B0
81、004FE128 A1 B4315000 MOV EAX,DWORD PTR DS:[5031B4]
82、004FE12D 8B00 MOV EAX,DWORD PTR DS:[EAX]
83、004FE12F E8 9CA4F7FF CALL 游戏菜单.004785D0
84、OD不要关 -- 打开LordPE-修正映象大小--完全转存--保存为*.EXE文件 好作到这里先停着 从新加载一次目标文件 再重复作下面这个操作
85、下断bp OpenMutexA SHIFT+F9
86、7C80EC1B > 8BFF MOV EDI,EDI ; ntdll.7C930738//断在这里
87、7C80EC1D 55 PUSH EBP
88、7C80EC1E 8BEC MOV EBP,ESP
89、7C80EC20 51 PUSH ECX
90、7C80EC21 51 PUSH ECX
91、7C80EC22 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
92、7C80EC26 56 PUSH ESI
93、7C80EC27 0F84 7A500300 JE kernel32.7C843CA7
94、此时堆栈
95、0012F798 00543DB8 /CALL 到 OpenMutexA 来自 游戏菜单.00543DB2
96、0012F79C 001F0001 |Access = 1F0001
97、0012F7A0 00000000 |Inheritable = FALSE
98、0012F7A4 0012FDD8 MutexName = "75C:A5ED094E6" //0012FDD8
99、CTRL+G 00401000 输入代码
100、60 9C 68 D8 FD 12 00 33 C0 50 50 E8 2F DB 40 7C 9D 61 E9 04 DC 40 7C
101、在复制的代码处 新建EIP SHIFT+F9 再次断下 F2取消断点 CTRL+G->00401000 撤消修改
102、这样双进程就转换为单进程了
103、因为第一次保存的是没有跳过IAT加密的文件也就是 魔法跳转 没有修改 所以运行时会出问题
104、下面我们来修改 魔法跳转 并去跳过IAT加密 下断点 HE GetModuleHandleA SHIFT+F9运行
105、中断在
106、7C80B529 > 8BFF MOV EDI,EDI ; ntdll.7C930738 //断中这里;注意看堆栈
107、7C80B52B 55 PUSH EBP
108、7C80B52C 8BEC MOV EBP,ESP
109、7C80B52E 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
110、7C80B532 74 18 JE SHORT kernel32.7C80B54C
111、7C80B534 FF75 08 PUSH DWORD PTR SS:[EBP+8]
112、7C80B537 E8 682D0000 CALL kernel32.7C80E2A4
113、7C80B53C 85C0 TEST EAX,EAX
114、此时堆栈返回
115、0012FF38 0060F4FB /CALL 到 GetModuleHandleA 来自 mz.0060F4F5
116、0012FF3C 00000000 pModule = NULL
117、0012FF40 00000000
118、下面是每次 F9的堆栈返回
119、F9+1
120、0012E244 77C079B2 /CALL 到 GetModuleHandleA 来自 77C079AC
121、0012E248 77BE31BC pModule = "kernel32.dll"
122、0012E24C 77C31A70
123、F9+2
124、0012EC78 7365D4A4 /CALL 到 GetModuleHandleA 来自 msctfime.7365D49E
125、0012EC7C 0012EC80 pModule = "C:WINDOWSsystem32
126、tdll.dll"
127、0012EC80 575C3A43
128、F9+3
129、0012E884 77F45BB0 /CALL 到 GetModuleHandleA 来自 77F45BAA
130、0012E888 77F44FF4 pModule = "KERNEL32.DLL"
131、0012E88C 00000001
132、F9+4
133、0012F6B8 005F8D7B /CALL 到 GetModuleHandleA 来自 mz.005F8D75
134、0012F6BC 00000000 pModule = NULL
135、0012F6C0 001534B8
136、F9+5
137、0012967C 00D82FF1 /CALL 到 GetModuleHandleA 来自 00D82FEB //此时缓冲时间有点长
138、00129680 00D93D6C pModule = "kernel32.dll"
139、00129684 00D95D7C ASCII "VirtualAlloc" //看到这个就差不多快到了
140、F9+6
141、0012967C 00D8300E /CALL 到 GetModuleHandleA 来自 00D83008
142、00129680 00D93D6C pModule = "kernel32.dll"
143、00129684 00D95D70 ASCII "VirtualFree" //看到这个下一次就是返回时机了
144、F9+7
145、0012941C 00D75345 /CALL 到 GetModuleHandleA 来自 00D7533F //就是这里
146、00129420 00129558 pModule = "kernel32.dll"
147、00129424 0012EBA4
148、调式--硬件断点--删除断点--ALT+F9返回
149、00D75345 8B0D 34CFD900 MOV ECX,DWORD PTR DS:[D9CF34] //返回到这里
150、00D7534B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
151、00D7534E A1 34CFD900 MOV EAX,DWORD PTR DS:[D9CF34]
152、00D75353 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
153、00D75356 75 16 JNZ SHORT 00D7536E
154、00D75358 8D85 DCFEFFFF LEA EAX,DWORD PTR SS:[EBP-124]
155、00D7535E 50 PUSH EAX
156、00D7535F FF15 90E0D800 CALL DWORD PTR DS:[D8E090] ; kernel32.LoadLibraryA
157、//不记得是哪位大哥说过 在返回的LoadLibraryA下面的第一个JE就是MJ了 呵呵
158、00D75365 8B0D 34CFD900 MOV ECX,DWORD PTR DS:[D9CF34]
159、00D7536B 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
160、00D7536E A1 34CFD900 MOV EAX,DWORD PTR DS:[D9CF34]
161、00D75373 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
162、00D75376 0F84 2F010000 JE 00D754AB //这个就是我们要找的MJ了 JE改为JMP
163、00D7537C 33C9 XOR ECX,ECX
164、00D7537E 8B03 MOV EAX,DWORD PTR DS:[EBX]
165、00D75380 3938 CMP DWORD PTR DS:[EAX],EDI
166、00D75382 74 06 JE SHORT 00D7538A
167、这时我们再下另一个断点 BP GetTickCount SHIFT+F9 运行
168、中断在这里
169、7C8092AC > BA 0000FE7F MOV EDX,7FFE0000 //中断点
170、7C8092B1 8B02 MOV EAX,DWORD PTR DS:[EDX]
171、7C8092B3 F762 04 MUL DWORD PTR DS:[EDX+4]
172、7C8092B6 0FACD0 18 SHRD EAX,EDX,18
173、7C8092BA C3 RETN
174、F2取消断点 ALT+F9 返回程序
175、返回到这里
176、00D8C003 FF15 7C62D900 CALL DWORD PTR DS:[D9627C] ; kernel32.GetTickCount
177、00D8C009 8985 A4D4FFFF MOV DWORD PTR SS:[EBP-2B5C],EAX
178、00D8C00F 6A 01 PUSH 1
179、00D8C011 58 POP EAX
180、00D8C012 85C0 TEST EAX,EAX
181、00D8C014 0F84 A8030000 JE 00D8C3C2
182、看到代码
183、00D8C003 FF15 7C62D900 CALL DWORD PTR DS:[D9627C] ; kernel32.GetTickCount //这里了 一共有两处 向下找另一处
184、另一处代码
185、00D8C3C2 FF15 7C62D900 CALL DWORD PTR DS:[D9627C] ; kernel32.GetTickCount //另一处
186、00D8C3C8 2B85 A4D4FFFF SUB EAX,DWORD PTR SS:[EBP-2B5C]
187、00D8C3CE 8B8D A8D4FFFF MOV ECX,DWORD PTR SS:[EBP-2B58]
188、00D8C3D4 6BC9 32 IMUL ECX,ECX,32
189、00D8C3D7 81C1 D0070000 ADD ECX,7D0
190、00D8C3DD 3BC1 CMP EAX,ECX
191、00D8C3DF 76 07 JBE SHORT 00D8C3E8 //把这个改为 JMP 再F9运行
192、程序停在
193、00D8C977 8B8D 18C1FFFF MOV ECX,DWORD PTR SS:[EBP-3EE8]
194、00D8C97D 8B09 MOV ECX,DWORD PTR DS:[ECX]
195、00D8C97F 8901 MOV DWORD PTR DS:[ECX],EAX
196、00D8C981 8B85 18C1FFFF MOV EAX,DWORD PTR SS:[EBP-3EE8]
197、00D8C987 83C0 04 ADD EAX,4
198、00D8C98A 8985 18C1FFFF MOV DWORD PTR SS:[EBP-3EE8],EAX
199、00D8C990 ^ EB CA JMP SHORT 00D8C95C
200、00D8C992 96 XCHG EAX,ESI
201、00D8C993 66:87C9 XCHG CX,CX
202、00D8C996 96 XCHG EAX,ESI
203、现在我们再打开ImportREC--OEP处填写FE118 (004FE118-00400000)--自动查找IAT--获取输入表--显示无效的--剪切指针--修复转存文件--选中你用LORDPE保存的EXE文件 OK 完成
本文到此结束,希望对大家有所帮助。
版权说明: 本文由用户上传,如有侵权请联系删除!
猜你喜欢:
- 2022-09-29 关于打篮球的规则英文(关于打篮球的规则)
- 2022-09-29 五谷怎样读?(五谷词语如何读)
- 2022-09-29 最经典求婚告白词简短(圣诞节求婚表白的句子有什么)
- 2022-09-29 吃红薯叶的坏处(吃红薯叶有好处吗)
- 2022-09-29 精髓的拼音是什么呢(精髓读音和解释)
- 2022-09-29 魔方口诀步骤(魔方入门口诀教程)
- 2022-09-29 不能与灯笼草一起吃的食物是什么(不能与灯笼草一起吃的食物)
- 2022-09-29 梦到脚后跟长牙齿(梦见脚后跟的解释)
最新文章:
- 2023-07-03 怎样测试甲醛有没有超标(如何测试甲醛超不超标)
- 2023-07-03 罗汉鱼苗子怎么养(如何让罗汉鱼苗长的快)
- 2023-07-03 叙述犬猫体外寄生虫都有哪些危害(宠物常见体外寄生虫应对方法)
- 2023-07-03 螃蟹不能和什么一起吃论文(螃蟹不能和什么一起吃)
- 2023-07-03 怎么训练仓鼠握手(如何训练仓鼠从上手仓鼠怎样训练躺手)
- 2023-07-03 元青花有收藏价值吗(有元青花吗)
- 2023-07-03 怎样辨别实木床的好坏(怎样辨别实木床)
- 2023-07-02 怎么选择好羊奶(挑选优质羊奶 如何挑选优质羊奶)
- 2023-07-02 最完整木质结构的古代皇宫建筑群(木质结构古代皇宫建筑群是什么)
- 2023-07-02 红木家具如何挑选
- 2023-07-02 卫生间太暗怎么装修(卫生间太暗怎么办)
- 2023-07-02 窗户贴膜怎么贴才好(窗户贴膜怎么贴)
- 2023-07-02 保险丝熔断的原因初中物理(保险丝熔断的原因是什么)
- 2023-07-02 左眼皮一直跳怎么回事女生(左眼皮一直跳怎么回事)
- 2023-07-02 狗狗乱拉便便怎么办(狗狗乱拉粑粑怎么办)
- 2023-07-02 金毛皮肤病是什么样子(金毛狗狗的皮肤病要如何处理)