t18-13nil 发表于 2020-6-20 23:47:21

【工具】给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:19:07

本帖最后由 tryhi 于 2020-6-21 22:20 编辑

zixuan203344 发表于 2020-6-21 15:34
有源码没?
你可以参考我的帖子,我很早发过lsp的源码,读一遍理解了思路就能转换为任何你懂的语言程序了

tryhi 发表于 2020-6-21 11:46:16

本帖最后由 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指令吗?那不是多花点钱请人写新的工具就能解决的

tryhi 发表于 2020-6-21 22:18:17

t18-13nil 发表于 2020-6-21 16:21
所反编译的只需写一个本程序的逆向程序就可以反编译了 ,修改编译后,再用本程序处理一下就恢复了。所以你 ...

原来的程序里面有那么多的原生57,如何确定哪个57是特殊的,哪个是原生的?

lxdz443 发表于 2020-6-21 07:49:47

这个可以,操作更简单了,也不容易出错了。

lxdz443 发表于 2020-6-21 07:50:02

这个可以,操作更简单了,也不容易出错了。

烟盒迷唇 发表于 2020-6-21 08:20:30

好东西啊,指令号和标记号数值不一定是接近的吧。

t18-13nil 发表于 2020-6-21 08:53:10

不一样就行,注意看自己设置的和识别的标记是否一致,不一致就跟其它命令干涉了,换个就行。

烟盒迷唇 发表于 2020-6-21 08:53:11

转换后,为什么跳转指令和跳转标记都是0呢?

t18-13nil 发表于 2020-6-21 08:59:40

零就是没识别到,注意范围,一个是32位int一个是16位int的正值部分

t18-13nil 发表于 2020-6-21 09:05:33

(setq a 128-2147483647 a 0-127)

烟盒迷唇 发表于 2020-6-21 11:27:55

意思先在LISP里面添加跳转标记和跳转指令,然后再用这个程序转换。
页: [1] 2 3
查看完整版本: 【工具】给AutoLisp语言增加goto函数(高速修正版)