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

   优德娱乐

Kernel 的 学会组成简略的花指令

 合作:I386 Information Security Team Of China       总站:

    咱们了解,缀编报告缀编报告实际的是机具指令的吹牛游戏。,从一种水平上看,它简单地更轻易担心稍许地的机具指令便了。每个缀编报告缀编报告宣判,在配时,都是本cpu一体假设的指令记分表将缀编指令替换成BI。。在日常运用中,咱们经历并吃光VCIDE或另一个如OD相等的反缀编挨次、反编译挨次软件也可以被编译成缀编编码的二元系挨次。这台机具的普通体式是:指令 记载。拆毁的普通诉讼程序:率先,将决议指令开端的第一体地址。,当时的主要成分这样地指令字判别是哪个缀编宣判,当时的拆毁记载的后备。。从中,咱们可以指出,在这样地诉讼程序中,这一步的辩解在漏出物。:也许大人物成心把不公正的机具指令放入不公正的PO中,那反缀编挨次,可以一起一起背记载不公正,因此,咱们指出的可能性是一体不公正的反缀编编码。。这执意“花指令”,长话短说,花指令是运用了反缀编时愚蠢的行为主要成分机具指令字来决议反缀编后果的漏出物。摘自斯诺的软件编密码技术内脏

   杀摇动木马,,花指令咱们可以这样地担心:花指令执意一点点空处置编码,它处决处决,最末什么都没做,什么也没做。,仅仅的事实是冲击原始挨次的挨次。。做一体简略而抽象的相似:金衡制人。,处决花指令比喻是做后果为0数值计算,不要紧你的指令有多复杂,它处决到最末。,后果都是空的。,这就像你在算学中做的四次计算。,最末的后果不断地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缀编报告缀编报告挨次设计>>清华大学强迫征兵

<<在编密码和解密的吃水辨析>>西安电子科技大学强迫征兵   

没有评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注