首页
社区
课程
招聘
linson的eXcalibur V1.03脱壳―eXcalibur.exe 主程序
发表于: 2004-4-29 22:25 20818

linson的eXcalibur V1.03脱壳―eXcalibur.exe 主程序

fly 活跃值
85
2004-4-29 22:25
20818
       
0040B000     E9 00000000             jmp eXcalibu.0040B005//进入OD后停在这
0040B005     60                      pushad
0040B006     E8 14000000             call eXcalibu.0040B01F
       
003B0219     FFD0                    call eax ; USER32.GetForegroundWindow
003B021B     8985 A4394000           mov dword ptr ss:[ebp+4039A4],eax//返回这里
003B0221     E8 0D000000             call 003B0233
003B0233     56                      push esi
003B0234     FFD7                    call edi
003B0236     8985 94394000           mov dword ptr ss:[ebp+403994],eax; USER32.EnableWindow
003B023C     6A 00                   push 0//改为:push 1  ★
003B023E     FFB5 A4394000           push dword ptr ss:[ebp+4039A4]
003B0244     FFD0                    call eax ; USER32.EnableWindow
003B0246     E8 0A000000             call 003B0255
003B02EB     FF15 12B44000           call dword ptr ds:[<&KERNEL32.VirtualAlloc>]
003B02F1     FC                      cld
003B02F2     8BF8                    mov edi,eax
003B02F4     8BB5 3C374000           mov esi,dword ptr ss:[ebp+40373C]
003B02FA     46                      inc esi
003B02FB     B9 10000000             mov ecx,10
003B0300     E8 5E000000             call 003B0363
003B0305     85C0                    test eax,eax//目标CALL 
003B0307     74 07                   je short 003B0310//改变标志位Z=1, 使这里JMP ★
003B0309     E8 08000000             call 003B0316//linson开始破坏 :-)  Stolen Call
003B030E     E2 F0                   loopd short 003B0300
003B0310     61                      popad
003B0311     E9 BE000000             jmp 003B03D4
   
003B03D4     8BBD 98394000           mov edi,dword ptr ss:[ebp+403998]
003B03DA     85FF                    test edi,edi
003B03DC     74 0F                   je short 003B03ED
003B03DE     FF95 78394000           call dword ptr ss:[ebp+403978]; kernel32.GetCurrentThread
003B03E4     6A 00                   push 0
003B03E6     6A 00                   push 0
003B03E8     6A 11                   push 11
003B03EA     50                      push eax
003B03EB     FFD7                    call edi; ntdll.ZwSetInformationThread//不能客气,当然是NOP掉!★
003B03ED     BE B4120000             mov esi,12B4
003B03F2     85F6                    test esi,esi
003B03F4     0F84 CA050000           je 003B09C4//记住这个地址,在003B09C4处下断
003B0975     61                      popad//这里下断,F9运行断下
003B0976     3385 E0394000           xor eax,dword ptr ss:[ebp+4039E0]
003B097C     8907                    mov dword ptr ds:[edi],eax//修改
003B097E     8385 E4394000 04        add dword ptr ss:[ebp+4039E4],4
003B0985     61                      popad//找到这里
003B0986     80BD EC394000 00        cmp byte ptr ss:[ebp+4039EC],0
003B098D     75 1C                   jnz short 003B09AB
 
003B097C     61                      popad//呵呵,先来个POPAD  ★
003B097D     8907                    mov dword ptr ds:[edi],eax//正确的函数写入地址
003B097F     8385 E4394000 04        add dword ptr ss:[ebp+4039E4],4
003B0986     80BD EC394000 00        cmp byte ptr ss:[ebp+4039EC],0
003B098D     75 1C                   jnz short 003B09AB

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 11
支持
分享
最新回复 (21)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
2004-4-29 22:26
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
3
从哪里捡来了……
2004-4-29 23:21
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
最初由 forgot 发布
从哪里捡来了……


你自己发的   ;)

http://tongtian.net/pediybbs/download.php?id=2394
2004-4-29 23:27
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
最初由 fly 发布
linson的eXcalibur V1.03脱壳――eXcalibur.exe 主程序

――――――――――――――――――――――――
五、走至OEP、DUMP、完成脱壳


下断:BP VirtualFree 断下后取消断点,Alt+F9返回

   
0040B001 FF15 16B44000 call dword ptr ds:[<&KERNEL32.VirtualFree>]
0040B007 9C pushfd//返回这里




