引用 学会编写简单的花指令 – 最后的叶子的日志

Kernel 的 学会写复杂的花指令

 :I386 Information Security Team Of China       主台:

    人们变卖,废除交谈在世界上是机具指令的意味。,从一种同高度的上看,它然而更轻易了解少量地的机具指令罢了。每个废除交谈结算单,在废除时,都是鉴于cpu人家赠送的的指令奖章表将缀编指令替换成BI。。在日常器具中,人们投诚VCIDE或对立的事物如OD异样看待的反缀编挨次、解码软件也可以被编译成缀编命名遗传密码的二元系挨次。这台机具的普通体式是:指令 标明。废除的普通手续:率先,对指令的开端地址将决议,此后按照执意左右指令字判别是哪个缀编结算单,此后后头的标明拆开它。列举如下,人们可以预告,在执意左右手续中,这一步的辩解在缺点。:设想大人物成心把错误的的机具指令放入错误的的PO中,那反缀编挨次,可以一起一起背标明错误的,左右,人们预告的能够是人家错误的的反缀编命名遗传密码。。这执意“花指令”,一言蔽之,花指令是应用了反缀编时独自的按照机具指令字来决议反缀编发生的缺点。摘自斯诺的软件编密码技术家庭般的温暖

   杀金衡制人,,花指令人们可以这样的了解:花指令执意少数空手术命名遗传密码,它器到,在总有一天完毕的时分缺少是什么要做。,什么缺少器,可是的事实是感情原始挨次的挨次。。做人家复杂而抽象的喻为:金衡制人。,器花指令比如是做发生为0数值计算,不理你的指令有多复杂,它器到够用。,发生都是空的。,这就像你在=mathematics中做的四次计算。,够用的发生不断地0。空手术普通不感情挨次的器。。杀骑着,活泼地应用花指令,能取得晴朗的的毙伤归结为。(轻易从职位中停止并修正毛病的署名。),最最Kaba和监制的江门,金山村等。乃,了解并学会写复杂的花指令显得倍加要紧。

几种经用的废除交谈指令—–>

: DST为客观的手术数

   SRC对于源手术数

(1)算术运算

.附加运算

a)添加

体式:ADD  DST,SRC

器的手术(DST)<--(DST)+(SRC)

:ADD EAX,EBX

     执意EAX=EAX+EBX, 器后EBX的值稳固,EAXEBX养育的发生被放入EAX自动记录器中

又如:ADD ECX,11

     执意ECX=11+ECX,想象ECX自动记录器的初始自动记录器值是0,因而在执意左右时分ECX=11    

B)

体式:INC OPR

器的手术(OPR)<--(OPR)+1

: INC EAX

      执意EAX=EAX+1,想象EAX自动记录器的参赛人0,因而在执意左右时分EAX=1。所爱之物喂C交谈中自增运算++

.减法运算

减法手术罕有的相似地附加运算。。

a)子        

体式:SUB  DST,SRC

器的手术(DST)<--(DST)-(SRC)

:SUB EAX,EBX

     执意EAX=EAX-EBX,器后EBX的值稳固,EAXEBX减法成的发生EAX自动记录器中

又如:SUB EDX,1

     执意EDX=EDX-1,想象EDX自动记录器的参赛人1,因而在执意左右时分EDX=0

B)

体式:DEC OPR

器的手术: (OPR)<--(OPR)-1

:DEC EBX

     执意EBX=EBX-1,想象EBX自动记录器的参赛人1,因而在执意左右时分EBX=0。所爱之物喂C交谈说得中肯自减

.乘法运算

(乘除运算,请求不高,了解是本来的的,不爱好的器具!)

体式:MUL SRC

器的手术:

            音节手术(AX)<--(AL)*(SRC)

            字手术(DX,AX)<--(AX)*(SRC)

            双字手术(EDX,EAX)<--(EAX)*(SRC)

:(AL)=0B4H,(BL)=11H,追求器MUL BL产额费用后。

      构成疑问句和否定句:属于音节手术数,(AX)=(AL)*(BL),即是(AX)= 0B4H * 11H=0BF4H

.除法运算

体式:DIV SRC

