首页
社区
课程
招聘
[求助]Armadillo 3.78 - 4.xx 调试问题?
发表于: 2006-12-9 22:45 3791

[求助]Armadillo 3.78 - 4.xx 调试问题?

2006-12-9 22:45
3791
1.  使用PEID v0.94检测为Armadillo 3.78 - 4.xx - Silicon Realms Toolworks
Vi检测为Armadillo V3.75? big (glue) .adata
观看执行绪只有一个进程
2.  乎略异常项目加入
C0000005 (ACCESS VIOLATION)
C0000008 (INVALID HANDLE)
C000001D (ILLEGAL INSTRUCTION)
C000001E (INVALID LOCK SEQUENCE)
C0000096 (PRIVILEGED INSTRUCTION)
插件选择IsDebugPresent>Hide
下硬断he GetModuleHandleA+5
3.  0105B000 >  60              pushad       ;程序载入点
0105B001    E8 00000000     call NOTEPAD.0105B006
0105B006    5D              pop ebp
0105B007    50              push eax
0105B008    51              push ecx
0105B009    0FCA            bswap edx
0105B00B    F7D2            not edx
0105B00D    9C              pushfd
******************************************************
堆栈区为
0007FFC4   7C816FD7  返回到 kernel32.7C816FD7
0007FFC8   7C930738  ntdll.7C930738
0007FFCC   FFFFFFFF
0007FFD0   7FFDE000

Shift+F9 run
第一次
00079500  |00B76DF3  返回到 00B76DF3 来自 kernel32.GetModuleHandleA
00079504  |00B8BC1C  ASCII "kernel32.dll"
00079508  |00B8CEC4  ASCII "VirtualAlloc"
第二次
00079500  |00B76E10  返回到 00B76E10 来自 kernel32.GetModuleHandleA
00079504  |00B8BC1C  ASCII "kernel32.dll"
00079508  |00B8CEB8  ASCII "VirtualFree"
第三次
00079264  |00B65CE1  返回到 00B65CE1 来自 kernel32.GetModuleHandleA
00079268  |000793B4  ASCII "kernel32.dll"
因该是这里了吧,可以返回了ALT+F9,取消硬体断点
00B65CE1    8B0D AC40B900   mov ecx,dword ptr ds:[B940AC]
00B65CE7    89040E          mov dword ptr ds:[esi+ecx],eax
00B65CEA    A1 AC40B900     mov eax,dword ptr ds:[B940AC]
00B65CEF    391C06          cmp dword ptr ds:[esi+eax],ebx
00B65CF2    75 16           jnz short 00B65D0A
00B65CF4    8D85 B4FEFFFF   lea eax,dword ptr ss:[ebp-14C]
00B65CFA    50              push eax
00B65CFB    FF15 BC62B800   call dword ptr ds:[B862BC]       ; kernel32.LoadLibraryA
00B65D01    8B0D AC40B900   mov ecx,dword ptr ds:[B940AC]
00B65D07    89040E          mov dword ptr ds:[esi+ecx],eax
00B65D0A    A1 AC40B900     mov eax,dword ptr ds:[B940AC]
00B65D0F    391C06          cmp dword ptr ds:[esi+eax],ebx
00B65D12    0F84 2F010000   je 00B65E47    ;magic jump(修改为jmp)
00B65D18    33C9            xor ecx,ecx
00B65D1A    8B07            mov eax,dword ptr ds:[edi]
00B65D1C    3918            cmp dword ptr ds:[eax],ebx
00B65D1E    74 06           je short 00B65D26
00B65D20    41              inc ecx
00B65D21    83C0 0C         add eax,0C

00B65D12   /E9 30010000     jmp 00B65E47
00B65D17   |90              nop
回车跟随

00B65E47    83C7 0C         add edi,0C
00B65E4A    89BD 78FDFFFF   mov dword ptr ss:[ebp-288],edi
00B65E50    83C6 04         add esi,4
00B65E53    395F FC         cmp dword ptr ds:[edi-4],ebx
00B65E56  ^ 0F85 49FEFFFF   jnz 00B65CA5
00B65E5C    EB 03           jmp short 00B65E61 ;F2设断
00B65E5E    D6              salc
00B65E5F    D6              salc