我返回后怎么到其他地方了,要搜索的二进制数也没找到?
2004-5-1 13:47
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
8成下的不是时候:)
2004-5-1 13:48
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
我返回后来到这里:

0500D08C    68 00800000             PUSH 8000
0500D091    6A 00                   PUSH 0
0500D093    FF36                    PUSH DWORD PTR DS:[ESI]
0500D095    FFD7                    CALL EDI
0500D097    FF76 04                 PUSH DWORD PTR DS:[ESI+4]
0500D09A    6A 00                   PUSH 0
2004-5-1 14:09
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
居然还会遇到什么LOCK什么的指令,说和处理器冲突,我干脆NOP掉他,然后强行Dump,然后把fly脱出来的程序的输入表粘上,再修正OEP,居然也运行了~~~~~~~~~~~~~~~~~~

最可恶的是,ImportREC居然会连fly脱出来的文件的输入表都追错,kernel32那块的全部认不出来
2004-5-1 14:31
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
9
最初由 草原猎豹 发布
居然还会遇到什么LOCK什么的指令,说和处理器冲突,我干脆NOP掉他,然后强行Dump,然后把fly脱出来的程序的输入表粘上,再修正OEP,居然也运行了~~~~~~~~~~~~~~~~~~

最可恶的是,ImportREC居然会连fly脱出来的文件的输入表都追错,kernel32那块的全部认不出来


可能你下断BP VirtualFree的时机不妥  
处理完IAT后在003B09C4处中断后再下断

ImportREC修复输入表时手动填入
OEP=00003A21,RVA=00001408,大小=000000C8


BTW:发现Ollydbg最新的1.10C版在调试中某些时候使用右键菜单会出错
2004-5-1 17:27
0
雪    币: 291
活跃值: (400)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10
最初由 fly 发布




可能你下断BP VirtualFree的时机不妥
处理完IAT后在003B09C4处中断后再下断

ImportREC修复输入表时手动填入
OEP=00003A21,RVA=00001408,大小=000000C8



BTW:发现Ollydbg最新的1.10C版在调试中某些时候使用右键菜单会出错


1、olly1.10c确有此BUG,害我抓狂
2、我跟踪的地址不一样,但代码一样
3、003B09C4处对应我的地址,断不下,遇到异常说指令和硬件冲突???????
2004-5-1 17:39
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
11
最初由 草原猎豹 发布


1、olly1.10c确有此BUG,害我抓狂
2、我跟踪的地址不一样,但代码一样
3、003B09C4处对应我的地址,断不下,遇到异常说指令和硬件冲突???????


用修改版的OD,增加忽略C000001E异常看看

0040B001     FF15 16B44000           call dword ptr ds:[<&KERNEL32.VirtualFree>]
0040B007     9C                      pushfd//返回这里


应该是返回这个地址的
2004-5-1 19:27
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
12
CPU 窗口里的地址不在 PE SECTION 范围内,
如动态申请的内存时, 不能用右键.
2004-5-1 19:37
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
13
最初由 simonzh2000 发布
CPU 窗口里的地址不在 PE SECTION 范围内,
如动态申请的内存时, 不能用右键.


Ollydbg 1.10B 应该没有这个问题
2004-5-1 20:10
0
雪    币: 234
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
一、EnableWindow 反跟踪
代码:--------------------------------------------------------------------------------
003B0233     56                      push esi
003B0234     FFD7                    call edi
003B0236     8985 94394000           mov dword ptr ss:[ebp+403994],eax; USER32.EnableWindow
003B023C     6A 00                   push 0//改为:push 1  ★
003B023E     FFB5 A4394000           push dword ptr ss:[ebp+4039A4]
003B0244     FFD0                    call eax ; USER32.EnableWindow
003B0246     E8 0A000000             call 003B0255
--------------------------------------------------------------------------------

EnableWindow这函数为何会成为反跟踪,不解?有请fly道明。。。

我这里也是XP和OD1.1b,按你的步骤一一顺序照做,到了这里出问题(出问题的地方强行Dump还是可以的):

花指令晃眼。Ctrl+B 在当前位置下搜索16进制值:9D EB 找到在0040B030处

代码:--------------------------------------------------------------------------------
0040B02D     83C4 04                 add esp,4
0040B030     9D                      popfd//下断,F9断下        [这个偶也能到达,接着就单步F7往下走。]
0040B031     EB 01                   jmp short eXcalibu.0040B034

0040B034     33C0                    xor eax,eax
0040B036     64:8F00                 pop dword ptr fs:[eax]
0040B039     83C4 0C                 add esp,0C
0040B03C     E8 01000000             call eXcalibu.0040B042

