首页
社区
课程
招聘
Execyptor脱壳脚本
发表于: 2007-3-7 16:22 38453

Execyptor脱壳脚本

2007-3-7 16:22
38453

Just for test~

/*
Script written by okdodo  2007/03
Tested for execryptor v2.24/v2.25

Ollyice: Ignore all exceptions (add 0EEDFADE,C0000005,C000001E)
HideOD : Check HideNtDebugBit and ZwQueryInformationProcess(method2)

Test Environment : Ollyice 1.1 + HideOD   
                   ODBGScript 1.51 under WINXP
Thanks :
         kanxue     - author of HideOD      
         hnhuqiong  - author of ODbgScript 1.51
*/

data:
    var hInstance
    var codeseg
    var vmseg
    var ep
    var oep
    var esptmp
    var _esp
    var iat_start
    var iat_end
    var iat_cur
    var addr
    var c_gpa
    var ibase
    var iend
    var temp
    var tmp
    var SBM
    var TOA
    var mbase
    var msize

code:
    bphwcall
    gpa "SetBkMode","GDI32.dll"
    mov SBM,$RESULT
    REV SBM
    mov SBM,$RESULT
    itoa SBM
    gpa "TextOutA","GDI32.dll"
    mov TOA,$RESULT
    REV TOA
    mov TOA,$RESULT
    itoa TOA

    gpa "VirtualFree","kernel32.dll"
    bphws $RESULT,"x"
    run
    bphwc $RESULT
    rtu
    gmi eip,MODULEBASE
    mov hInstance,$RESULT
    mov temp,$RESULT
    add temp,3c
    mov temp,[temp]
    add temp,hInstance
    add temp,28
    mov temp,[temp]
    add temp,hInstance
    mov ep,temp

    bc ep

    gmemi eip,MEMORYBASE
    mov codeseg,$RESULT

    find $RESULT,#2ECC9D#
    mov [$RESULT],#2ECC90#

    gpa "EnumWindows","user32.dll"
    mov [$RESULT],#8BC09C85C09D0578563412C20800#

    gpa "CreateThread","kernel32.dll"
    find $RESULT,#FF7518#
    mov [$RESULT],#6A0490#

    gpa "ZwCreateThread","ntdll.dll"
    bp $RESULT

loop1:
    esto
    cmp eip,$RESULT
    jne loop1
    bc $RESULT
    bp ep

bpep:
    run
    cmp eip,ep
    je loop2
    jmp bpep

loop2:
    bc ep
    mov esptmp,esp
    sub esptmp,4   

    mov temp,codeseg
    sub temp,1
    gmemi temp,MEMORYBASE
    mov vmseg,$RESULT
    gmemi temp,MEMORYSIZE
    bprm vmseg,$RESULT

loop3:   
    esto
    mov tmp,eip
    mov tmp,[tmp]
    cmp tmp,992C008A
    jne loop5
    mov oep,eax
    sti
    bprm oep,1

loop4:
    esto
    cmp eip,oep
    jne loop4
    jmp iat

loop5:
    cmp esp,esptmp
    jne loop3

iat:
    bpmc
    mov oep,eip
    cmt eip,"OEP?"
    gmi eip, MODULEBASE
    mov ibase, $RESULT
    mov temp,ibase
    add temp,3C
    mov temp,[temp]
    add temp,ibase
    add temp,50
    mov iend,[temp]
    add iend,ibase
   
    mov count,0
    mov iatbase,0
    mov mbase,codeseg
   
hwloop:
    sub mbase,1
    cmp mbase,ibase
    jb regnext
    gmemi mbase,MEMORYBASE
    mov mbase,$RESULT
    gmemi msize,MEMORYSIZE
    mov msize,$RESULT
    mov temp,mbase

    cmp iatbase,0
    jne vmsegloop
    eval #{SBM}#
    find temp,$RESULT,msize
    cmp 0,$RESULT
    je findTextOutA
    gmemi $RESULT,MEMORYBASE
    mov iatbase,$RESULT
    jmp vmsegloop

findTextOutA:
    cmp iatbase,0
    jne vmsegloop
    eval #{TOA}#
    find temp,$RESULT,msize
    cmp 0,$RESULT
    je vmsegloop
    gmemi $RESULT,MEMORYBASE
    mov iatbase,$RESULT

