首页
社区
课程
招聘
请达人提示一下思路。(ARM脱壳)
发表于: 2005-9-23 10:06 3467

请达人提示一下思路。(ARM脱壳)

2005-9-23 10:06
3467
Armadillo壳求助(还差。。。)

-----------------参照以下破文------------
用OD载入,先下OpenMutexA断点shift+F9运行
047CE000 T>  60                  pushad
047CE001     E8 00000000         call TJMan.047CE006
047CE006     5D                  pop ebp
047CE007     50                  push eax
047CE008     51                  push ecx
047CE009     0FCA                bswap edx
047CE00B     F7D2                not edx
047CE00D     9C                  pushfd
047CE00E     F7D2                not edx
047CE010     0FCA                bswap edx
047CE012     EB 0F               jmp short TJMan.047CE023
看到堆栈
0012D784   047A5398  /CALL 到 OpenMutexA 来自 TJMan.047A5392
0012D788   001F0001  |Access = 1F0001
0012D78C   00000000  |Inheritable = FALSE
0012D790   0012DDC4  \MutexName = "E24:A920F9B22"

7C80EC1B k>  8BFF                mov edi,edi断在这里
7C80EC1D     55                  push ebp
7C80EC1E     8BEC                mov ebp,esp
7C80EC20     51                  push ecx
7C80EC21     51                  push ecx
7C80EC22     837D 10 00          cmp dword ptr ss:[ebp+10],0
7C80EC26     56                  push esi
7C80EC27     0F84 7A500300       je kernel32.7C843CA7
Ctrl+G 401000 键入以下代码
00401000     60                  pushad  
00401001     9C                  pushfd  
00401002     68 B4FB1200         push 0012DDC4★ 堆栈里看到的值  
00401007     33C0                xor eax,eax  
00401009     50                  push eax  
0040100A     50                  push eax  
0040100B     E8 B4B2A577         call kernel32.CreateMutexA
00401010     9D                  popfd  
00401011     61                  popad  
00401012     E9 33F7A577         jmp kernel32.OpenMutexA

在401000处新建起源,右键-》此处新建EIP
F9运行,再次中断在OpenMutexA处,取消断点。

再次Ctrl+G 401000
撤消刚才做的选择,右键-》撤消选择

2、下GetModuleHandleA断点F9运行
7C80B529 k>  8BFF                mov edi,edi断在这里,取消断点
7C80B52B     55                  push ebp
7C80B52C     8BEC                mov ebp,esp
7C80B52E     837D 08 00          cmp dword ptr ss:[ebp+8],0
7C80B532     74 18               je short kernel32.7C80B54C 再次下断

按F9,注意堆栈
0012CE4C  /0012CE84
0012CE50  |5D175394  返回到 5D175394 来自 kernel32.GetModuleHandleA
0012CE54  |5D1753E0  ASCII "kernel32.dll"

0012CF0C  /0012CF28
0012CF10  |77F45BD8  返回到 SHLWAPI.77F45BD8 来自 kernel32.GetModuleHandleA
0012CF14  |77F4501C  ASCII "KERNEL32.DLL"

0012D724  /0012D78C
0012D728  |047A44D3  返回到 TJMan.047A44D3 来自 kernel32.GetModuleHandleA

00127AB0  /0012CDDC
00127AB4  |04E94510  返回到 04E94510 来自 kernel32.GetModuleHandleA
00127AB8  |04EA7B20  ASCII "kernel32.dll"
00127ABC  |04EA8BF8  ASCII "VirtualAlloc"

00127AB0  /0012CDDC
00127AB4  |04E9452D  返回到 04E9452D 来自 kernel32.GetModuleHandleA
00127AB8  |04EA7B20  ASCII "kernel32.dll"
00127ABC  |04EA8BEC  ASCII "VirtualFree"

00127814  /00127AB4
00127818  |04E847CB  返回到 04E847CB 来自 kernel32.GetModuleHandleA
0012781C  |00127968  ASCII "kernel32.dll"//看到这里就是返回时机了

此时,取消断点,ALT+F9返回
04E847CB     8B0D 7CF6EA04       mov ecx,dword ptr ds:[4EAF67C]
04E847D1     89040E              mov dword ptr ds:[esi+ecx],eax
04E847D4     A1 7CF6EA04         mov eax,dword ptr ds:[4EAF67C]
04E847D9     391C06              cmp dword ptr ds:[esi+eax],ebx
04E847DC     75 16               jnz short 04E847F4
04E847DE     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
04E847E4     50                  push eax
04E847E5     FF15 0C21EA04       call dword ptr ds:[4EA210C]                     ; kernel32.LoadLibraryA
04E847EB     8B0D 7CF6EA04       mov ecx,dword ptr ds:[4EAF67C]
04E847F1     89040E              mov dword ptr ds:[esi+ecx],eax
04E847F4     A1 7CF6EA04         mov eax,dword ptr ds:[4EAF67C]
04E847F9     391C06              cmp dword ptr ds:[esi+eax],ebx
04E847FC     0F84 2F010000       je 04E84931//修改为JMP
04E84802     33C9                xor ecx,ecx
04E84804     8B07                mov eax,dword ptr ds:[edi]
04E84806     3918                cmp dword ptr ds:[eax],ebx
第三、下GetCurrentThreadId断点 按F9运行
注意看堆栈
001270D8   66001E3A  /CALL 到 GetCurrentThreadId 来自 66001E34
001270DC   00000001
001270E0   66001C1E  返回到 66001C1E 来自 66001DE6
001270E4   66001B64  返回到 66001B64 来自 66001B90

001270B8   66003505  /CALL 到 GetCurrentThreadId 来自 660034F
运行到上面,再按F9就over了。出现SEH递归太长,出错,狂晕!!!
----------------后面又试了再401000内存代码段,一按F9就挂。---------
后来按Armadillo CopyMem-ll +Debug-Blocker超级详细介绍的方法试脱,也不行。我下bp WaitForDebugEvent,一按F9就挂(无论在2K或XP下都一样),晕。
请达人提示一下思路(看了很多文章,都没得到想要的东西)。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
G WaitForDebugEvent
在函数末尾下断
2005-9-23 10:59
0
雪    币: 136
活跃值: (429)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
不知在那下了(那个函数尾)。
2005-9-23 11:13
0
游客
登录 | 注册 方可回帖
返回
//