明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 122450|回复: 359

[【不死猫】] 【不死猫出品】原创 Lisp破解 (核心代码解密) 提供思路

    [复制链接]
发表于 2009-3-18 11:15:00 | 显示全部楼层 |阅读模式
本帖最后由 nonsmall 于 2013-4-24 17:36 编辑

关于加密 Lisp : VLX FAS 格式 破解的讨论由来已久 最近尝试了利用Lisp本身来解密Lisp 小有所得 与各位分享下:

注:我所发布的多个原创思路,均在明经通道首发,之前未曾参考其他文章.转载请注明出处和我的名字 谢谢.

本文发表前,心里也做了一些思想斗争,想来代码开源对国产CAD事业的发展助益很大,但是支持原创正版和劳动成果也是必须,好在我提供的思路不足以解密全部Lisp,希望大家抱着学习的目的来看看别人的代码即可.

声明:对于任何使用本人文章作品对他人造成心灵伤害和钱包的损失,本人概不负责,请大家尊重他人的劳动成果,不要突破别人的心里防线.o(∩_∩)o...

PS:大家可以讨论看看怎么反破解

nonsmall 20090318 于深圳

=============================================

方法1: 查看所有Lisp调用的命令和系统变量

一个命令或系统变量能做很多事情的 学习这些很重要

[Post=1]

不用多说,当然是反应器了

然后随便拿个带命令或setvar函数的Lisp来试试看吧

不要想着用(vlr-remove-all)来反破解 因为我用一句(setq vlr-remove-all nil)就行了

[/Post]

此代码加载后,其他程序的命令和系统变量的修改都显示出来了.

----------------------------

方法2: 查看大部分函数的调用和基本过程

[Post=1]

配合(atoms-family )函数可批量修改

[/Post]

先使用命令GOGO 再使用命令test

也可以试试其他包含有该函数的程序

=================================================

这么简单? 恩 的确不难 但是不够完美

因为setq if repeat progn等特殊函数无法查看(自己可以动手试试)

但是借助ARX重新定义这些函数不知道可不可以(要是可以的话......那....)

但是本思路可以解密很多"高深"程序的核心秘密 足够了!

下面看2楼7楼的加密Vlx破解实战!

本帖子中包含更多资源

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

x

评分

参与人数 2威望 +2 明经币 +2 金钱 +40 贡献 +5 激情 +5 收起 理由
xuyueyong + 20
mccad + 2 + 2 + 20 + 5 + 5 【精华】好程序

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-2-13 22:17:28 | 显示全部楼层
非常的高大上   但是小白完全看不懂
发表于 2023-11-21 17:42:28 | 显示全部楼层
先收藏下,猫老师的水平毋庸置疑
发表于 2023-12-30 21:40:56 | 显示全部楼层
不得不服啊
 楼主| 发表于 2009-3-18 11:22:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-19 18:07:17 编辑

[Post=1]

实例:

;监视加密程序使用外部例程

(defun c:gogo()
 (setq vlax-createobject vlax-create-object)
 (defun vlax-create-object (a)
  (print (strcat "使用函数(vlax-create-object " (vl-princ-to-string a) ")"))
  (vlax-createobject a)
 )
 (print "vlax-create-object 函数透明")
 (princ)
)

;监视程序写出/读取外部文件

(defun c:go()
 (setq open1 open)
 (defun open (a b)
  (print (strcat "使用函数(open " (vl-princ-to-string a) " " (vl-princ-to-string b) ")"))
  (open1 a b)
 )
 (print "open 函数透明")
 (princ)
)

程序原文(解密自己以前的一篇文章):

http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&replyID=111159&id=71194&skin=0

上面的2个函数执行后再执行我的函数

------------------------

命令: gogo

"vlax-create-object 函数透明"

命令:
命令: (rundos (list "del d:\\2.mp3"))

"####修改变量:CMDECHO为"
"####修改变量:CMDECHO为" 00
"使用函数(vlax-create-object Scripting.FileSystemObject)"
"使用函数(vlax-create-object WScript.Shell)"
("====发送命令:" ("DELAY"))
"####修改变量:CMDECHO为"
"####修改变量:CMDECHO为" 00
"Complete"

命令: *取消*

-------------------------

哦 原来程序用了这两个外部例程Scripting.FileSystemObject和WScript.Shell !

我们再看看Getdos是什么原理?

-------------------------

命令: (getdos "ver")

"####修改变量:CMDECHO为"
"####修改变量:CMDECHO为" 00
"使用函数(vlax-create-object Scripting.FileSystemObject)"
"使用函数(vlax-create-object WScript.Shell)"
("====发送命令:" ("DELAY"))
("====发送命令:" ("DELAY"))
"使用函数(open C:\\DOCUME~1\\ZHANGTN\\LOCALS~1\\Temp\\tmpget.tmp R)"
"使用函数(open C:\\DOCUME~1\\ZHANGTN\\LOCALS~1\\Temp\\tmpget.tmp R)"

-------------------------

恩 原来有个文件藏在了这里

怎么样? 程序核心的秘密是不是已经显露出来了呢?

