NONAME剑人 发表于 2009-8-16 21:15

【脚本更新】反JMP+CALL乱序

本帖最后由 NONAME剑人 于 2009-8-17 17:39 编辑

天哪。NP太WS了……最小保护还有乱序……看得我头大
本来想休息会,玩会ZP,还有乱序……
怒了,做了个脚本,效果不错……就是编程习惯太差,效率一般,各位海涵。

查看方法:查看--》记录

使用说明:
         1 可修改脚本里的“反汇编长度”以增长反汇编长度
!!!2 一定要使文件名中没有数字……谢谢
感谢各位朋友的支持,yangjt朋友的测试

【更新】
(实在抱歉,因为我的疏忽,导致频繁更新……)
2009.8.17
[-]当不处理CALL的时候照样处理RETN引起的BUG
2009.8.17
[+]RETN的处理
2009.8.17
[+]CALL处理强化
2009.8.17
[+]增加CALL乱序的解决办法
[-] 除去脚本结束后EAX,EBX数值改变的BUG
//////////////////////////////////////////////////
//Comment   :反JMP+CALL乱序
//Environment :WinXP SP2,OllyDbg V1.10,OllyScript V1.56
//Author      :NONAME剑人
//WebSite   :http://www.unpack.cn
//Date      :2009-08-07 16:02
//////////////////////////////////////////////////
var 反汇编长度,myeip,temp,newadd,temp2,temp3
var mystack
var eeax,eebx,eesp
var kkkk
var ifcall,calltemp
mov calltemp,0

//设置
mov 反汇编长度,30 //请自行修改
mov ifcall,1      //是否跟进CALL,0为否,1为是,请自行修改


//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!使用前请务必将程序名改为不带数字的!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//======================
//初始化操作
lc
mov myeip,eip
alloc 5
mov newadd,$RESULT
mov eeax,eax
mov eebx,ebx
mov eesp,esp
alloc 100
mov mystack,$RESULT

mov temp,mystack
add temp,100
mov esp,temp
//======================



//======================
//进入正题
redo:
opcode myeip                ;得到代码
//======================

scmp $RESULT,"EB",2         ;判断JMP
je YESJMP
scmp $RESULT,"E9",2
je YESJMP
cmp ifcall,0
je coun_1
                           
scmp $RESULT,"E8",2         ;判断CALL
je YEScall

coun_1:
jmp countinue1            ;CASE 无跳转,call


YEScall:                  ;call的单独处理
mov calltemp,1
jmp YESJMP


YESJMP:                     ;CASE 有跳转
mov temp,$RESULT_1
mov ,temp


mov temp,newadd
jxx_1:
mov al,
cmp al,30
jb jxx_goon
cmp al,39
ja jxx_goon

readstr ,8
mov temp3,$RESULT
atoi temp3,10
mov temp3,$RESULT

jmp jxx_over

jxx_goon:
cmp al,0
inc temp
jnz jxx_1
msg "出现问题?"
mov eax,eeax
mov ebx,eebx
mov esp,eesp
ret

jxx_over:

cmp calltemp,1
jnz next_1
itoa temp3
log "已进入CALL",$RESULT
itoa myeip
log $RESULT,"--->PUSH "
mov calltemp,0


push myeip


next_1:



mov myeip,temp3
jmp redo



countinue1:





itoa myeip

add $RESULT,":"

log $RESULT_1,$RESULT

cmp ifcall,0
je next_2
scmp $RESULT_1,"RETN"
jnz next_2
pop eax

itoa eax
log eax,"retn被发现,即将返回到:"
mov myeip,eax
opcode myeip
add myeip,$RESULT_2
jmp redo



next_2:
add myeip,$RESULT_2
inc kkkk
cmp kkkk,反汇编长度
jbredo
mov eax,eeax
mov ebx,eebx
mov esp,eesp
ret

ujtyug 发表于 2009-8-16 22:45

这个要顶,很实用的东西

mmfdr 发表于 2009-8-17 06:26

支持一下。。。。。。

wgz001 发表于 2009-8-17 07:00

学习了很强大的东东    :victory:

daihu37 发表于 2009-8-17 08:38

好东西,谢谢分享,试一试看看效果

Hmily 发表于 2009-8-17 14:16

处理了乱序才好分析代码,感谢兄弟发布这么好的脚本~:)

CHHSun 发表于 2009-8-17 14:22

强大的有点看不懂,后期要好好学习。

ZeNiX 发表于 2009-8-17 14:33

老兄一進來就出手不凡.
學習了.

小生我怕怕 发表于 2009-8-17 14:40

强悍,学习下这个脚本~

pizigao 发表于 2009-8-17 15:53

真是牛人啊~造福了
页: [1] 2 3
查看完整版本: 【脚本更新】反JMP+CALL乱序