吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13300|回复: 17
收起左侧

[分享] 花指令的解說

[复制链接]
ivanleung 发表于 2010-6-14 10:12
花指令
  (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 /花代码

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qhd11 发表于 2010-6-14 10:52
太专业了,学习。
redcarp 发表于 2010-6-14 11:07
sjg8 发表于 2010-7-31 09:27
头像被屏蔽
qq526033781 发表于 2010-7-31 12:08
提示: 作者被禁止或删除 内容自动屏蔽
fsafs168 发表于 2011-2-16 21:13
原来如此,这就是花指令啊
fhch6 发表于 2011-2-17 14:30
这么好的教程,学习了。
caoqingzhao 发表于 2011-3-1 21:13
看不懂
家园春正浓 发表于 2011-3-1 21:15
学习了    谢楼主    呵呵
duoluo211 发表于 2011-3-1 21:19
学习了!这么好的东西!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 08:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表