00B65E5C设断后,Shift+f9,run到此处取消断点
向上拉至magic jmp的地址,并撤消选择
ALT+M
地址=01001000               ;在此段F2下断点,SHIFT+F9,run
大小=00008000
Owner=NOTEPAD
区段=.text
类型=Imag 01001002
访问=R
初始访问=RWE
按右键点击”设置记忆体访问断点(A)”
重点来了
00B71A88    8302 49         add dword ptr ds:[edx],49
00B71A8B    46              inc esi
00B71A8C    BA 6B73B671     mov edx,71B6736B
00B71A91    06              push es
00B71A92    B3 BE           mov bl,0BE
00B71A94    2D C7AF1651     sub eax,5116AFC7
00B71A99    45              inc ebp
00B71A9A    AE              scas byte ptr es:[edi]
00B71A9B    0A67 9C         or ah,byte ptr ds:[edi-64]
00B71A9E    8B2CE4          mov ebp,dword ptr ss:[esp]
00B71AA1    5D              pop ebp
00B71AA2    29A3 29A7EEC1   sub dword ptr ds:[ebx+C1EEA729],>
00B71AA8    60              pushad
红海一片,似我的鲜血
OD的左下角出现‘被?#123;试程序无法处理异常’
按shift+F9会变成程序已终止,退出代码C000005
上述是我用的第一个方法,一直卡在红海这里….恨啊
我又找到用初开始用BP GetModuleHandleA+5下断的方式如下
1.  一样乎略以下几个错误
C0000005 (ACCESS VIOLATION)
C0000008 (INVALID HANDLE)
C000001D (ILLEGAL INSTRUCTION)
C000001E (INVALID LOCK SEQUENCE)
C0000096 (PRIVILEGED INSTRUCTION)
2.  下断BP GetModuleHandleA+5,Shift+F9 RUN
堆栈变化如下
0007FFC4   7C816FD7  返回到 kernel32.7C816FD7
0007FFC8   7C930738  ntdll.7C930738
第一次
0007FF0C   0007FF98
0007FF10   0104730B  返回到 NOTEPAD.0104730B 来自 kernel32.GetModuleHandleA
0007FF14   00000000
第二次
0007F710  /0007F778
0007F714  |01031EF3  返回到 NOTEPAD.01031EF3 来自 kernel32.GetModuleHandleA
第三次
00079500  |00B76DF3  返回到 00B76DF3 来自 kernel32.GetModuleHandleA
00079504  |00B8BC1C  ASCII "kernel32.dll"
00079508  |00B8CEC4  ASCII "VirtualAlloc"
第四次
00079500  |00B76E10  返回到 00B76E10 来自 kernel32.GetModuleHandleA
00079504  |00B8BC1C  ASCII "kernel32.dll"
00079508  |00B8CEB8  ASCII "VirtualFree"
第五次
00079264  |00B65CE1  返回到 00B65CE1 来自 kernel32.GetModuleHandleA
00079268  |000793B4  ASCII "kernel32.dll"
取消断点,ALT+F9返回

00B65CE1    8B0D AC40B900   mov ecx,dword ptr ds:[B940AC]
00B65CE7    89040E          mov dword ptr ds:[esi+ecx],eax
00B65CEA    A1 AC40B900     mov eax,dword ptr ds:[B940AC]
00B65CEF    391C06          cmp dword ptr ds:[esi+eax],ebx
00B65CF2    75 16           jnz short 00B65D0A
00B65CF4    8D85 B4FEFFFF   lea eax,dword ptr ss:[ebp-14C]
00B65CFA    50              push eax
00B65CFB    FF15 BC62B800   call dword ptr ds:[B862BC]       ; kernel32.LoadLibraryA
00B65D01    8B0D AC40B900   mov ecx,dword ptr ds:[B940AC]
00B65D07    89040E          mov dword ptr ds:[esi+ecx],eax
00B65D0A    A1 AC40B900     mov eax,dword ptr ds:[B940AC]
00B65D0F    391C06          cmp dword ptr ds:[esi+eax],ebx
00B65D12    0F84 2F010000   je 00B65E47 ;magic jump(改为JMP)
00B65D18    33C9            xor ecx,ecx
00B65D1A    8B07            mov eax,dword ptr ds:[edi]
00B65D1C    3918            cmp dword ptr ds:[eax],ebx
00B65D1E    74 06           je short 00B65D26
3.  ALT+M
记忆体断点法,直达OEP
地址=01001000               ;在此段F2下断点,SHIFT+F9,run
大小=00008000
Owner=NOTEPAD
区段=.text
类型=Imag 01001002
访问=R
初始访问=RWE
00B71A7C    F62D AA0D4E34   imul byte ptr ds:[344E0DAA]
00B71A82    F3:             prefix rep:
00B71A83    8E32            mov seg?,word ptr ds:[edx]       ; 不明确的段位寄存器
00B71A85    16              push ss
00B71A86    AB              stos dword ptr es:[edi]
00B71A87    213B            and dword ptr ds:[ebx],edi
00B71A89    89D9            mov ecx,ebx
00B71A8B    E5 E7           in eax,0E7
00B71A8D    0181 8E1B889C   add dword ptr ds:[ecx+9C881B8E],>
00B71A93    B2 5B           mov dl,5B
00B71A95    4C              dec esp
@@又一片红海了
这是为什么?
找了蛮多资料,总是失败于红海,应该是我没用心去理解
希望大大们指出我操作错误的地方?
请指教@@

附上调试的NOTEPAD

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
什么叫红海
2006-12-9 23:30
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
回楼上的,楼主说的红海是壳的可擦写区域!
2006-12-10 09:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4



补上二张图,分别是方法1和方法2出现的红海@@
2006-12-13 15:30
0
游客
登录 | 注册 方可回帖
返回
//