首页
社区
课程
招聘
[旧帖] [讨论]关于 "手脱Armadillo 3.00a - 3.61单进程壳" 学习问题求教 0.00雪花
发表于: 2008-6-21 23:00 3262

[旧帖] [讨论]关于 "手脱Armadillo 3.00a - 3.61单进程壳" 学习问题求教 0.00雪花

2008-6-21 23:00
3262
对照前辈的脱壳文章:
标 题: 手脱Armadillo 3.00a - 3.61单进程壳
作 者: wer412
时 间: 2005-06-15,15:06
链 接: http://bbs.pediy.com/showthread.php?t=14498
进行学习能找到OEP并且脱壳但是脱壳后的文件提示错误无法运行请各位老师指点

下面是我的脱壳记录:
设置Ollydbg,忽略所有异常
OD载入

0045C000 >  60              PUSHAD
0045C001    E8 00000000     CALL msniffer.0045C006
0045C006    5D              POP EBP
0045C007    50              PUSH EAX
0045C008    51              PUSH ECX
0045C009    EB 0F           JMP SHORT msniffer.0045C01A
0045C00B    B9 EB0FB8EB     MOV ECX,EBB80FEB
0045C010    07              POP ES                                   ; 段寄存器修饰
0045C011    B9 EB0F90EB     MOV ECX,EB900FEB
0045C016    08FD            OR CH,BH
0045C018    EB 0B           JMP SHORT msniffer.0045C025
0045C01A    F2:             PREFIX REPNE:                            ; 多余前缀

下HE GetModuleHandleA 断点SHIFT+F9运行6次
7C80B6A1 >  8BFF            MOV EDI,EDI
7C80B6A3    55              PUSH EBP
7C80B6A4    8BEC            MOV EBP,ESP
7C80B6A6    837D 08 00      CMP DWORD PTR SS:[EBP+8],0
7C80B6AA    74 18           JE SHORT kernel32.7C80B6C4
7C80B6AC    FF75 08         PUSH DWORD PTR SS:[EBP+8]
7C80B6AF    E8 C0290000     CALL kernel32.7C80E074
7C80B6B4    85C0            TEST EAX,EAX
7C80B6B6    74 08           JE SHORT kernel32.7C80B6C0
堆栈显示:
0012D754   00AF4E83  /CALL 到 GetModuleHandleA 来自 00AF4E7D
0012D758   0012D890  \pModule = "kernel32.dll"
1
0012D754   00AF4E83  /CALL 到 GetModuleHandleA 来自 00AF4E7D
0012D758   0012D890  \pModule = "user32.dll"
2
0012D754   00AF4E83  /CALL 到 GetModuleHandleA 来自 00AF4E7D
0012D758   0012D890  \pModule = "MSVBVM60.DLL"

3
0012D018   66001BC5  /CALL 到 GetModuleHandleA 来自 66001BBF
0012D01C   6600F4D0  \pModule = "kernel32.dll"

4
0012D00C   6600281E  /CALL 到 GetModuleHandleA 来自 66002818
0012D010   6600F4FC  \pModule = "KERNEL32"
0012D014   660027CE  返回到 660027CE 来自 66002813
0012D018   6600279F  返回到 6600279F
0012D01C   66001C6A  返回到 66001C6A 来自 66002794
0012D020   66001B64  返回到 66001B64 来自 66001B90

5
0012D004   660031CE  /CALL 到 GetModuleHandleA 来自 660031C8
0012D008   00000000  \pModule = NULL
0012D00C   66003138  返回到 66003138 来自 660031BD

6
0012D754   00AF4E83  /CALL 到 GetModuleHandleA 来自 00AF4E7D
0012D758   0012D890  \pModule = "advapi32.dll"

alt+f9返回
00AF4E83    8B0D 00B8B100   MOV ECX,DWORD PTR DS:[B1B800]
00AF4E89    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00AF4E8C    A1 00B8B100     MOV EAX,DWORD PTR DS:[B1B800]
00AF4E91    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00AF4E94    75 16           JNZ SHORT 00AF4EAC
00AF4E96    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
00AF4E9C    50              PUSH EAX
00AF4E9D    FF15 C030B100   CALL DWORD PTR DS:[B130C0]               ; kernel32.LoadLibraryA
00AF4EA3    8B0D 00B8B100   MOV ECX,DWORD PTR DS:[B1B800]
00AF4EA9    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00AF4EAC    A1 00B8B100     MOV EAX,DWORD PTR DS:[B1B800]
00AF4EB1    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00AF4EB4    0F84 AD000000   JE 00AF4F67                              mJ跳--改为JMP
00AF4EBA    33C9            XOR ECX,ECX
00AF4EBC    8B03            MOV EAX,DWORD PTR DS:[EBX]
00AF4EBE    3938            CMP DWORD PTR DS:[EAX],EDI
00AF4EC0    74 06           JE SHORT 00AF4EC8
00AF4EC2    41              INC ECX
00AF4EC3    83C0 0C         ADD EAX,0C
00AF4EC6  ^ EB F6           JMP SHORT 00AF4EBE
取消断点ALT+M打开内存镜像
Memory map, 项目 23
地址=00401000
大小=00027000 (159744.)
属主=msniffer 00400000
区段=.text
类型=映像 01001002
访问=R
初始访问=RWE
F2下断点
SHIFT+F9运行
来到OEP
00423D7E    55              PUSH EBP
00423D7F    8BEC            MOV EBP,ESP
00423D81    6A FF           PUSH -1
00423D83    68 48C14200     PUSH msniffer.0042C148
00423D88    68 E83E4200     PUSH msniffer.00423EE8                   ; JMP 到 msvcrt._except_handler3
00423D8D    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
00423D93    50              PUSH EAX
00423D94    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00423D9B    83EC 68         SUB ESP,68
00423D9E    53              PUSH EBX
00423D9F    56              PUSH ESI
00423DA0    57              PUSH EDI
00423DA1    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
00423DA4    33DB            XOR EBX,EBX
00423DA6    895D FC         MOV DWORD PTR SS:[EBP-4],EBX
00423DA9    6A 02           PUSH 2
00423DAB    FF15 18884200   CALL DWORD PTR DS:[428818]               ; msvcrt.__set_app_type
00423DB1    59              POP ECX
00423DB2    830D 98BE4300 F>OR DWORD PTR DS:[43BE98],FFFFFFFF
00423DB9    830D 9CBE4300 F>OR DWORD PTR DS:[43BE9C],FFFFFFFF
00423DC0    FF15 1C884200   CALL DWORD PTR DS:[42881C]               ; msvcrt.__p__fmode

使用LOADPE抓取。运行ImportREC,选择程序进程,填入OEP=23D7E,点击右键选择“Advanced Commands”-->“Get Api Calls ”-->选择“Get' Call[X]' ... ”-->“Show Invalid”剪掉两个无效函数,修复即可。

软件的下载地址:http://down3.zol.com.cn/28b9fcae6ce64e91e0b0f452cf0accd6/485d0832/bofang/msniffer_setup.exe

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2008-6-22 18:20
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2008-6-22 18:30
0
游客
登录 | 注册 方可回帖
返回
//