首页
社区
课程
招聘
[求助]脱Armadillo 2.85遇到难题
发表于: 2007-2-10 16:02 3623

[求助]脱Armadillo 2.85遇到难题

2007-2-10 16:02
3623
最近练习脱Armadillo壳,跟着一些范例做没有什么困难,于是自已找了一个壳想试一下,没想到总是找不到返回的时机,特来向高人请教.

软件信息:N年前的仙三免CD主程序

加壳方式:
!- Protected Armadillo 2.85
Protection system (Basic)
!- <Protection Options>
Standard protection or Minimum protection
!- <Backup Key Options>
No Registry Keys at All
!- <Compression Options>
Better/Slower Compression
!- <Other Options>
Disable Monitoring Thread

设置Ollydbg忽略所有的异常选项,隐藏OD。

018CE0B9 >/$  55            PUSH EBP   ;OD载入后停留在这里
018CE0BA  |.  8BEC          MOV EBP,ESP
018CE0BC  |.  6A FF         PUSH -1
018CE0BE  |.  68 68628E01   PUSH PAL3.018E6268
018CE0C3  |.  68 00DB8C01   PUSH PAL3.018CDB00     

下断:BP OpenMutexA,F9运行

7C80EA1B >  8BFF            MOV EDI,EDI   ;OD停留在这里
7C80EA1D    55              PUSH EBP
7C80EA1E    8BEC            MOV EBP,ESP
7C80EA20    51              PUSH ECX
7C80EA21    51              PUSH ECX

堆栈提示:
0012F5B8   018C790C  /CALL 到 OpenMutexA 来自 PAL3.018C7906
0012F5BC   001F0001  |Access = 1F0001
0012F5C0   00000000  |Inheritable = FALSE
0012F5C4   0012FBF8  \MutexName = "100::DA2017F78E"

CTRL+G来到 401000,写入如下代码:

00401000    60              PUSHAD
00401001    9C              PUSHFD
00401002    68 F8FB1200     PUSH 12FBF8      ; ASCII "E4::DA2017F78E"
00401007    33C0            XOR EAX,EAX
00401009    50              PUSH EAX
0040100A    50              PUSH EAX
0040100B    E8 2FD9407C     CALL kernel32.CreateMutexA
00401010    9D              POPFD
00401011    61              POPAD
00401012  - E9 04DA407C     JMP kernel32.OpenMutexA
00401017    90              NOP

在401000 处新建eip。F9运行,再次中断在 OpenMutexA 处,取消该断点,然后返回401000处,撤消刚才键入的所有代码。

下断:He GetModuleHandleA,F9运行:

7C80B6A1 >  8BFF            MOV EDI,EDI   ;OD停留在这里
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

每次按F9运行 堆栈变化如下:

-------------------------------------------------------------------
0012ED50   77F45BD8  /CALL 到 GetModuleHandleA 来自 77F45BD2
0012ED54   77F4501C  \pModule = "KERNEL32.DLL"
-------------------------------------------------------------------
0012E52C   5D175324  /CALL 到 GetModuleHandleA 来自 5D17531E
0012E530   5D175370  \pModule = "kernel32.dll"
-------------------------------------------------------------------
0012F570   018C6E53  /CALL 到 GetModuleHandleA 来自 PAL3.018C6E4D
0012F574   00000000  \pModule = NULL
0012F578   0000007F
0012F57C   02032B8B
0012F580   0191B9DE  PAL3.0191B9DE
0012F584   00000000
0012F588   01903000  ASCII "PDATA000"
0012F58C   0012FF00
0012F590   018E693C  PAL3.018E693C
0012F594   018E6940  PAL3.018E6940
0012F598   018E3238  PAL3.018E3238
0012F59C   0191B9DE  PAL3.0191B9DE
0012F5A0   01903000  ASCII "PDATA000"
-------------------------------------------------------------------
0012DE78   0203368D  /CALL 到 GetModuleHandleA 来自 02033687
0012DE7C   00000000  \pModule = NULL
0012DE80   02151378
0012DE84   00000000
0012DE88   0203F8A2
0012DE8C   0012DEDC
0012DE90   00000000
0012DE94   77D50000  USER32.77D50000
0012DE98   00000000
0012DE9C   00000000
0012DEA0   77D50A04  USER32.77D50A04
0012DEA4   00000000
0012DEA8   0012DECC
0012DEAC   02036F00  返回到 02036F00 来自 02036E18
-------------------------------------------------------------------
0012D5A0   7365D4A4  /CALL 到 GetModuleHandleA 来自 7365D49E
0012D5A4   0012D5A8  \pModule = "C:\WINDOWS\system32\ntdll.dll"
0012D5A8   575C3A43
-------------------------------------------------------------------
0012DED8   02034711  /CALL 到 GetModuleHandleA 来自 0203470B
0012DEDC   0204D824  \pModule = "kernel32.dll"
0012DEE0   0012F55C                             ;这一次F9,已经出现程序对话框了.
0012DEE4   021408F8
0012DEE8   00000000
0012DEEC   00000000
0012DEF0   0012DF14
0012DEF4   02036DF3  返回到 02036DF3 来自 02036E18
0012DEF8   0012DEE0
0012DEFC   00000001
0012DF00   0012F434  指向下一个 SEH 记录的指针
0012DF04   0204539C  SE处理程序

返回时机总是找不准,第六次F9,程序已开始运行了,不知何处有误,盼高人指点迷津.

源程序地址:http://patch.ali213.net/download.asp?id=3097&server=2

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
范例没用,要看就看流程分析。
2007-2-10 17:18
0
游客
登录 | 注册 方可回帖
返回
//