vmsegloop:
    find temp,#0355FC03C28B000345FC#
    mov tmp, $RESULT
    cmp tmp,0
    je regged
    add tmp,0A
    bphws tmp,"x"
    mov temp,tmp
    mov c_gpa,tmp
    inc count
    jmp vmsegloop

regged:
    cmp count,0
    jne hwloop

regnext:
    mov mbase,codeseg

hwloop1:
    sub mbase,1
    cmp mbase,ibase
    jb @iatinit
    gmemi mbase,MEMORYBASE
    mov mbase,$RESULT
    mov temp,mbase

    cmp iatbase,0
    jne vmsegloop1
    eval #{SBM}#
    find temp,$RESULT,msize
    cmp 0,$RESULT
    je findTextOutA1
    gmemi $RESULT,MEMORYBASE
    mov iatbase,$RESULT
    jmp vmsegloop1

findTextOutA1:
    cmp iatbase,0
    jne vmsegloop1
    eval #{TOA}#
    find temp,$RESULT,msize
    cmp 0,$RESULT
    je vmsegloop1
    gmemi $RESULT,MEMORYBASE
    mov iatbase,$RESULT

vmsegloop1:
    find temp,#0345FC8945F48B45F4#
    mov tmp, $RESULT
    cmp tmp,0
    je hwloop1
    add tmp,3
    bphws tmp,"x"
    mov temp,tmp
    mov c_gpa,tmp
    inc count
    jmp vmsegloop1

@iatinit:
    cmp iatbase,0
    je @error
    cmp count,0
    je @error
    gmemi iatbase,MEMORYSIZE
    mov iat_end,$RESULT
    add iat_end,iatbase
    sub iat_end,4
    mov _esp,esp
    mov iat_cur,iatbase
    sub iat_cur,4
    mov count,0   

@imprec:  
    add iat_cur,4
    cmp iat_cur,iat_end
    ja @end
    mov addr,[iat_cur]
    cmp addr,0
    je @imprec
    cmp addr,ibase
    jb @imprec
    cmp count,0
    jne @next
    mov iat_start,iat_cur
    log iat_start

@next:
    cmp addr,iend
    inc count
    mov temp,iat_cur
    ja @imprec
    cmp addr,iatbase
    jae next1
    jmp next2
next1:
    cmp addr,iat_end
    jbe @end
next2:  
    mov esp,_esp
    mov eip,addr
    mov [esp],eip  
    esto   
    mov [iat_cur],eax   
    jmp @imprec

@end:
    bphwcall
    mov iat_end,temp
    log iat_end
    mov eip,oep
    eval "IAT Start Address: {iat_start}   IAT End Address: {iat_end}"
    msg $RESULT   
    msg "Script ends ok!  Find the OEP manually and dump it~"
    ret

@error:
    bphwcall
    msg "ERROR!"
    ret


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

收藏
免费 7
支持
分享
最新回复 (83)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
猛男
2007-3-7 16:23
0
雪    币: 170
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
马上下载来测试!
测试运行脚本后一下就跑到OEP了!
2007-3-7 16:26
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
最初由 shoooo 发布
猛男




手动修复IAT太麻烦  就写了这个东西
没多少程序可以测试,只能先这样了
2007-3-7 16:26
0
雪    币: 154
活跃值: (80)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
学习
2007-3-7 16:39
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
6
强贴必留名!
2007-3-7 16:50
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
7
测试了3个程序
有2个在脚本下跑起来了
有一个ExeCryptor2.2.50可以到伪OEP停下来了,没到真正的OEP[真正的OEP才被抽了几个字节]
填写了IAT Start和END后 就没反映
2007-3-7 17:47
0
雪    币: 136
活跃值: (429)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
8
强,  下个来测试一下。

7C92D7D2 >  B8 35000000     mov     eax, 35----停于此,没反应oep都没跑到
7C92D7D7    BA 0003FE7F     mov     edx, 7FFE0300
7C92D7DC    FF12            call    dword ptr [edx]

2007-3-7 17:50
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
收藏,纪念.
2007-3-7 17:51
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
10
给你一个全自动IAT的提示:

Execyptor有一些DLL的IAT并不加密,你如果搜集多一些加壳软件,就明白常用的GDI32.dll,以及OLE32.dll并不加密,取一下常用API的地址,然后find 内存,找到了就是IAT所在的地址段.

