首页
论坛
专栏
课程

Armadillo 3。78 - SiliconRealms Tool

2005-7-18 14:15 12648

Armadillo 3。78 - SiliconRealms Tool

2005-7-18 14:15
12648
下载地址:http://61.153.193.236/download/webmediaV5.0.rar

注册码:1AEE-98B4
abc
3768-9599-9057-0633
作者声明:加入FLY学院的第一片文章。没有别的目的

加壳方式:Armadillo 3。78 - SiliconRealms Toolworks

工具调试环境:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6

忽略所有异常隐藏od

00454000 P>  60                  pushad
00454001     E8 00000000         call Patch-2.00454006
00454006     5D                  pop ebp
00454007     50                  push eax
00454008     51                  push ecx
00454009     0FCA                bswap edx
0045400B     F7D2                not edx
0045400D     9C                  pushfd
0045400E     F7D2                not edx
00454010     0FCA                bswap edx

BP OpenMutexA 下断SHIIFT+F9
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
看堆栈
0012D784   0042B9B8   /CALL 到 OpenMutexA 来自 Patch-2.0042B9B2
0012D788   001F0001   |Access = 1F0001
0012D78C   00000000   |Inheritable = FALSE
0012D790   0012DDC4   \MutexName = "9C4::DAACE00BDE"

Ctrl+G:401000  键入以下代码

00401000     60                  pushad
00401001     9C                  pushfd
00401002     68 B4FB1200         push 12DDC4栈里看到的值
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处新建起源,F9运行,再次中断在OpenMutexA处。
取消断点
Ctrl+G:401000 撤消选择
下断:BP GetModuleHandleA+5

7C80B52E     837D 08 00          cmp dword ptr ss:[ebp+8],0//到这里
7C80B532     74 18               je short kernel32.7C80B54C
7C80B534     FF75 08             push dword ptr ss:[ebp+8]
7C80B537     E8 682D0000         call kernel32.7C80E2A4
7C80B53C     85C0                test eax,eax
7C80B53E     74 08               je short kernel32.7C80B548
7C80B540     FF70 04             push dword ptr ds:[eax+4]
7C80B543     E8 F4300000         call kernel32.GetModuleHandleW
7C80B548     5D                  pop ebp
7C80B549     C2 0400             retn 4

看堆栈
0012CE4C  /0012CE84
0012CE50  |5D175394   返回到 5D175394 来自 kernel32.GetModuleHandleA
0012CE54  |5D1753E0   ASCII "kernel32.dll"

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

0012D724  /0012D78C
0012D728  |0042AAF3   返回到 Patch-2.0042AAF3 来自 kernel32.GetModuleHandleA
0012D72C  |00000000

00127A68  /0012CD94
00127A6C  |00AC530E   返回到 00AC530E 来自 kernel32.GetModuleHandleA
00127A70  |00AD8BAC   ASCII "kernel32.dll"
00127A74  |00AD9CC4   ASCII "VirtualAlloc"

00127A68  /0012CD94
00127A6C  |00AC532B   返回到 00AC532B 来自 kernel32.GetModuleHandleA
00127A70  |00AD8BAC   ASCII "kernel32.dll"
00127A74  |00AD9CB8   ASCII "VirtualFree"

001277CC  /00127A6C
001277D0  |00AB4F9E   返回到 00AB4F9E 来自 kernel32.GetModuleHandleA
001277D4  |00127920   ASCII "kernel32.dll"

取消断点,ALT+F9返回
00AB4F9E     8B0D AC0DAE00       mov ecx,dword ptr ds:[AE0DAC]
00AB4FA4     89040E              mov dword ptr ds:[esi+ecx],eax
00AB4FA7     A1 AC0DAE00         mov eax,dword ptr ds:[AE0DAC]
00AB4FAC     391C06              cmp dword ptr ds:[esi+eax],ebx
00AB4FAF     75 16               jnz short 00AB4FC7
00AB4FB1     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
00AB4FB7     50                  push eax
00AB4FB8     FF15 B432AD00       call dword ptr ds:[AD32B4]               ; kernel32.LoadLibraryA
00AB4FBE     8B0D AC0DAE00       mov ecx,dword ptr ds:[AE0DAC]
00AB4FC4     89040E              mov dword ptr ds:[esi+ecx],eax
00AB4FC7     A1 AC0DAE00         mov eax,dword ptr ds:[AE0DAC]
00AB4FCC     391C06              cmp dword ptr ds:[esi+eax],ebx
00AB4FCF     0F84 2F010000       je 00AB5104//改为JMP
00AB4FD5     33C9                xor ecx,ecx
00AB4FD7     8B07                mov eax,dword ptr ds:[edi]
00AB4FD9     3918                cmp dword ptr ds:[eax],ebx
00AB4FDB     74 06               je short 00AB4FE3
00AB4FDD     41                  inc ecx
00AB4FDE     83C0 0C             add eax,0C
00AB4FE1   ^ EB F6               jmp short 00AB4FD9
00AB4FE3     8BD9                mov ebx,ecx
00AB4FE5     C1E3 02             shl ebx,2
00AB4FE8     53                  push ebx
00AB4FE9     E8 A4DA0100         call 00AD2A92                            ; jmp to msvcrt.operator new

