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

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除数为源运算数,归结为的8Bit quotient inAL,8位留存下的AH,表现为:

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

                           (啊)<--(AX)/(SRC)的留存下的。

            字运算:32位的数量被划分为DX,AX中。内侧DX高的词,16除数为源运算数,的归结为16Bit quotient inAX,16位留存下的DX,表现为:

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

                            (DX)<--(DX,AX)/(SRC)的留存下的。

            双字运算:64位的数量被划分为EDX,EAX中。内侧EDX高的双重字母,32除数为源运算数,归结为的32Bit quotient inEAX,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       Unequal or zero jump(机具码为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