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


发布评论