下内存访问断点401000处 shift+f9 一片红色呵呵
00401000     68 0F304000         push Patch-2.0040300F//OEP 在这儿用LordPE纠正ImageSize后完全DUMP这个进程
00401005     E8 0A020000         call Patch-2.00401214                    ; jmp to kernel32.GetStartupInfoA
0040100A     68 53304000         push Patch-2.00403053
0040100F     68 0F304000         push Patch-2.0040300F
00401014     6A 00               push 0
00401016     6A 00               push 0
00401018     6A 24               push 24
0040101A     6A 00               push 0
0040101C     6A 00               push 0
0040101E     6A 00               push 0
00401020     6A 00               push 0
运行ImportREC 1.6,选择这个进程。把OEP改为1000,点IT AutoSearch,CUT掉无效函数。FixDump,正常运行!
  
by:夜凉如水

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (18)
ww990 1 2005-7-18 16:33
2
0
支持一下
学习 2005-7-18 16:39
3
0
看堆栈
0012CE4C  /0012CE84
0012CE50  |5D175394   返回到 5D175394 来自 kernel32.GetModuleHandleA
0012CE54  |5D1753E0   ASCII "kernel32.dll"

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

0012D724  /0012D78C
0012D728  |0042AAF3   返回到 Patch-2.0042AAF3 来自 kernel32.GetModuleHandleA
0012D72C  |00000000

00127A68  /0012CD94
00127A6C  |00AC530E   返回到 00AC530E 来自 kernel32.GetModuleHandleA
00127A70  |00AD8BAC   ASCII "kernel32.dll"
00127A74  |00AD9CC4   ASCII "VirtualAlloc"

00127A68  /0012CD94
00127A6C  |00AC532B   返回到 00AC532B 来自 kernel32.GetModuleHandleA
00127A70  |00AD8BAC   ASCII "kernel32.dll"
00127A74  |00AD9CB8   ASCII "VirtualFree"

001277CC  /00127A6C
001277D0  |00AB4F9E   返回到 00AB4F9E 来自 kernel32.GetModuleHandleA
001277D4  |00127920   ASCII "kernel32.dll"

有什么作用?????
夜凉如水 3 2005-7-18 17:34
4
0
看返回时机啊 你还是多看看基础知识
学习 2005-7-18 21:39
5
0
下内存访问断点401000处 shift+f9 一片红色呵呵
00401000     68 0F304000         push Patch-2.0040300F//OEP 在这儿用LordPE纠正ImageSize后完全DUMP这个进程

“LordPE纠正ImageSize” ImageSize纠正为多少?

freefree 2005-7-18 21:43
6
0
解压缩密码是?
夜凉如水 3 2005-7-19 07:59
7
0
压缩密码 软件下载的地方又介绍
okpj 2 2005-7-19 11:12
8
0
我的一调试就退出?为何?
夜凉如水 3 2005-7-19 12:35
9
0
C0000005(ACCESS VIOLATION), C000001D(ILLEGAL INSTRUCTION)
C000001E(INVALID LOCK SEQUENCE), C0000096(PRIVILEGED INSTRUCTION)

忘了写了 加入这个四个异常
e5v 2005-7-19 13:03
10
0
   4.1 版比  3.8 还好破  
okpj 2 2005-7-19 13:35
11
0
我的调试后变成这样,郁闷
xizhu 2005-7-21 22:44
12
0
"下内存访问断点401000处",是指ctrl+G到401000,然后右键下内存访问断点吗?
情狼 2005-7-22 09:38
13
0
楼主,下载地址已经失败了?
另外请问题,在没有注册码的情况下,能不能用你的方法来脱掉此文件的壳?

