不死猫 发表于 2021-10-30 23:07:21

抗反编译方法(第11讲)初学开发者可以实现的VLX抗分解方法

本帖最后由 不死猫 于 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 生成文件 test saved to: at:
(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 生成文件 test saved to: at:
(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讲),解开后才能改下一层代码。

页: [1]
查看完整版本: 抗反编译方法(第11讲)初学开发者可以实现的VLX抗分解方法