-
-
关于 ASProtect 壳问题
-
发表于:
2004-5-10 21:47
5587
-
关于 ASProtect 壳问题
WindowsXp, OllDbg 调试
用 ASProtect 加壳的程序的输入表只有象 GetModuleHandleA() GetProcAddress()
几个函数 ,并且当外壳调用这些函数是也不是直接通过输入表调用的
最开始: 00401000 68 01901D08 PUSH main.081D9001
00401005 E8 01000000 CALL main.0040100B
0040100A C3 RETN
0040100B C3 RETN
RETN 之后到:
081D9001 60 PUSHAD
081D9002 E8 03000000 CALL main.081D900A
081D9007 -E9 EB045D45 JMP 4D7A94F7
081D900C 55 PUSH EBP
081D900D C3 RETN
...
...
开始单步跟踪 一直在 08xxxxxx 的地址转圈
然后出现了异常 本来这里不会出现异常---如果不单步跟踪的话 ;晕了
如果开始不跟踪 直接 bp GetProcAddress
第一次断下来已经到了这里 :
0C75C088 53 PUSH EBX ; EBX 0C75C7A9 ASCII "VirtualAlloc"
0C75C089 50 PUSH EAX
0C75C08A FF95 E8314400 CALL DWORD PTR SS:[EBP+4431E8] ; kernel32.GetProcAddress
0C75C090 8985 79294400 MOV DWORD PTR SS:[EBP+442979],EAX ; kernel32.VirtualAlloc
这时
SS:[EBP+4431E8] = 0c3196bc + 004431e8 = 0c75c8a4
大概经过 99 次这样的 调用 GetProcAddress() , 外壳把需要的 API 函数的地址都搞定了。
之后进入 26 次 SEH
问题:
本来外壳是在 08xxxxxx 的地址中运行的 什么时候跳到 0Cxxxxxxx 的地址里去了?
刚开始时 0Cxxxxxx 的地址里是没有代码的,什么时候通过什么方法把代码搬过去的?
我想 挂钩外壳的 GetProcAddress()函数 (改输入表好象不行) 怎么挂?
请哥哥们 帮忙!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!