本帖最后由 不死猫 于 2021-10-31 14:05 编辑
抗反编译的方法可以探索出百种以上,有些方法必须通过开发实现,也有些方法手工实现更方便。
今天再分享一个初学开发者就能实现的最简单抗反编译方法,该方法可让普通的VLX拆分工具和反编译工具“失效”。
原理:让VLX支持编译同名lsp或fas文件,VLX分解和反编译时自动覆盖同名文件,达到抗反编译目的。
首先我们准备两个文件:
1.lsp和2.lsp
其中1.lsp的内容是真的,2.lsp的内容是假的
1.lsp放到D:\1文件夹中
2.lsp放到D:\2文件夹中
打开CAD的lisp编辑器,
【文件】【生成应用程序】【新建应用程序向导】【专家】
程序位置D盘,应用名称 test
【下一步】
添加D:\2\2.lsp和D:1\1.lsp,调整好顺序,1在上面2在下面。
【下一步】【下一步】【下一步】【完成】
此时得到了D:\test.VLX和D:\test.prv文件
用记事本打开prv文件内容如下:
 - ;;; Visual LISP 生成文件 [V1.0] test saved to:[D:/] at:[10/30/21]
- (PRV-DEF (:target . "test.VLX")
- (:active-x . T)
- (:separate-namespace)
- (:protected . T)
- (:load-file-list (:lsp "D:/1/1.lsp") (:lsp "D:/2/2.lsp"))
- (:require-file-list)
- (:ob-directory)
- (:tmp-directory)
- (:optimization . st)
- )
- ;; EOF
修改一下:
 - ;;; Visual LISP 生成文件 [V1.0] test saved to:[D:/] at:[10/30/21]
- (PRV-DEF (:target . "test.VLX")
- (:active-x . T)
- (:separate-namespace)
- (:protected . T)
- (:load-file-list (:lsp "D:/1/1.lsp") (:lsp "D:/2/1.lsp"));修改这里
- (:require-file-list)
- (:ob-directory)
- (:tmp-directory)
- (:optimization . st)
- )
- ;; EOF
注意:此时需将实际文件D:/2/2.lsp改名为D:/2/1.lsp
保存prv文件。
然后lisp编辑器【文件】【生成应用程序】【重新编译应用程序】选择D:\test.prv重新编译得到新的D:\test.VLX
我们用记事本打开VLX文件看到有两个:fas "1"的文件,说明修改成功。
加载测试D:\test.VLX发现只有1.lsp中的内容起作用,另一个干扰文件内容是不起作用的(所以可以放一些与1.lsp中同名的函数作为干扰)。
论坛有一些免费的VLX拆分工具,我们可以进行测试发现,
拆分test.VLX后只得到1.fas文件,而加载这个文件运行的是干扰文件的内容。
同理目前的普通反编译工具也一样,对这个VLX反编译只能得到一个干扰文件代码。
有人问有没有方法让人一点都不能修改VLX,包括我们打包的文件名?
答案是:有的。一种是用抗反编译开发技术实现;另一种简单点的方法是多层“套娃”(见抗反编译方法第8讲),解开后才能改下一层代码。
|