首页
社区
课程
招聘
关于Armadillo壳下GetCurrentThreadId断点后返回时机的问题[求助]
发表于: 2005-12-27 23:38 4390

关于Armadillo壳下GetCurrentThreadId断点后返回时机的问题[求助]

2005-12-27 23:38
4390
一个外挂程序,Armadillo壳,下载地址
http://www.cy55.com/cycs/cycs_51227.exe
初步判断是单进程,但是不是标准不知道
听FLY老大的 不使用OpenMutexA断点
程序载入后停在这里

00664000 > $  60            PUSHAD
00664001   .  E8 00000000   CALL mir3adva.00664006
00664006   $  5D            POP EBP
00664007   .  50            PUSH EAX
00664008   .  51            PUSH ECX
00664009   .  EB 0F         JMP SHORT mir3adva.0066401A
0066400B      B9            DB B9
0066400C   >  EB 0F         JMP SHORT mir3adva.0066401D
0066400E   >  B8 EB07B9EB   MOV EAX,EBB907EB

直接下 BP GetModuleHandleA 断点
F9
SHIFT+F9
SHIFT+F9

堆栈内容
1
0012FF10   0065C931  /CALL 到 GetModuleHandleA
0012FF14   00000000  \pModule = NULL
0012FF18   00000000
0012FF1C   00141F0E

2
0012FF10   0065C931  mir3adva.0065C931
0012FF14   00000000
0012FF18   00000000
0012FF1C   00141F0E

3
00E9F18C   77E5A5D9  返回到 kernel32.77E5A5D9 来自 kernel32.GetModuleHandleA
00E9F190   00000000
00E9F194   77E601B8  返回到 kernel32.77E601B8 来自 kernel32.77E5A5D2
00E9F198   00000000

4
00E9F588   77C059FC  返回到 77C059FC 来自 kernel32.GetModuleHandleA
00E9F58C   77BE31AC  ASCII "kernel32.dll"
00E9F590   77C2CA20
00E9F594   00000000

5
0012ED50   70C19BDE  返回到 SHLWAPI.70C19BDE 来自 kernel32.GetModuleHandleA
0012ED54   70BDD3D0  ASCII "KERNEL32.DLL"
0012ED58   00000000
0012ED5C   70BD0000  SHLWAPI.70BD0000

6
00E9F6A0   702D8DB9  返回到 urlmon.702D8DB9 来自 kernel32.GetModuleHandleA
00E9F6A4   702D989C  ASCII "kernel32.dll"
00E9F6A8   7030BA30  urlmon.7030BA30
00E9F6AC   00000000

7
00E9F6DC   702C6C94  返回到 urlmon.702C6C94 来自 kernel32.GetModuleHandleA
00E9F6E0   702C6CA4  ASCII "shlwapi.dll"
00E9F6E4   702C6CB0  ASCII "DelayLoadFailureHook"
00E9F6E8   702BF76B  返回到 urlmon.702BF76B 来自 urlmon.702C6C84

8
00E9F6A8   77103426  返回到 OLEAUT32.77103426 来自 kernel32.GetModuleHandleA
00E9F6AC   77172D94  ASCII "KERNEL32.DLL"
00E9F6B0   771033EA  返回到 OLEAUT32.771033EA 来自 OLEAUT32.7710341B
00E9F6B4   77172BB4  OLEAUT32.77172BB4

9
00E9F6A4   77103426  返回到 OLEAUT32.77103426 来自 kernel32.GetModuleHandleA
00E9F6A8   77172D94  ASCII "KERNEL32.DLL"
00E9F6AC   7710348D  返回到 OLEAUT32.7710348D 来自 OLEAUT32.7710341B
00E9F6B0   77172BD8  OLEAUT32.77172BD8

10
00E9F76C   7021B770  返回到 WININET.7021B770 来自 kernel32.GetModuleHandleA
00E9F770   70217AC0  ASCII "KERNEL32"
00E9F774   7021C906  返回到 WININET.7021C906 来自 WININET.7021B755
00E9F778   00000001

11
0012F518   006481E8  mir3adva.006481E8
0012F51C   00000000
0012F520   00000000
0012F524   00F040E4

12
0012BE5C   00F06A5E  返回到 00F06A5E 来自 kernel32.GetModuleHandleA
0012BE60   0012BF98  ASCII "kernel32.dll"             看坛子里有位达人说前面两个地址靠得很近就是返回时机了,这里取消断点按Ctrl+F9&F7返回
0012BE64   0012EF60
0012BE68   010B1D98

返回到这里

