明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4701|回复: 116

[【不死猫】] 抗反编译方法(第10讲)Lisp使用特殊变量实现抗反编译的方法

    [复制链接]
发表于 2021-9-21 00:44 | 显示全部楼层 |阅读模式
本帖最后由 不死猫 于 2021-10-30 22:14 编辑

这个加密的方法我在加密工具中已经用了很久了,考虑到现在的安全性,可以逐步对部分研究成果进行公开。

正常的Lisp常用变量支持的符号为:"#" "@" "[" "]" "_" "^" "{" "}" "~" "*" "$" ":" "l" "m" "v" "g" "q" "r" "x" "y" "h" "i" "w" "c" "d" "k" "p" "z" "n" "o" "a" "e" "f" "j" "b" "s" "t" "u" "1" "2" "3" "4" "5" "6" "7" "8" "9" "0"

范例:使用空格作为lisp变量。

处理步骤:
1 编译以下代码为fas格式

(defun tt( / asa)
        (setq asa 1)
        (print asa)
)
(tt)
2 字符串解码(解码工具论坛有好几个)
3 二进制工具打开解码后的fas文件(十进制格式)

找到所有的ASA名称(Fas中变量都变为大写),修改83即(ascii "S")为32即(ascii " ")保存即可

程序可以正常加载执行在编译后fas及vlx中支持的变量符号从chr 1-255都可以用

fas重新解码反编译效果:
(DEFUN TT (/ A A) (SETQ A A 1) (PRINT A A))(TT)
可以看到代码已经失效变为不可理解内容。其他各种符号大家可以自己研究替换(比如用分号做变量)。


=====假如变量被替换回去怎么办的分割线=====


为了防止反编译对变量进行替换为可用字符的处理,我们可以增加抗反编译手段,只要变量里没有空格就出错。
处理步骤:


修改代码后:
(defun tt( / asa)
        (setq asa 1)
        (if (vl-string-search  " " (vl-princ-to-string 'asa));对变量自身进行判断,如果变量不存在空格则程序出错
                (print asa)
                (print "程序被反编译修改了无法执行!")
        )
)
(tt)

此时代码正常执行将报错,改成其他字符也报错。

我们还是用上面的修改方法对编译后的fas字符串解码,找到并修改ASA为A A,即65 83 65改为65 32 65.
修改后保存的fas就可以正常执行了。

反编译修改回去改A A为ASA后不可用:


判断方法除了字符串外,还可以转为表进行判断,最好把'asa定义成变量在其他隐蔽的地方判断,还可以多次判断,
一个变量也可以用多种特殊非法字符,这样就可以多种判断了。
若反编译者去修改我们的空格为可用字符,则反编译后程序运行会出错,此时需要分析代码找问题,凡是需要人工分析代码的破译成本将大幅度提高(判断写法太多不能自动分析修改)。

本身这种替换是不可逆的,因为每个字符被替换为不可用字符是无规律的。
反编译只能替换为可用字符但无法还原最初变量值。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

高级  发表于 2021-11-9 17:20

评分

参与人数 2明经币 +2 金钱 +18 收起 理由
tryhi + 1
highflybird + 1 + 18 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-9-28 12:00 | 显示全部楼层
fas重新解码反编译效果:
(DEFUN TT (/ A A) (SETQ A A 1) (PRINT A A))(TT)
可以看到代码已经失效变为不可理解内容。其他各种符号大家可以自己研究替换(比如用分号做变量)。
能做到这个的都不是一般人了~~
 楼主| 发表于 2021-9-24 11:40 | 显示全部楼层
tryhi 发表于 2021-9-24 09:39
反编译作者:懂了,还原先替换非法字符.
反编译工具使用者:惨了,这下难搞了

这个有办法的,更新了一下,增加防止反编译替换回去的技术手段。
发表于 2021-9-24 18:55 | 显示全部楼层
为了防止反编译对变量进行替换为可用字符的处理,我们可以增加抗反编译手段,只要变量里没有空格就出错。
发表于 2021-9-21 06:47 | 显示全部楼层
学习学习 大神
发表于 2021-9-21 07:04 | 显示全部楼层
学习下,谢谢!
发表于 2021-9-21 07:28 | 显示全部楼层
试试看怎么样
发表于 2021-9-21 08:41 | 显示全部楼层
感谢猫老师的共享!
发表于 2021-9-21 09:05 | 显示全部楼层
大师经典作品
发表于 2021-9-21 10:03 | 显示全部楼层
空格当变量,不小心自己也看不到了
发表于 2021-9-21 10:14 来自手机 | 显示全部楼层
不失为中秋福利,谢谢猫。
发表于 2021-9-21 11:16 | 显示全部楼层
123456789
234567901
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 22:41 , Processed in 0.583237 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表