aoshxi001 发表于 2007-3-9 11:55:05

Asprotect V2.X 的脱壳与修复的总结及练习

Asprotect V2.X 的脱壳与修复的总结及练习



关于Asprotect V2.X 的脱壳与修复, loveboom的《ASPROTECT 2.x 脱壳系列》已经非常的全面与经典.

pc007.com 版权所有

本人在此只是依葫芦画瓢, 并将有些地方再详细的解释一下, 给菜鸟们脱Asprotect V2.X时进行参考, 高手就不要看了. pc007.com


先在理论上研讨一下, 由于编译器的不一样, C 与 Delphi 所编译的汇编结果有差别, Asprotect 加壳时处理的也不一样.

本文来自 pc007.com


先假设有一程序:

007电脑资讯


OEP: 00401000
IAT: 00407000 - 00407FFF
在00401100 CALL DLL1.API1
在00401180 CALL DLL1.API2

pc007.com


Ospr 加壳后, 好多的API CALL 被改成 CALL 12000000

007电脑资讯


然后开始研究.

007电脑资讯


1. C/C++ Program

pc007.com


1.1) 未被加壳的程序

007电脑资讯


00401000    55            PUSH EBP                                  ; 程序 OEP
00401001    8BEC            MOV EBP, ESP
...
00401100    FF15 00704000   CALL DWORD PTR DS:            ; DLL1.API1
00401106    ...
00401180    FF15 04704000   CALL DWORD PTR DS:            ; DLL1.API2
00401186    ...

007电脑资讯



********* IAT 可能是这样的 ************
00407000    DD7C571000    // DLL1.API1
00407004    DD7C572000    // DLL1.API2
...
004070FC    DD00000000 pc007.com

00407100    DD7D00XXXX    // DLL2.API1
...
004071FC    DD00000000 pc007.com

... pc007.com 版权所有

00407F00    DD7F00XXXX    // DLLn.API1
...
00407FFC    DD00000000

pc007.com 版权所有




pc007.com


1.2) 被 Asprotect 加壳后的程序在OEP

欢迎访问007电脑资讯


00401000    55            PUSH EBP                                  ; 程序 OEP
00401001    8BEC            MOV EBP, ESP
...
00401100    E8   FBEEBF11   CALL 12000000                           ; 壳
00401105    ??
00401106    ...
00401180    E8   7BEEBF11   CALL 12000000                           ; 壳

www.pc007.com


00401185    ??
00401186    ...
pc007.com


*************IAT************************
00407000    DD????????    // 被加密的 DLL1.API1 信息
00407004    DD7C572000    // 未加密的 DLL1.API2

007电脑资讯


ASPR 将许多的API CALL 都改成了统一的 CALL 12000000
即改 CALL DWORD PTR DS: 成 CALL 12000000

pc007.com




本文来自 pc007.com

作    者: blackeyes

www.pc007.com


关于Asprotect V2.X 的脱壳与修复, loveboom的《ASPROTECT 2.x 脱壳系列》已经非常的全面与经典. 本文来自 pc007.com

本人在此只是依葫芦画瓢, 并将有些地方再详细的解释一下, 给菜鸟们脱Asprotect V2.X时进行参考, 高手就不要看了. pc007.com 版权所有


先在理论上研讨一下, 由于编译器的不一样, C 与 Delphi 所编译的汇编结果有差别, Asprotect 加壳时处理的也不一样. 007电脑资讯

先假设有一程序:

pc007.com 版权所有


OEP: 00401000
IAT: 00407000 - 00407FFF
在00401100 CALL DLL1.API1
在00401180 CALL DLL1.API2

007电脑资讯

Ospr 加壳后, 好多的API CALL 被改成 CALL 12000000 pc007.com

然后开始研究. www.pc007.com

1. C/C++ Program 欢迎访问007电脑资讯

1.1) 未被加壳的程序

www.pc007.com


00401000    55            PUSH EBP                                  ; 程序 OEP
00401001    8BEC            MOV EBP, ESP
...
00401100    FF15 00704000   CALL DWORD PTR DS:            ; DLL1.API1
00401106    ...
00401180    FF15 04704000   CALL DWORD PTR DS:            ; DLL1.API2
00401186    ... 007电脑资讯


********* IAT 可能是这样的 ************
00407000    DD7C571000    // DLL1.API1
00407004    DD7C572000    // DLL1.API2
...
004070FC    DD00000000

007电脑资讯

00407100    DD7D00XXXX    // DLL2.API1
...
004071FC    DD00000000 本文来自 pc007.com

... www.pc007.com

00407F00    DD7F00XXXX    // DLLn.API1
...
00407FFC    DD00000000 www.pc007.com

pc007.com 版权所有

1.2) 被 Asprotect 加壳后的程序在OEP

pc007.com 版权所有


00401000    55            PUSH EBP                                  ; 程序 OEP
00401001    8BEC            MOV EBP, ESP
...
00401100    E8   FBEEBF11   CALL 12000000                           ; 壳
00401105    ??
00401106    ...
00401180    E8   7BEEBF11   CALL 12000000                           ; 壳 www.pc007.com
00401185    ??
00401186    ...

pc007.com 版权所有


*************IAT************************
00407000    DD????????    // 被加密的 DLL1.API1 信息
00407004    DD7C572000    // 未加密的 DLL1.API2 欢迎访问007电脑资讯

ASPR 将许多的API CALL 都改成了统一的 CALL 12000000
即改 CALL DWORD PTR DS: 成 CALL 12000000 pc007.com 版权所有
页: [1]
查看完整版本: Asprotect V2.X 的脱壳与修复的总结及练习