首页
社区
课程
招聘
[求助]Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolwork
发表于: 2007-7-11 15:40 4358

[求助]Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolwork

2007-7-11 15:40
4358
dll下载地址:

载入OD:
00B60957 >/$  55            PUSH EBP
00B60958  |.  8BEC          MOV EBP,ESP
00B6095A  |.  53            PUSH EBX
00B6095B  |.  8B5D 08       MOV EBX,DWORD PTR SS:[EBP+8]
00B6095E  |.  56            PUSH ESI
00B6095F  |.  8B75 0C       MOV ESI,DWORD PTR SS:[EBP+C]
00B60962  |.  57            PUSH EDI
00B60963  |.  8B7D 10       MOV EDI,DWORD PTR SS:[EBP+10]
00B60966  |.  85F6          TEST ESI,ESI
00B60968  |.  75 09         JNZ SHORT For3G.00B60973
00B6096A  |.  833D 7CC6B700>CMP DWORD PTR DS:[B7C67C],0
00B60971  |.  EB 26         JMP SHORT For3G.00B60999
00B60973  |>  83FE 01       CMP ESI,1
00B60976  |.  74 05         JE SHORT For3G.00B6097D
……
……

====================================================
下断BP GetModuleHandleA+5    SHIFT+F9
到这:
7C826409    837D 08 00      CMP DWORD PTR SS:[EBP+8],0
7C82640D  ^ 0F84 3FC7FFFF   JE kernel32.7C822B52
7C826413    FF75 08         PUSH DWORD PTR SS:[EBP+8]
7C826416    E8 495C0000     CALL kernel32.7C82C064
7C82641B    85C0            TEST EAX,EAX
7C82641D    74 08           JE SHORT kernel32.7C826427
7C82641F    FF70 04         PUSH DWORD PTR DS:[EAX+4]
7C826422    E8 AEFFFFFF     CALL kernel32.GetModuleHandleW
7C826427    5D              POP EBP
7C826428    C2 0400         RETN 4
7C82642B    90              NOP
……
……
===============================================

继续SHIFT+F9,从堆栈找返回时机:
0006954C  /000697EC
00069550  |00D852CA  返回到 00D852CA 来自 kernel32.GetModuleHandleA
00069554  |000696A0  ASCII "kernel32.dll"
00069558  |0006E9BC
0006955C  |8666D38C

==============================================
这时取消断点,ALT+F9返回:
00D852CA    8B0D 3C1EDB00   MOV ECX,DWORD PTR DS:[DB1E3C]
00D852D0    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00D852D3    A1 3C1EDB00     MOV EAX,DWORD PTR DS:[DB1E3C]
00D852D8    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
00D852DB    75 16           JNZ SHORT 00D852F3
00D852DD    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
00D852E3    50              PUSH EAX
00D852E4    FF15 B842DA00   CALL DWORD PTR DS:[DA42B8]               ; kernel32.LoadLibraryA
00D852EA    8B0D 3C1EDB00   MOV ECX,DWORD PTR DS:[DB1E3C]
00D852F0    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00D852F3    A1 3C1EDB00     MOV EAX,DWORD PTR DS:[DB1E3C]
00D852F8    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
00D852FB    0F84 2F010000   JE 00D85430     ================》魔法跳在这
00D85301    33C9            XOR ECX,ECX
00D85303    8B07            MOV EAX,DWORD PTR DS:[EDI]
00D85305    3918            CMP DWORD PTR DS:[EAX],EBX
……
……
=====================================================

魔法跳修改为 JMP 00D85430     后,下断点bp GetTickCount,Shift+F9运行2次
到这:
7C82BB9D >^\EB C6           JMP SHORT kernel32.7C82BB65
7C82BB9F    90              NOP
7C82BBA0    90              NOP
7C82BBA1    90              NOP
7C82BBA2    90              NOP
7C82BBA3    90              NOP
7C82BBA4    3B0D 48D1887C   CMP ECX,DWORD PTR DS:[7C88D148]
7C82BBAA    0F85 C2D30300   JNZ kernel32.7C868F72
7C82BBB0    F7C1 0000FFFF   TEST ECX,FFFF0000
7C82BBB6    0F85 B6D30300   JNZ kernel32.7C868F72
7C82BBBC    C3              RETN
7C82BBBD    90              NOP
……
……
=================================================
取消断点,ALT+F9返回到这:
00D9AD75    2B85 A0D4FFFF   SUB EAX,DWORD PTR SS:[EBP-2B60]          ; Formi.009D233B
00D9AD7B    8B8D A4D4FFFF   MOV ECX,DWORD PTR SS:[EBP-2B5C]
00D9AD81    6BC9 32         IMUL ECX,ECX,32
00D9AD84    81C1 D0070000   ADD ECX,7D0
00D9AD8A    3BC1            CMP EAX,ECX
00D9AD8C    76 07           JBE SHORT 00D9AD95
00D9AD8E    C685 34D9FFFF 0>MOV BYTE PTR SS:[EBP-26CC],1
00D9AD95    83BD E4D7FFFF 0>CMP DWORD PTR SS:[EBP-281C],0
00D9AD9C    0F85 8A000000   JNZ 00D9AE2C
00D9ADA2    0FB685 90D4FFFF MOVZX EAX,BYTE PTR SS:[EBP-2B70]
00D9ADA9    85C0            TEST EAX,EAX
00D9ADAB    74 7F           JE SHORT 00D9AE2C
00D9ADAD    6A 00           PUSH 0
00D9ADAF    8B85 94D4FFFF   MOV EAX,DWORD PTR SS:[EBP-2B6C]
00D9ADB5    C1E0 02         SHL EAX,2
00D9ADB8    50              PUSH EAX
00D9ADB9    8B85 0CD8FFFF   MOV EAX,DWORD PTR SS:[EBP-27F4]
00D9ADBF    0385 8CD4FFFF   ADD EAX,DWORD PTR SS:[EBP-2B74]
00D9ADC5    50              PUSH EAX
00D9ADC6    E8 B51C0000     CALL 00D9CA80
00D9ADCB    83C4 0C         ADD ESP,0C
00D9ADCE    8B85 94D4FFFF   MOV EAX,DWORD PTR SS:[EBP-2B6C]
00D9ADD4    C1E0 02         SHL EAX,2
00D9ADD7    50              PUSH EAX
=================================
按照黑鹰三人行的脱2。51-3。XXDLL教程,这时应该可以搜索到一段命令,但这个DLL无法搜索到:
PUSH EAX
XCHG CX,CX
POP EAX
STC
也就无法查找到重定位表了,用零位论坛的那个帖子不行,在改完魔法跳,内存reloc区段下断,F2,F9运行就会跑飞了。
这个Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks可能加壳深度很深,用常规方式不能脱掉。有谁有兴趣的指导一下啊。
QQ  1172031

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
另外我借鉴了jameshero发表的帖子,在改JMP前过程一样,之后他的原文如下:

原文部分:
(注意:下面的方法和FLY的不太一样)

现在我们Alt+M打开内存查看窗口,看到这个DLL的给个区段
----------------------------------------------------------------
00870000   00001000   KingFor3   00870000 (itself)     PE header //★  这里下 内存访问 断点
00871000   0008B000   KingFor3   00870000  CODE
008FC000   00002000   KingFor3   00870000  DATA      
008FE000   00001000   KingFor3   00870000  BSS      
----------------------------------------------------------------

现在我们F9运行程序,中断在下面地址
----------------------------------------------------------------
00B585A7    0348 3C               add ecx,dword ptr ds:[eax+3C] 〈------中断在这
00B585AA    898D FCD7FFFF         mov dword ptr ss:[ebp-2804],ecx
00B585B0    A1 C8DFB600           mov eax,dword ptr ds:[B6DFC8]
00B585B5    8985 CCAEFFFF         mov dword ptr ss:[ebp+FFFFAECC],eax
00B585BB    8B85 CCAEFFFF         mov eax,dword ptr ss:[ebp+FFFFAECC]
00B585C1    8985 0CD8FFFF         mov dword ptr ss:[ebp-27F4],eax
00B585C7    8B85 FCD7FFFF         mov eax,dword ptr ss:[ebp-2804]
00B585CD    8B40 50               mov eax,dword ptr ds:[eax+50]
----------------------------------------------------------------

现在我们CTRL+S在整个区段搜索

mov edx,dword ptr ds:[ecx+C]
add edx,dword ptr ds:[ecx+8]
找到下面的地址
----------------------------------------------------------------
00B5E1D7    8D74C1 D8             lea esi,dword ptr ds:[ecx+eax*8-28]
00B5E1DB    33C0                  xor eax,eax
00B5E1DD    3BCE                  cmp ecx,esi
00B5E1DF    73 11                 jnb short 00B5E1F2
00B5E1E1    8B51 0C               mov edx,dword ptr ds:[ecx+C]〈--------找到这
00B5E1E4    0351 08               add edx,dword ptr ds:[ecx+8]〈-------在这下断
00B5E1E7    3BD0                  cmp edx,eax
----------------------------------------------------------------

在上面地址下断以后,ALT+M取消内存断点,F9运行断下
继续F9,会在这多次中断,看“寄存器”窗口的ECX 00870298 ASCII ".reloc"
当出现这个的时候,再看 下面,这个时候显示的就是重定位表RVA和大小
现在我们记下来,取消断点。

----------------------------------------------------------------
ds:[008702A0]=00009E78  〈----大小
edx=00092000  〈-------重定位RVA
----------------------------------------------------------------

现在我们ALT+M
----------------------------------------------------------------
00870000   00001000   KingFor3   00870000 (itself)     PE header
00871000   0008B000   KingFor3   00870000  CODE //★  这里下 内存访问 断点
008FC000   00002000   KingFor3   00870000  DATA      
008FE000   00001000   KingFor3   00870000  BSS      
---------------------------------------------------------------

继续F9就到了OEP   注明:本人就是在这里出问题的,无法按照他的方法达到OEP,运行程序就跑死掉了。
---------------------------------------------------------------
008FBBAC    55                    push ebp     〈------OEP
008FBBAD    8BEC                  mov ebp,esp
008FBBAF    83C4 C4               add esp,-3C
008FBBB2    B8 A4B88F00           mov eax,KingFor3.008FB8A4
008FBBB7    E8 88A8F7FF           call KingFor3.00876444
008FBBBC    6A 00                 push 0
008FBBBE    E8 8DBEF8FF           call KingFor3.00887A50                    ; jmp to ole32.CoInitialize
008FBBC3    E8 2C6FF7FF           call KingFor3.00872AF4
008FBBC8    E8 93F9FFFF           call KingFor3.008FB560
008FBBCD    E8 CA84F7FF           call KingFor3.0087409C
008FBBD2    8BC0                  mov eax,eax
----------------------------------------------------------------

用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择这个dll,然后完整脱壳,得到dumped.dll。

(原文完)

我拿3。XX-4。XX脱壳机下手,自动脱下后PEID查壳居然是PE-Armor V0.7X -> hying *,狂晕。现在进退两难,求高手指点。
2007-7-11 23:03
0
游客
登录 | 注册 方可回帖
返回
//