00F06A5E        8B0D 0876F300        MOV ECX,DWORD PTR DS:[F37608]
00F06A64        89040E                MOV DWORD PTR DS:[ESI+ECX],EAX
00F06A67        A1 0876F300        MOV EAX,DWORD PTR DS:[F37608]
00F06A6C        393C06                CMP DWORD PTR DS:[ESI+EAX],EDI
00F06A6F        75 16                JNZ SHORT 00F06A87
00F06A71        8D85 B4FEFFFF        LEA EAX,DWORD PTR SS:[EBP-14C]
00F06A77        50                PUSH EAX
00F06A78        FF15 CCC0F200        CALL DWORD PTR DS:[F2C0CC]               ; kernel32.LoadLibraryA
00F06A7E        8B0D 0876F300        MOV ECX,DWORD PTR DS:[F37608]
00F06A84        89040E                MOV DWORD PTR DS:[ESI+ECX],EAX
00F06A87        A1 0876F300        MOV EAX,DWORD PTR DS:[F37608]
00F06A8C        393C06                CMP DWORD PTR DS:[ESI+EAX],EDI
00F06A8F        0F84 AD000000        JE 00F06B42         改这里为JMP
00F06A95        33C9                XOR ECX,ECX

把00F06A8F处为JMP 00F06B42       不知道是不是这里

然后再下bp GetCurrentThreadId 断点

接下来就开始郁闷了,好像一直在转呀转的,昨天晚上被我碰到一次找到了OEP 4e85b4

堆栈内容
1
0012B748   66001E3A  /CALL 到 GetCurrentThreadId 来自 66001E34
0012B74C   00000001
0012B750   66001C1E  返回到 66001C1E 来自 66001DE6
0012B754   66001B64  返回到 66001B64 来自 66001B90

2
0012B728   66003505  /CALL 到 GetCurrentThreadId 来自 660034FF
0012B72C   00000000
0012B730   6610E470
0012B734   6610E4D8

3
0012C0D4   010B1D98
0012C0D8   0012EF60
0012C0DC  /0012ED4C
0012C0E0  |00F1DB60  返回到 00F1DB60 来自 00F241A0

4
0012B984   73D3B003  /CALL 到 GetCurrentThreadId 来自 73D3AFFD
0012B988   00000000
0012B98C   73E03738
0012B990   73D30000

5
0012B548   77C07BA7  /CALL 到 GetCurrentThreadId 来自 msvcrt.77C07BA1
0012B54C   00000000
0012B550   00000104
0012B554   77C00E17  返回到 msvcrt.77C00E17 来自 msvcrt.77C07B52

6
0012B718   77197D86  /CALL 到 GetCurrentThreadId 来自 ole32.77197D80
0012B71C   0015A278
0012B720   019ED004  BCGCBPRO.019ED004
0012B724   00000002

7
0012B6DC   77190A01  /CALL 到 GetCurrentThreadId 来自 ole32.771909FB
0012B6E0   0015A168
0012B6E4   00000000
0012B6E8  /0012B710

8
0012B720   771B22B4  /CALL 到 GetCurrentThreadId 来自 ole32.771B22AE
0012B724  /0012B764                              如果按之前的判断方法在这里返回根本不对
0012B728  |771B2258  返回到 ole32.771B2258 来自 ole32.771B2267
0012B72C  |77284534  ole32.77284534

9
......................

N多次以后就到了

今天再怎么找都找不到返回的时机了,不知道在什么地方返回,好像要按N多次F9,请哪位达人看下不吝赐教.是不是有什么技巧可言.谢谢.

另外,昨天我也尝试着修复了一下,可是修复后运行程序提示一个DLL不可用,用LORDPE 重建了下文件后不提示DLL出错了,直接就等半天出错.

还有上面有段代码好像怎么弄都排不齐,大家将点看吧.

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
如果N<30
南蛮妈妈建议每一次都仔细看一下
2005-12-28 09:04
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
Armadillo标准壳论坛有脚本
找找看
2005-12-28 09:36
0
雪    币: 403
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
说一下,我不是想要鱼,我是想要渔。
用了自动的东西,到最后我还是不会手动脱,就达不到学习的目的了。我主要是想学一下这个东西手动脱的方法。谢谢老大的脚本。
2005-12-28 15:26
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
脚本如果可以的话,看看其断点设置不就明白了?
2005-12-28 15:37
0
雪    币: 403
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
OEP问题解决,不用在一棵树上吊死,条条大路通罗马.哈哈
用 Alt+M 查看内存映射,在401000开始的段上,下内存访问断点,F9运行。
感谢KuNgBiM[DFCG]
http://bbs.pediy.com/showthread.php?s=&threadid=15162&highlight=Armadillo+3.00a

唯一的遗憾是脱壳修复后用ResHacker编辑此文件可以看到各种对话框(脱壳应该没问题了,剩下的就是输入表的问题),可是不能运行(提示不能找到一个什么乱七八糟的DLL文件),可能是修复方法不对,或是此程序本身有问题(本身有检测?),哪位有空看下,我准备放弃了.唉,技不如人.

另,可能是我笨,没有一个脚本是可以成功到达OEP的.
2005-12-28 20:21
0
游客
登录 | 注册 方可回帖
返回
//