0040B042     58                      pop eax
0040B043     9D                      popfd
0040B044     61                      popad
0040B045     E8 15000000             call eXcalibu.0040B05F        [到这就出问题了,光标停在这行指令,OD说无法调试,当然下面的就无法进行下去了!]

0040B057     68 203A4000             push eXcalibu.00403A20
0040B05C     EB 01                   jmp short eXcalibu.0040B05F
--------------------------------------------------------------------------------

在0040B062处中断几次就走到OEP啦                [奇怪:fly请问你没有在0040B062处下断,为何来个“中断几次就走到OEP”?上面偶已经不能动了,在此处下断也没用]

代码:--------------------------------------------------------------------------------
0040B05F     58                      pop eax
0040B060     40                      inc eax
0040B061     50                      push eax ; eXcalibu.00403A21
0040B062     C3                      retn
//返回00403A21   飞向光明之巅!:-)
--------------------------------------------------------------------------------
2004-5-5 10:46
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
15
linson 跑哪去了?来解释一下你的 EnableWindow 反跟踪  :D


0040B045 E8 15000000 call eXcalibu.0040B05F [到这就出问题了,光标停在这行指令,OD说无法调试,当然下面的就无法进行下去了!]


都是linson惹的祸,呵呵。应该是可以的,F7走进去


在0040B062处中断几次就走到OEP啦 [奇怪:fly请问你没有在0040B062处下断,为何来个“中断几次就走到OEP”?上面偶已经不能动了,在此处下断也没用]


F7走到底循环几次就从0040B062处返回OEP了
2004-5-5 19:06
0
雪    币: 233
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
最初由 fly 发布

F7走到底循环几次就从0040B062处返回OEP了


0040B045 E8 15000000 call eXcalibu.0040B05F [到这就出问题了,光标停在这行指令,OD说无法调试,当然下面的就无法进行下去了!]
F7步进去程序就终止了.

另外,运行eXcalibur.exe 主程序经常死机...不能叫死机吧,死一个窗..呵呵,不知道这个什么问题?
2004-8-7 10:23
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
17
最初由 shaitan 发布




另外,运行eXcalibur.exe 主程序经常死机...不能叫死机吧,死一个窗..呵呵,不知道这个什么问题?

大概播放midi有问题
2004-8-7 10:30
0
雪    币: 233
活跃值: (160)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
最初由 forgot 发布

大概播放midi有问题


脱壳的程序不会有这种情况!
2004-8-7 10:47
0
雪    币: 227
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
:D 好厉害啊,学习的日子长着呢,知其然不知其所以然啊。
试了一下还真行。
2004-8-7 12:59
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20
根据fly的脱文写的脚本,仅对主程序试用成功

msg "忽略所有异常,取消所有断点"
msg "code by skylly"
dbh
bpmc
var stop1
var stop2
var stop3
var stop4
var stop5
var stop6

gpa "GetForegroundWindow", "user32.dll"
bp $RESULT
run
bc $RESULT
rtu
mov stop1,eip
add stop1,21
mov [stop1],#6A01# //窗口前置

gpa "VirtualAlloc", "kernel32.dll"
bp $RESULT
run
bc $RESULT
rtu
mov stop2,eip
add stop2,16
go stop2
mov !ZF,1//保住stolen call
mov stop3,eip
add stop3,E4
go stop3
mov [eip],#9090# //消灭反跟踪
mov stop4,eip
add stop4,5D9
mov stop5,eip
add stop5,591
bp stop5
run
bc stop5
mov [eip],#6189078385E439400004#//保住函数地址
bp stop4
run
bc stop4
gpa "VirtualFree", "kernel32.dll"
bp $RESULT
run
bc $RESULT
rtu
mov stop6,eip
add stop6,29
bp stop6
run
bc stop6
sto
sto
sto
sto
sto
sti
sto
sto
sto
sti
sto
sto
sto
sto
sti
sto
sto
sto
sto
sti
sto
sto
sto
sto
sto
sto
sto
sto
sto
sto
cmt eip,"oep,full dump!"
ret
2005-12-7 17:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
FLY的那个写代码的程序是那里来的.能不能发布一下,就是那个出现了传说中的分割线的问题
2006-9-4 15:05
0
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
22
最初由 LucIfer 发布



在你的代码中用论坛标签:
[CODE] ……  [/CODE]

另:如与主题无十分有必要的问题,请勿翻老帖。
2006-9-4 15:30
0
游客
登录 | 注册 方可回帖
返回
//