明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1448|回复: 9

[经验] 调用一个不存在的函数

  [复制链接]
发表于 2021-7-12 08:42:15 | 显示全部楼层 |阅读模式
一个fas文件,内容是这样的
Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000016   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!
00000032   0D 0A 32 30 0D 0A 33 20  24 14 00 00 00 00 09 02     20  3 $      
00000048   00 35 01 01 00 03 0A 35  00 01 00 03 16 24 0D 0A    5     5     $  
00000064   31 33 39 20 36 20 24 14  01 01 01 00 32 00 32 3A   139 6 $     2 2:
00000080   2A 39 01 00 5B 54 31 00  3D 00 41 00 00 01 01 43   *9  [T1 = A    C
00000096   00 00 05 00 0A 32 00 32  14 2A 39 01 00 5B 50 52        2 2 *9  [PR
00000112   49 4E 43 00 00 55 01 00  03 00 61 3D 31 5C 00 00   INC  U    a=1\  
00000128   43 00 00 03 00 0A 5C 00  00 32 00 5B 54 31 00 00   C     \  2 [T1  
00000144   3A 01 43 05 00 01 00 1C  14 01 00 00 00 09 04 00   : C            
00000160   0A 32 00 0B 06 03 00 0A  03 03 00 32 01 35 02 02    2         2 5  
00000176   00 03 67 13 00 00 00 57  00 00 00 00 09 05 00 06     g    W        
00000192   01 00 09 01 00 57 01 00  00 00 01 0A 35 00 05 00        W      5   
00000208   03 16 16 00 EA F8 B6 18  A9 E2 0A 3B 66 61 73 34       犋?┾ ;fas4
00000224   20 63 72 75 6E 63 68 0A  3B 24 3B 41 37 2F 31 32    crunch ;$;A7/12
00000240   2F 32 31                                                                 /21
把它反编译一下
源码:
(setq  A 0)
(if (= A 1 ) (PROGN   (DEFUN T1() (PRINC "a=1" ) (PRINC )  ) ))
(T1 )

加载源码会出现 错误: no function definition: T1
但加载fas文件,结果是 a=1
它调用了一个并不存在的函数 T1,神奇吗?


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-7-12 08:49:41 | 显示全部楼层
调用一个不存在的函数  那不会出错么?
 楼主| 发表于 2021-7-12 08:54:05 | 显示全部楼层
本帖最后由 baitang36 于 2021-7-12 09:02 编辑
f4800 发表于 2021-7-12 08:49
调用一个不存在的函数  那不会出错么?

用lsp出错,用fas不出错,问题就在这里

本帖子中包含更多资源

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

x
发表于 2021-7-12 09:46:32 | 显示全部楼层
本帖最后由 不死猫 于 2021-7-12 10:17 编辑

找寻Fas可用,Lsp不可用的方法,是Lsp安全的最重要保障。这个方法是需要改编码的,所以反出来不同。
发表于 2021-7-14 22:03:28 | 显示全部楼层
不死猫 发表于 2021-7-12 09:46
找寻Fas可用,Lsp不可用的方法,是Lsp安全的最重要保障。这个方法是需要改编码的,所以反出来不同。

能不能解释下,在写代码上面,具体采用的方法?安全措施
发表于 2021-7-14 22:11:09 | 显示全部楼层
似乎找到个保护LISP加载安全的方法,但需要自己写段代码控制下为好。
发表于 2021-7-15 10:44:07 | 显示全部楼层

直接把代码放服务器,要用的时候下载下来加载,加载掉就删除,就不用去研究什么防破解了
发表于 2021-7-16 16:38:35 | 显示全部楼层
雨的节奏 发表于 2021-7-15 10:44
直接把代码放服务器,要用的时候下载下来加载,加载掉就删除,就不用去研究什么防破解了

下载的代码可以拦截,要把计算模块放服务器,然后给调用接口,计算后返回结果才保险
发表于 2021-12-23 17:44:08 | 显示全部楼层
可以高仿:编译源码的时候另外添加内容,添加的内容不以函数定义的形式出现在fas内,加载fas才会出现添加的函数,
发表于 2021-12-23 23:16:55 | 显示全部楼层
可能是加载机制问题吧,加载LISP是一行一行的干,干到哪里就哪里,fas是整体加载然后执行,没有分析过不知道是不是这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 01:39 , Processed in 0.361093 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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