论坛上有一些脱这壳的教程,但不是很懂.
我到达oep后,用import rec 进行修复,有几个指针修复不了.因此我把带壳
运行的程序与脱壳后运行的程序在od中单步比较,发现问题出在这里:
dump出来的程序
00406CA0 $ FF25 50135E00 JMP DWORD PTR DS:[5E1350]
00406CA6 8BC0 MOV EAX,EAX
00406CA8 $- FF25 4C135E00 JMP DWORD PTR DS:[<&kernel32.LocalAlloc>>; kernel32.LocalAlloc
00406CAE 8BC0 MOV EAX,EAX
00406CB0 $- FF25 48135E00 JMP DWORD PTR DS:[<&kernel32.TlsGetValue>; kernel32.TlsGetValue
00406CB6 8BC0 MOV EAX,EAX
00406CB8 $- FF25 44135E00 JMP DWORD PTR DS:[<&kernel32.TlsSetValue>; kernel32.TlsSetValue
带壳运行的程序:
00406CA0 - FF25 50135E00 JMP DWORD PTR DS:[5E1350]
00406CA6 8BC0 MOV EAX,EAX
00406CA8 - FF25 4C135E00 JMP DWORD PTR DS:[5E134C]
00406CAE 8BC0 MOV EAX,EAX
00406CB0 - FF25 48135E00 JMP DWORD PTR DS:[5E1348]
00406CB6 8BC0 MOV EAX,EAX
00406CB8 - FF25 44135E00 JMP DWORD PTR DS:[5E1344]
这两处代码是相同的,但再第一处DS:[5E1350]里面的值是:00000000
第二处里面是: 01141110
我进01141110看到这些:
01141110 55 PUSH EBP
01141111 8BEC MOV EBP,ESP
01141113 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
01141116 85C0 TEST EAX,EAX
01141118 75 07 JNZ SHORT 01141121
0114111A A1 74691401 MOV EAX,DWORD PTR DS:[1146974]
0114111F EB 06 JMP SHORT 01141127
01141121 50 PUSH EAX
01141122 E8 3140FFFF CALL 01135158 ; JMP 到 kernel32.GetModuleHandleA
01141127 5D POP EBP
01141128 C2 0400 RETN 4
请问最后这段是个怎样的函数?这样的情况应该如何修复呢?
我把JMP DWORD PTR DS:[5E1350] 开始改成了JMP kernel32.GetModuleHandleA

但很明显不对..请大侠们帮助我解决这个疑难....那样,很多程序我应该就都可以脱了
[注意]看雪招聘,专注安全领域的专业人才平台!