器的手术:

            音节手术:16位的数量被划分为AX,8位除数对于源手术数,发生的8位商AL,8位差数AH,表现为:

                           (AL)<--(AX)/(SRC)的商;

                           (啊)<--(AX)/(SRC)的差数。

            字手术:32位的数量被划分为DX,AX中。流行DX高的词,16位除数对于源手术数,发生16位商AX,16位差数DX,表现为:

                            (AX)<--(DX,AX)/(SRC)的商;

                            (DX)<--(DX,AX)/(SRC)的差数。

            双字手术:64位的数量被划分为EDX,EAX中。流行EDX高的双重部署,32位除数对于源手术数,发生的32位商EAX,32在其他的EDX,表现为:

                            (EAX)<--(EDX,EAX)/(SRC)的商;

                            (EDX)<--(EDX,EAX)/(SRC)的差数                   

:商和差数是无奖章数 

:想象(AX)=0400H,(BL)=0B4H。器DIVBL发生是(啊)=7CH,(AL)=05H。也执意说,器(AL)<--(AX)/(SRC)

       (啊)<--(AX)/(SRC)的差数。SRC=0B4H

(2)子挨次CALL

体式:CALL  DST

打手势:舞台调度挨次设计,具有孤独效能的挨次的非常比例通常被写成,称之为子挨次。

子挨次是主挨次的人家业务或活动范围。,用于命名赠送的的举措。与CALL确切的的偿还RETN指令。像,下面的子挨次:

MAIN  PROC  FAR

      。。。。

      CALL  A1

      。。。。

      RET    

A1    PROC  NEAR

      。。。。

      RET

A1    ENDP

MAIN  ENDP

人家要紧子挨次的打手势,最最在突变中,这是鉴于:处置挨次能够过错终极的主挨次。,一定会使调动下面的子挨次,鉴于子挨次来处置发送的表示通知,并与之喻为,此后奖章本来的表示。,懂得这些都是由子挨次达到的。。

(3)略过指令

JZ/JE          全部效果零的或跳跃的距离(机具码为740F84)

JNZ/JNE       不同跳或零跳(机具码为750F85)    

JL/JLE         没有/没有或全部效果跳跃的距离

JG/JGE        大于/大于或全部效果跳跃的距离

JMP           完全地略过(机具码为EB)

喂完全地略过JMP这是特殊要紧的。,鉴于用于修正特点码的办法是普通的跳跃的距离频率。

(4)堆栈手术

堆栈堆栈成双呈现。,要紧的是要读熟,堆栈的挨次特殊要紧。:这是资历较深的邮政的命令。

压力了解PUSH指令及其体式

体式(表示指示为指示;MEM作为内存地址;DATA无准备地数;SEGREG段自动记录器)

PUSH  REG

PUSH  MEN

PUSH  DATA

PUSH  SEGREG

POP   REG

POP   MEM

POP   DATA

POP   SEGREG

PUSH  SRC //入栈

。。。。

POP  DST //弹栈

PUSHAD  SRC

。。。。。。

POPAD  DST

PUSHFD  SRC

。。。。。。

POPFD  DST

PUSHF  SRC

。。。。。

POPF  DST

。。。。。。。。。。。。。。。。。。。。。 

(5)标明改变指令

MOV(搬动是搬动改变。)

体式:MOV DST SRC

器手术(DST)<--(SRC)

:MOV EBX,1

     执意EBX=1,1评价给EBX自动记录器。

MOV该指令的机具交谈可以有7种子体式;

[1]MOV mem/reg1,mem/reg2

双命令不许可的事两个手术数应用自动记录器。,因而这两个手术数说得中肯人家必须做的事是自动记录器。,这种办法不许可的事命名段指示可以。

[2]MOV reg,data

流行reg命名自动记录器,data无准备地,这种办法不许可的事命名段指示可以。

[3]MOV ac,mem

流行ac为蓄电池。

[4]MOV mem,ac

[5]MOV segreg,mem/reg

流行segreg命名段指示,但它是不许可的事应用的。CS自动记录器。

[6]MOV mem/reg, segreg

[7]MOV mem/reg, data  

(6)布尔运算

AND  逻辑与

体式:AND DST,SRC

器的手术(DST)<--(DST)^(SRC)

复杂的了解是同时译成人家人的。,另人家是零。.(解说是人家是真的。,0虚伪的合理地表现.)

OR   逻辑或

体式:OR DST,SRC

器的手术(DST)<--(DST)v(SRC)

复杂的了解是,它在但是为零。,对立的事物状态下,人家

NOT  逻辑非

体式:NOT OPR

器的手术(OPR)<--(OPR)

XOR  逻辑异或

体式:XOR DST,SRC

器的手术(DST)<--(DST)A(SRC)

复杂的了解是两个手术数不参加但是。,异样是零.它常常被用来作为人家集说得中肯缀编挨次,如器XOR EAX,EAX,因而在执意左右时分EAX的值为0

