2024年3月26日发(作者:)

MASM的反反汇编技术

由于汇编语言是与机器语言机器码一一对应的,所以程序的代码非常

简洁,编译、链接程序不会在其中加入任何其它代码,所以,用

Win32DASM等把汇编工具反汇编汇编语言写的程序,其列出的汇编

代码几乎与编写的顺序、过程、代码一模一样,这也是汇编语言简洁

的证据。

但是这种过于简洁的代码却给了破解者提供了方便,破解者只需

要有一定的Windows SDK编程与汇编的经验,破解就非常简单,根

本不需要用SoftICE这些动态工具就可以破解。于是,相应的防止跟

踪的技术就出来了,比如花指令、不按规则调用API等等,今天就花

指令和大家研究研究。

花指令,其实就是在程序中加入一些字节来干扰静态工具反汇编,

毕竟汇编工具没有人的思维,所以这招非常好骗。

打开EditPlus,新建一个ASM - Sample文件,输入以下代码:

.386

.Model Flat, StdCall

Option Casemap :None

Include

Include

Include

IncludeLib

IncludeLib

.data

Welcome db "欢迎来到汇编的世界",0

.CODE

START:

invoke MessageBox,0,offset Welcome,0,0

invoke ExitProcess,0

END START

保存,Ctrl + 1编译。

用Win32DASM打开编译后的文件,可以在其菜单命令[函

数]->[输入]中看到我们使用了的MessageBox与ExitProcess名字,在

菜单命令[参考]->[字符串]中看到我们定义的字符串Welcome的值,假

如您的程序这段代码要做的是在用户输入错误的注册码后报错,那

么,破解者只需要找到对话框显示的字符串使用的地址,然后向上查

找跳到此地址的跳转指令,更改指令就能轻易破解,我们要做的,就

是把字符串隐藏起来,不让破解者轻易找到它的地址,如下:

;先关闭Win32DASM(以下同).

... ...

lea eax,Welcome

invoke MessageBox,0,eax,0,0