baitang36 发表于 2020-3-13 09:54:33

利用编译时的全局声明对抗反编译

本帖最后由 baitang36 于 2020-3-13 11:34 编辑

先看一个简单的例子;
(defun t1 () (princ "t1"))
(defun t4()
      (defun t2 () (princ "t2"))
      (defun t3 () (princ "t1"))
      (princ "t4")
)      
(defun t5 ()(t1)(t2)(t3)(t4)
)
正常编译后,可以完美反编译。
如果在编译的时候,选择了优化,再编辑一下全局声明,drop掉 t2 t3 t4,编译后用某流行反编译软件进行反编译,得到如下结果:
(DEFUN T1() (PRINC "t1" ))
(DEFUN C:XXXXXXXXX() (DEFUN C:XXXXXXXXX() (PRINC "t2" )) (DEFUN C:XXXXXXXXX() (PRINC "t1" )) (PRINC "t4" ))
nil
(DEFUN T5() (T1 ) (&H24 ) (&H43 ) (&H14 ))
可以看出, t2 t3 t4变样了,已经不是原来的代码。
感谢zxcad大侠。
补充:在函数内定义的函数,只给本程序调用,这样的函数drop掉是安全的。如果考虑给别的程序调用的函数,千万不能drop,否则别的程序找不到,会出错。
t1.gld是工程t1编译时需要的配置文件。点击编辑全局声明,会自动生成。
具体操作看截图:




13648893846 发表于 2020-3-13 10:28:30

厉害学习学习学习

雨的节奏 发表于 2020-3-13 10:37:02

厉害了,,,我要试一下

baitang36 发表于 2020-3-13 11:31:48

在函数内定义的函数,只给本程序调用,这样的函数drop掉是安全的。如果考虑给别的程序调用的函数,千万不能drop,否则别的程序找不到,会出错。

烟盒迷唇 发表于 2020-3-13 17:09:58

好方法啊,让那流行的软件难以反出来

ssyfeng 发表于 2020-3-14 23:36:10

又学到一招

pw_design 发表于 2020-3-23 14:53:40

厉害

紫苏炒黄瓜 发表于 2023-6-28 16:19:17

厉害
页: [1]
查看完整版本: 利用编译时的全局声明对抗反编译