反跟踪技术之Anti-静态分析
Anti-静态分析
1.死循环语句
类型:对付W32Dasm
平台:Windows9x 、Windows NT
原理:下面是故意在程序中插入的一个死循环,可能会使W32Dasm的某些版本停止响应:
0401000 JMP 00401005
……
00401005 JMP 00401000
对策:W32Dasm进入死循环后,用Bpx hmempcy设断,来到死循环代码处,将其跳出死循环,或用IDA来反汇编。
2.利用花指令
花指令是对付静态分析的重要手段。以下是一段汇编源程序:
start_:
xor eax,1
add eax,2
jmp label1
label1: xor eax,3
add eax,4
xor eax,5
end start_
此时把源程序进行编译,然后用W32Dasm进行反汇编,得到的反汇编结果完全正常。接着我们将上述源程序作如下修改:
start_:
xor eax,1
add eax,2
jnz label1 ;注意这里,用两句条件跳转代替了:jmp label1
jz label1
db 0E8h ;注意这个无用的字节和源程序的区别
label1: xor eax,3
add eax,4
xor eax,5
end start_
再把源程序进行编译,然后用W32Dasm进行反汇编,来看一下反汇编后的结果:
:00401000 83F001
:00401003 83C002
:00401006 7503
:00401008 7401
:0040100A E883F00383
:0040100F C00483F0
xor eax, 00000001
add eax, 00000002
jne 0040100B
je 0040100B
call 83440092
rol byte ptr [ebx+4*eax], F0
结果令人很吃惊,会发现W32Dasm反汇编的结果和事先写的汇编指令不一样,从反汇编的结果中已经无法理解程序的"真实"的功能了,W32Dasm给出了一个意想不到的答案。 这是因为上述改动是为了在W32Dasm的反汇编工作中做点手脚,从而使得它犯下错误。那么W32Dasm为什么会因此而犯下这样的错误呢?
不同的机器指令包含的字节数并不相同,有的是单字节指令,有的是多字节指令。对于多字节指令来说,反汇编软件需要确定指令的第一个字节的起始位置,也就是操作码的位置,这样才能正确地反汇编这条指令,否则它就可能反汇编成另外一条指令了。 如果在程序中加入一些无用的字节来干扰反汇编软件的判断,从而使得它错误地确定指令的起始位置,那么也就达到了干扰W32Dasm反汇编工作的目的。
通过前面的介绍,知道由于"无用的字节"干扰了W32Dasm对指令起始位置的判断,从而导致反汇编的错误结果,所以如果能让W32Dasm正确地识别出指令起始位置,也就达到了去除花指令的目的了。比如可以把那些无用的字节都替换成单字节指令,最常见的一种替换方法是把无用的字节替换成 NOP 指令,即十六进制数 90。
(出处:嬴政天下整理收藏)
相关文章:
·5StarZip 2001 破解--初学者破解入门
·DFCG破解入门第一课
·DFCG破解入门第二课
·DFCG破解入门第三课
·DFCG破解入门第四课
·DFCG破解入门第五课
·DFCG破解入门第六课
·DFCG破解入门第七课
·DFCG破解入门第八课
·DFCG破解入门第九课
相关软件:
→ 特别推荐
→ 热点TOP10
我为人人《《==》》人人为我
关于我们 |
帮助(?)
| 广告服务 |
版权声明 |
商业合作 |
发展历程 |
加盟我们 |
联系我们
Copyright © 1999-2003
winzheng.com All Rights Reserved.
繁体版:由华琦数码技术提供
Powered
by:MeSky.Net
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。