TEST  勘探

体式:TEST OPR1,OPR2

器的手术:(OPR1)^(OPR2)

这两个手术数的发生不熟练的被保留,仅按照其特点的使适应码。 

   在前文五条指令中,NOT该号码不许可的事无准备地应用。,其它的四条指令除非源手术数是无准备地数,至多人家手术数必须做的事贮存器在自动记录器中。,另人家手术数可以应用任何的可处理榜样。。

总结:前文列出了少数普通的缀编指令,自然,缀编指令程序罕有的使富有。,但您可以了解并应用这些缀编指令。,这足以极艰难的经历。。压力是了解和了解子挨次。CALL和算术运算,标明改变指令也很要紧。.设想能够的话,大人物提议当权者去看一眼清华大学的刊物。<<80X86废除交谈挨次设计>>这本教科书.这本书很瞬间。,很根本的,晴朗的!

    下面以先例写几段复杂的花指令(要点:堆栈抵消,也执意说,指令被器到够用的空手术。,不下于数值运算的发生为零公正地。。)  

MOV EAX,11    //我爱好整齐著述业。

MOV EBX,22    //标明改变指令

MOV ECX,33

MOV EDX,44

PUSH 0        //入栈指令

SUB EDX,44

SUB ECX,33   //减法运算

SUB EBX,22

SUB EAX,11

XOR EAX,EAX  //异或,做零手术

XOR EAX,EAX

XOR EBX,EBX

XOR ECX,ECX

XOR EDX,EDX

PUSH 11

PUSH -11

MOV EAX,插入物点

JMP EAX        //完全地略过指令

    复杂的剖析下:器下面的缀编指令。,发生都是零。,空手术,什么也没做,设定初值了EAX,EBX,ECX,EDX自动记录器。这然而人家复杂的空手术。,人们自然可以称之为花指令。下面人们将以少数详细先例来反驳卡巴应用本人写的花指令免杀少数干咳停止演示。

应用到器:OD,Lordpe    

写信花指令:

PUSH 0

XOR EAX,EAX

MOV EAX,11

XOR EBX,EBX

MOV EBX,11

ADD EAX,EBX

SUB EAX,22

XOR EAX,EAX

PUSHAD

PUSHFD

INC EAX

DEC EBX

XOR EAX,EAX

XOR EBX,EBX

POPFD

POPAD

PUSH  插入物点

RETN

尺寸:弯下原始挨次插入物点的下人家地址。,分配插入物,此后找到空白区域。(插入物区放弃)写出下面的阐明和刚停止的指令。,完全一样的懂得更改,保留发送,此后用它Lordpe修正新的插入物点.此后你可以勘探摆脱(也叫头和花)

表明:可以写缀编命名遗传密码的地域能够是人家零区或NOP结算单,但正相反,这过错真的。;这些可以在缀编命名遗传密码区域写,普通必须做的事率先应用。OD整枝法目的挨次NOP发送勘探后的确切的区域,有规律的手术可写,不然别的方式.

1>     男孩收费渗透的器

插入物处的一则:

005BE51C >   55                 push ebp      //本来的插入物

005BE51D    8BEC               mov ebp,esp

零区获得知识:

005D09A9    0000               add byte ptr DS:[中],al  //零区域

与机具命名遗传密码绝对应的前述的缀编命名遗传密码。:

6A 00 33 C0 B8 11 00 00 00 33 DB BB 11 00 00 00 03 C3 83 E8 22 33 C0 60 9C 40 4B 33 C0 33 DB 9D

61 55 68 1D E5 5B 00 C3

2>     IIS写应用收费器的学术权威

插入物处的一则:

0045F088 >   55                 push ebp    //插入物点

0045F089    8BEC               mov ebp,esp

零区获得知识:

00462AAA    0000               add byte ptr DS:[中],al //零区域

人们应用下面插图画家的第长花指令(它的顶梁整齐。)来读到到人们零区获得知识.此段的确切的机具命名遗传密码列举如下所示:

B8 11 00 00 00 BB 22 00 00 00 B9 33 00 00 00 BA 44 00 00 00 6A 00 83 EA 44 83 E9 33 83 EB 22 83

E8 11 33 C0 33 C0 33 DB 33 C9 33 D2 6A 11 6A EF 55 B8 89 F0 45 00 FF E0

BY:Kernel2008

Date:2008-05-02

Forum:

参考资料:

<<80X86废除交谈挨次设计>>清华大学出版物

<<在编密码和解密的吃水剖析>>西安电子科技大学出版物   

no comments

Leave me comment