王朝百科
分享
 
 
 

花指令

王朝百科·作者佚名  2010-01-07  
宽屏版  字体: |||超大  

(junk code) 意思是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种 jmp, call, ret, 一些堆栈技巧,位置运算,等等

如:

jz label

jnz label

db thunkcode

label:

mov ax, 8

xor ax, 77

...

这里假设从label伪指令开始是我们以mov ax,8打头的加密算法,当thunkcode为一条非单字节指令(nop等)的机器指令的时候反汇编器可能就会把thunkcode和后面的mov一起反汇编,从而导致后面的一系列汇编语句的反汇编错误,这样就隐藏了真正的汇编语句。

【深层】伪装 PEtite 2.2 -> Ian Luck 汇编代码:

============================

伪装代码部分:

============================

mov eax,0040E000

push 004153F3

push dword ptr fs:[0]

mov dword ptr fs:[0],esp

pushfw

pushad

push eax

xor ebx,ebx

pop eax

popad

popfw

pop dword ptr fs:[0]

pop eax

jmp XXXXXXXX '执行到程序的原有OEP

============================

【深层】伪装 WCRT Library (Visual C++) DLL Method 1 -> Jibz 二进制代码 + 汇编代码:

============================

伪装代码部分:

============================

使用二进制粘贴以下代码:

55 8B EC 83 7D 0C 01 75 41 A1 C0 30 00 10 85 C0 74 0A FF D0 85 C0 75 04 6A FE EB 17 68 0C 30 00 10 68 08 30 00 10 E8 89 00 00 00 85 C0 59 59 74 08 6A FD FF 15 08 20 00 10 68 04 30 00 10 68 00 30 00 10 E8 52 00 00 00 59 59

粘贴完毕后,再添加2行汇编语句:

jmp XXXXXXXX '执行到程序的原有OEP

retn 0C

1。伪装 vc

VC++程序的入口代码:

PUSH EBP

MOV EBP,ESP

PUSH -1

push 415448 -\___

PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!

jmp 跳转到程序原来的入口点

******************************************************************************************

2。跳转

somewhere:

nop /"胡乱"跳转的开始...

jmp 下一个jmp的地址 /在附近随意跳

jmp ... /...

jmp 原入口的地址 /跳到原始oep

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

新入口: push ebp

mov ebp,esp

inc ecx

push edx

nop

pop edx

dec ecx

pop ebp

inc ecx

loop somewhere /跳转到上面那段代码地址去!

3. 伪装 C

融合

把A的代码换成B的

push ebp

mov ebp,esp

push -1

push 111111

push 222222

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 老入口

4. c ++

push ebp

mov ebp,esp

push -1

push 111111

push 222222

mov eax,fs:[0]

push eax

mov fs:[0],esp

pop eax

mov fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

5.Microsoft Visual C++ 6.0

PUSH -1

PUSH 0

PUSH 0

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

SUB ESP,68

PUSH EBX

PUSH ESI

PUSH EDI

POP EAX

POP EAX

POP EAX

ADD ESP,68

POP EAX

MOV DWORD PTR FS:[0],EAX

POP EAX

POP EAX

POP EAX

POP EAX

MOV EBP,EAX

JMP 原入口

6.

在mov ebp,eax

后面加上

PUSH EAX

POP EAX

7:

防杀精灵一号防杀代码:

push ebp

mov ebp,esp

push -1

push 666666

push 888888

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 入口

8:

防杀精灵二号防杀代码:

push ebp

mov ebp,esp

push -1

push 0

push 0

mov eax,dword ptr fs:[0]

push eax

mov dword ptr fs:[0],esp

sub esp,68

push ebx

push esi

push edi

pop eax

pop eax

pop eax

add esp,68

pop eax

mov dword ptr fs:[0],eax

pop eax

pop eax

pop eax

pop eax

mov ebp,eax

jmp 入口

9.

防杀精灵终极防杀代码

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

push eax

jmp入口

10:

木马彩衣(金色鱼锦衣)花代码

push ebp

mov ebp,esp

add esp,-0C

add esp,0C

mov eax,原入口

push eax

retn

11:

木马彩衣(虾米披风)花代码

push ebp

nop

nop

mov ebp,esp

inc ecx

nop

push edx

nop

nop

pop edx

nop

pop ebp

inc ecx

loopd /跳转到下面那段代码地址去!

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

nop /"胡乱"跳转的开始...

jmp 下一个jmp的地址 /在附近随意跳

jmp ... /...

jmp 原入口的地址 /跳到原始oep

12.

VC++5.0代码(木马彩衣无限复活袍):

PUSH EBP

MOV EBP,ESP

PUSH -1

push 415448 -\___

PUSH 4021A8 -/ 在这段代码中类似这样的操作数可以乱填

MOV EAX,DWORD PTR FS:[0]

PUSH EAX

MOV DWORD PTR FS:[0],ESP

ADD ESP,-6C

PUSH EBX

PUSH ESI

PUSH EDI

ADD BYTE PTR DS:[EAX],AL /这条指令可以不要!

jo 00401000 /原入口

jno 00401000 /原入口

db 0e8h /花代码

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有