有些要区别对待,VC的最容易搞,它的IAT排列是整整齐齐的.
BC和DEPHI要麻烦点,IAT间空格很随机.

而加密IAT的地址在虚拟机段内,做一个对比搜索,就可以得出全IAT范围,

新版的1.52有些功能能很容易实现它,兄弟动手,给大家丰衣足食
2007-3-7 17:56
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
11
本来在写自动IAT,最近时间有点紧张,给一个我没有成形的脚本,兄弟完成它..

getbaseinfo:                                      //获得程序信息
gmi eip,MODULEBASE
mov MODULE_BASE,$RESULT
gmi eip,MODULESIZE
mov MODULE_SIZE,$RESULT
mov MODULE_END,MODULE_BASE
add MODULE_END,MODULE_SIZE

findSetBkMode:                                    //为了自动获得IAT信息,我们取2个函数,来
                                                  //判断IAT的地址范围
gpa "SetBkMode","GDI32.dll"
mov SBM,$RESULT
REV SBM
mov SBM,$RESULT
itoa SBM
eval #{SBM}#
find MODULE_BASE,$RESULT,MODULE_SIZE
cmp 0,$RESULT
je findTextOutA
gmemi $RESULT,MEMORYBASE                        //找到则取模块信息
mov iatbase,$RESULT
jmp IAT

findTextOutA:
gpa "TextOutA","GDI32.dll"
mov TOA,$RESULT
REV TOA
mov TOA,$RESULT
itoa TOA
eval #{TOA}#
find MODULE_BASE,$RESULT,MODULE_SIZE
cmp 0,$RESULT
je noautoiat
gmemi $RESULT,MEMORYBASE
mov iatbase,$RESULT
jmp IAT

IAT:
eval "IATbase={iatbase}"
log $RESULT

iatstart:
mov iatstart,iatbase

mov iatadr,iatstart
sub iatadr,4

findiatend:  
add iatadr,4
cmp [iatadr],0
jne findiatend
add iatadr,4
cmp [iatadr],0
jne findiatend

mov iatend,iatadr
sub iatend,4
log iatend
mov iatsize,iatend
sub iatsize,iatstart
log iatsize
2007-3-7 18:35
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
都是高手呀,瞻仰中...
2007-3-7 18:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
强帖留名..
2007-3-7 18:45
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
最初由 hnhuqiong 发布
给你一个全自动IAT的提示:

Execyptor有一些DLL的IAT并不加密,你如果搜集多一些加壳软件,就明白常用的GDI32.dll,以及OLE32.dll并不加密,取一下常用API的地址,然后find 内存,找到了就是IAT所在的地址段.

有些要区别对待,VC的最容易搞,它的IAT排列是整整齐齐的.
........


刚下了你的ODBGSCRIPT1.52   
我完善一下~

真实oep由于编译器不同情况有区别,就留给大家自己找了~

这个脚本主要针对IAT自动修复,刚看了下execryptor v2.39
有点小小的区别,完善后再给大家测试
2007-3-7 19:22
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
已更新 请大家测试
如果脚本运行过程中没反应 请按Shift+F9手动越过SEH~
2007-3-7 21:57
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
16
最初由 okdodo 发布
已更新 请大家测试
如果脚本运行过程中没反应 请按Shift+F9手动越过SEH~



跟了下脚本
第1个IAT修复完后 在231行出错
2007-3-7 22:08
0
雪    币: 250
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
试了一个,好用
2007-3-7 23:42
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
最初由 wynney 发布
跟了下脚本
第1个IAT修复完后 在231行出错


IAT修复关键位置跟EXEC版本有关,修正了一下,麻烦再测试看看
2007-3-8 11:37
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
太强了,收藏,我也可以脱Execyptor了,哈哈.
2007-3-8 12:59
0
雪    币: 12
活跃值: (1895)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
太强了,收藏
2007-3-8 13:35
0
雪    币: 159
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
2007-3-8 13:57
0
雪    币: 159
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
怎么回事,出现上面的问题
2007-3-8 13:58
0
雪    币: 333
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wan
23
马上收下试用,感谢!
2007-3-8 16:34
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
24
OK了 对付2.24/2.25很好用:)
2007-3-8 16:44
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
25
学习!!!
2007-3-8 19:34
0
游客
登录 | 注册 方可回帖
返回
//