【工具】给AutoLisp语言增加goto函数(高速修正版)
本帖最后由 t18-13nil 于 2020-6-25 23:44 编辑参考这俩个帖子
baitang36的帖子
http://bbs.mjtd.com/thread-181143-1-1.html
tryhi的帖子
http://bbs.mjtd.com/thread-181151-1-1.html
算法和tryhi的帖子中一样,只是lisp操纵二进制速度相对较慢,尤其文件较大的情况。因此用vb.net写了这个工具。
说实话单靠这工具想让搞破解人不能破解是不现实的。这个反过来修改一下就又可以破解了。
这个只是让那些买工具的要多花点钱请人写新的工具而已。
程序修正了一下,旧程序只能识别fas程序段最多9kb,现在可以最多9T。9M的程序应该都很少吧。
本帖最后由 tryhi 于 2020-6-21 22:20 编辑
zixuan203344 发表于 2020-6-21 15:34
有源码没?
你可以参考我的帖子,我很早发过lsp的源码,读一遍理解了思路就能转换为任何你懂的语言程序了 本帖最后由 tryhi 于 2020-6-21 22:22 编辑
;;从表的第n个索引起截取m个元素
;;(try-lst-n-m '(1 2 3 4 5) 2 3);=>(3 4 5)
(defun try-lst-n-m (lst n m / i lstr ns)
(if(> (+ n m) (setq ns(length lst)))(setq m (- ns n)))
(repeat n
(setq lst(cdr lst))
)
(setq i 0)
(repeat m
(setq
lstr (cons (nth i lst) lstr)
i(1+ i))
)
(reverse lstr)
)
;;===========加密上面这个函数的例子=================
这里例子有5个句子,把它们分开存放,改成这样子
;;从表的第n个索引起截取m个元素
;;(try-lst-n-m '(1 2 3 4 5) 2 3);=>(3 4 5)
(defun try-lst-n-m (lst n m / i lstr ns)
(setq a 1122334400 a 1)(princ)
)
(defun a ()
(setq a 1122334401 a 4)
(repeat m;句子4
(setq
lstr (cons (nth i lst) lstr)
i(1+ i))
)
(setq a 1122334400 a 5)(princ)
)
(defun a ()
(setq a 1122334401 a 5)
(reverse lstr);句子5
)
(defun a ()
(setq a 1122334401 a 1)
(if(> (+ n m) (setq ns(length lst)))(setq m (- ns n)));句子1
(setq a 1122334400 a 2)(princ)
)
(defun a ()
(setq a 1122334401 a 2)
(repeat n;句子2
(setq lst(cdr lst))
)
(setq a 1122334400 a 3)(princ)
)
(defun a ()
(setq a 1122334401 a 3)
(setq i 0);句子3
(setq a 1122334400 a 4)(princ)
)
加载之后可以看出,函数是正常的,里面用了5个同名函数“a”,普通情况同名函数会被覆盖,但是这里例子显示,每一个同名函数都各自执行了一段代码,以完成主函数try-lst-n-m的功能
命令: (LOAD "C:/Users/YQH/Desktop/d.fas.fas") A
命令: (try-lst-n-m '(1 2 3 4 5) 2 3) (3 4 5)
我不认为在没有标志的情况这段代码还能还原出来,逐字分析fas指令吗?那不是多花点钱请人写新的工具就能解决的 t18-13nil 发表于 2020-6-21 16:21
所反编译的只需写一个本程序的逆向程序就可以反编译了 ,修改编译后,再用本程序处理一下就恢复了。所以你 ...
原来的程序里面有那么多的原生57,如何确定哪个57是特殊的,哪个是原生的? 这个可以,操作更简单了,也不容易出错了。 这个可以,操作更简单了,也不容易出错了。 好东西啊,指令号和标记号数值不一定是接近的吧。 不一样就行,注意看自己设置的和识别的标记是否一致,不一致就跟其它命令干涉了,换个就行。 转换后,为什么跳转指令和跳转标记都是0呢? 零就是没识别到,注意范围,一个是32位int一个是16位int的正值部分 (setq a 128-2147483647 a 0-127) 意思先在LISP里面添加跳转标记和跳转指令,然后再用这个程序转换。