通过一些核心函数的破解 我们可以看到一些看似高深的文章 其实是很简单的

只要自己多写一写这类的破解函数 核心的代码秘密将被一点点的发掘出来.

=================================

对了 实际上要想看Command命令的具体操作可以这样:

(defun study_sysVarChanged(a b)
 (princ (vl-princ-to-string (getvar (car b))))
 (if (= (getvar "cmdecho") 0)(setvar "cmdecho" 1))
 (princ)
)

[/Post]
发表于 2009-3-18 12:48:00 | 显示全部楼层
顶!
发表于 2009-3-18 13:44:00 | 显示全部楼层
學習好帖
发表于 2009-3-18 22:24:00 | 显示全部楼层
支持原创,破解思路值得深思
发表于 2009-3-19 01:45:00 | 显示全部楼层
又学到了一个知识~
谢谢~~
 楼主| 发表于 2009-3-19 09:46:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-19 18:08:16 编辑

呵呵 大家似乎还没有理解我的方法的厉害是吧?

那么再看一个实例

解密无痕前辈的大作 "[原创] !将vbscript移植到lisp!"

PS这个文章已经不是秘密了 所以拿来试试吧!)

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62106&replyID=&skin=1

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62106&replyID=&skin=1

猜猜看前辈用了哪些外部例程?

[Post=1]

首先获得外部例程大概有这么几个函数:createobject getobject getinterface

(defun c:go1()
 (setq vla-eval1 vla-eval)
 (defun vla-eval (a b)
  (print (strcat "使用函数(vla-eval " (vl-princ-to-string a) " " (vl-princ-to-string b)")"))
  (vla-eval1 a b)
 )
 (print "vla-eval 函数透明")
 (princ)
)
(defun c:go2()
 (setq vlax-get-acad-object1 vlax-get-acad-object)
 (defun vlax-get-acad-object ()
  (print (strcat "使用函数(vlax-get-acad-object " ")"))
  (vlax-get-acad-object1)
 )
 (print "vlax-get-acad-object 函数透明")
 (princ)
)
(defun c:go3()
 (setq vlax-getobject vlax-get-object)
 (defun vlax-get-object (a)
  (print (strcat "使用函数(vlax-get-object " (vl-princ-to-string a) ")"))
  (vlax-getobject a)
 )
 (print "vlax-get-object 函数透明")
 (princ)
)
(defun c:go4()
 (setq vla-GetInterfaceObject1 vla-GetInterfaceObject)
 (defun vla-GetInterfaceObject (a b)
  (print (strcat "使用函数(vla-GetInterfaceObject " (vl-princ-to-string a) " " (vl-princ-to-string b)")"))
  (vla-GetInterfaceObject1 a b)
 )
 (print "vla-GetInterfaceObject 函数透明")
 (princ)
)

执行go1 go2 go3 go4

然后加载无痕前辈的程序

----------------------

执行函数命令

(setq str "
Function   GetValue()  
          Dim   arrX(3 , 3 , 2)
          Dim   i,j,k  
          For   i = 0 To 3  
               For j = 0 To 3
                  For k = 0 To 2
                     arrX (i , j , k) = i * j + k
                  Next
               Next
          Next  
          GetValue = arrX  
  End   Function"
)
(xxvbs str "getvalue")

[/Post]

关键的来了 看看返回值吧

命令: (xxvbs str "getvalue")

 (xxvbs str)=移植vbs程序的函数 c:xxvbs? 显示帮助--v2.2---by 梁雄啸.2007.7

"使用函数(vlax-get-acad-object )"
"使用函数(vla-GetInterfaceObject #<VLA-OBJECT IAcadApplication 00c2db8c>
ScriptControl)"

"使用函数(vla-eval #<VLA-OBJECT IScriptControl 05a9ecc0> isarray(getvalue))"
"使用函数(vla-eval #<VLA-OBJECT IScriptControl 05a9ecc0> getvalue)" (((0 1 2)
(0 1 2) (0 1 2) (0 1 2)) ((0 1 2) (1 2 3) (2 3 4) (3 4 5)) ((0 1 2) (2 3 4) (4
5 6) (6 7 8)) ((0 1 2) (3 4 5) (6 7 8) (9 10 11)))

-----------------------------

ScriptControl
是个什么东东? 上网一搜不就知道了么?原来是脚本解释器!

知道了原理 自己去找找相关知识学习即可 解密成功!

("谁敢打我的主意!!!"     啊!不好!有杀气! 我先撤了!)

发表于 2009-3-19 09:54:00 | 显示全部楼层
破解思路值得学习
发表于 2009-3-19 10:08:00 | 显示全部楼层
本帖最后由 作者 于 2009-3-19 10:09:32 编辑

。。。。。不会吧    又是你老猫搞出来的精华........

下载16次了,继续突破....搞得我没心思正常工作了,上个论坛还偷偷摸摸的,发这种贴会让我全神贯注而忘记巡逻BOSS的。。。

发表于 2009-3-19 13:05:00 | 显示全部楼层

重新定义VLISP函数,输出函数的参数信息

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-24 03:39 , Processed in 0.218550 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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