baitang36 发表于 2022-7-22 12:33:00

【原创】把一个字符串隐藏到一个变量符号中

发现一个很有趣的东西,可以把一个字符串藏到一个符号中。
比如有个变量a,它的值是 “12345”,可以再把一个字符串如“abcd”放到符号a中保存,可以分别读取。(setq a nil)不会影响隐藏字符串的内容。
做了一个syz-set-string.fas,里面定义了两个函数 syz-set-string和syz-get-string
syz-set-string的用法是 (syz-set-string '符号 字符串 )   把字符串藏到一个符号中。成功返回T,不成功返回nil。
syz-get-string的用法是 (syz-get-string '符号)成功返回符号中隐藏的字符串,不成功返回空字符串""。
试验方法如下:
命令: (LOAD "C:/00/syz-set-string.fas")
命令: (setq A "1234")
"1234"
命令: (syz-set-string 'A "abcd" )
T
命令: (syz-get-string 'A )
"abcd"
命令: !a
"1234"
甚至还可以把字符串藏到系统函数中:
命令: (syz-set-string 'princ "test princ" )
T
命令: (syz-get-string 'princ )
"test princ"

llsheng_73 发表于 2022-7-22 14:16:00


这样一来的话,完全可以搞出很多不敢想象的东西。。。
比如先把一些系统函数的真正意义放进去,然后重定义它,甚至让它成为nil或者其它。。。总之就是看懂它也没 用,因为它已经不是所看到的了。。。
反正就是把它的皮囊放进灵魂,然后破坏皮囊,使之看起来已经死了,但实际上还能救活
甚至直接搞些张冠李戴的东西,谁都看不明白。。。

llsheng_73 发表于 2022-7-22 15:05:00


感觉可以通过错误处理函数来搞一些乱七八糟的事情,比如把setq放入变量a ,把(setq n '(1 2))写成(a n '(1 2))
程序出错的时候去取a隐藏的setq出来,使之能运行,但看不懂

baitang36 发表于 2022-7-22 14:29:00


可以充分发挥想象力。常规方法无法抹掉隐藏的字符串的,它总是存在的

xj6019 发表于 2022-7-22 12:41:00

厉害 总能发现稀奇玩意

自贡黄明儒 发表于 2022-7-22 12:42:00

变量a必须是系统变量,不然会消失。字符串是函数定义,用elva让其运行。

baitang36 发表于 2022-7-22 13:01:00


想法不错,试试

hhh454 发表于 2022-7-22 14:31:00

应该可以做成注册功能了,注册码藏起来

baitang36 发表于 2022-7-22 14:34:00


当初研究这个,就是考虑暂时隐藏敏感信息。常规方法无法抹掉它。

llsheng_73 发表于 2022-7-22 14:37:00


可以把一些关键的小函数放进去,或者关键的全局变量放进去。。。适当时候才取出来。。。
页: [1] 2
查看完整版本: 【原创】把一个字符串隐藏到一个变量符号中