哦,记起了一篇文章,可以在内存将本机的机器码修改成楼主给出的机器码。
sywpl 2005-7-22 09:57
14
0
最初由 情狼 发布
楼主,下载地址已经失败了?
另外请问题,在没有注册码的情况下,能不能用你的方法来脱掉此文件的壳?

我也在为这个事情头疼呢,,
如果没有注册码的情况下是找不到VirtualFree后面调用Kernel32库内函数也就是没有办法返回到我们想要找到的Magic Jump位置的.晕....
http://bbs.pediy.com/showthread.php?s=&threadid=15346
曾经 2005-7-22 10:15
15
0
原软件下载不到。能不能给出中文名称呢?
sywpl 2005-7-22 10:21
16
0
如果有试用机会或者有注册码我想可以使用如下脚本
脚本是由AvAtAr大虾写的可以参考一下,其流程和楼主的一样.
软件条件 OD 1.10
         OllyScript 0.92
         windowsXP SP2
用户自定义异常
C0000005(ACCESS VIOLATION)
C000001D(ILLEGAL INSTRUCTION)
C000001E(INVALID LOCK SEQUENCE)
C0000096(PRIVILEGED INSTRUCTION)
(当然是要忽略的..)
  
/*
.:TEAM RESURRECTiON:.
Armadillo Standard Script by AvAtAr//stephenteh
Tested on WinXP Pro SP2, OllyDbg v1.10, OllyScript v0.92
NOTES:
- Remove all hardware breakpoints before run the script.
- Add the following custom exceptions on OllyDbg:
C0000005(ACCESS VIOLATION), C000001D(ILLEGAL INSTRUCTION)
C000001E(INVALID LOCK SEQUENCE), C0000096(PRIVILEGED INSTRUCTION)
*/

var OpenMutexA
var CreateMutexA
var GetModuleHandleA
var VirtualAlloc
var CreateThread
var JumpLocation
var JumpLength
var OEP

gpa "OpenMutexA", "kernel32.dll"
mov OpenMutexA, $RESULT
gpa "CreateMutexA", "kernel32.dll"
mov CreateMutexA, $RESULT
gpa "GetModuleHandleA", "kernel32.dll"
mov GetModuleHandleA, $RESULT
gpa "VirtualAlloc", "kernel32.dll"
mov VirtualAlloc, $RESULT
gpa "CreateThread", "kernel32.dll"
mov CreateThread, $RESULT
/* 调试开始下断点OpenMutexA 目的就是在创建双进程的时候取消其双进程
楼主上写在401000位置的代码在下面就是,一样的哦 */
bp OpenMutexA
esto
exec
PUSHAD
PUSHFD
PUSH EDX
XOR EAX,EAX
PUSH EAX
PUSH EAX
CALL CreateMutexA
POPFD
POPAD
JMP OpenMutexA
ende
bc OpenMutexA

bphws GetModuleHandleA, "x"
label1:
esto
cmp eax,VirtualAlloc
jne label1
esto
bphwc GetModuleHandleA
rtu
/* 寻找魔术跳转 */
find eip, #0F84????????#
mov JumpLocation, $RESULT
mov JumpLength, JumpLocation
add JumpLength, 2
mov JumpLength, [JumpLength]
inc JumpLength
mov [JumpLocation], 0E9
inc JumpLocation
mov [JumpLocation], JumpLength

bp CreateThread
run
cob
bc CreateThread
rtu
rtr
sti
/* 寻找OEP */
find eip, #2BF9FFD7#
mov OEP, $RESULT
add OEP, 2
bp OEP
run
bc OEP
sti
cmt eip, "<- OEP"
msg "已经到达OEP,Dump出来吧,剩下的就是修复IAT了 =)"
ret
酷酷 2005-7-22 10:23
17
0
楼主大人,我也下不了哦

支持原创
kkyyff 2005-9-14 12:57
18
0
参照了夜凉如水的帖子后 收益非浅。
初学破解,初来看雪,不懂规矩,不知道这样问,可否。
/////////////////////////////////

我们欢迎这样的帖子:  
当你遇到问题,并难以解答时,把遇到的详细情况写出来,我们大家集体解答。

/////////////////////////////////////
脱壳成功。但是。。。。脱壳后的程序不完整,。。
我用VC++重写编译后实现脱壳程序全部功能程序只有153KB,不带ICO资源。
//////////////
kkyyff 2005-9-14 13:01
19
0
游客
登录 | 注册 方可回帖
返回