明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1667|回复: 2

[经验] 把if语句变成repeat

[复制链接]
发表于 2020-8-13 09:29:50 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2022-6-20 08:57 编辑

判断注册码是否正确,很多人这么写:
  1. (defun zhuce ()
  2.   (if (= reg1 reg2)
  3.     (princ "注册成功!")
  4.     (progn (princ "注册失败") (exit))
  5.   )
  6. )


这函数编译后的代码用winhex查看,是这样的:
Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
00000032                               14 00 00 00 00 03 07                  
00000048   00 03 06 00 35 02 05 00  03 67 0D 00 00 00 09 04           
00000064   00 35 01 03 00 03 57 0E  00 00 00 09 02 00 35 01   
00000080   03 00 03 0A 35 00 01 00  03 16  
                        
手工反编译一下:
14 00 00 00 00                       函数开始
03 07 00                             REG1
03 06 00                             REG2
35 02 05 00  03                      (= reg1 reg2)
67 0D 00 00 00                       IF
09 04 00                             "注册成功!"
35 01 03 00 03                       (princ "注册成功!")   
57 0E  00 00 00                      跳过14个字节  
09 02 00                             "注册失败"
35 01 03 00 03 0A                    (princ "注册失败")
35 00 01 00  03                      (EXIT)
16                                    函数结束
破解方法非常简单,查找67,找到后把67后面的字节改成0.这样无论reg1和reg2是否相等,都会显示“注册
成功”。
如果把程序改写一下,功能不变,改成这样:
  1. (defun zhuce ()
  2.   (setq aa1(abs (- reg1 reg2)))
  3.    (repeat aa1
  4.      (princ "注册失败")
  5.      (exit)
  6.     )
  7.   (princ "注册成功!")
  8. )
  9. ;以下是试验代码
  10. (setq reg1 1  reg2 8)
  11. (zhuce)


函数编译后是这样的
Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15
00000032                               24 14 01 00 00 00 03         
00000048   09 00 03 08 00 35 02 07  00 03 35 01 06 00 03 06        
00000064   05 00 03 05 00 5D 00 00  5C 00 00 32 00 4B 67 1B   
00000080   00 00 00 5C 00 00 50 5D  00 00 09 04 00 35 01 03   
00000096   00 03 0A 35 00 02 00 03  0A 57 DA FF FF FF 09 01      
00000112   00 35 01 03 00 03 16      
如果还用上面的破解办法,查找67,找到后把67后面的字节改成0.
你会发现,还是会显示"注册失败",破解失败了。
这种把if变成repeat来完成跳转的方法是有效的,破解方法我就不说了,有兴趣者自己研究吧 :-)


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-8-13 19:14:20 | 显示全部楼层
如果REG1和REG2不是数值就没法相减了。
 楼主| 发表于 2020-8-13 20:38:08 | 显示全部楼层
烟盒迷唇 发表于 2020-8-13 19:14
如果REG1和REG2不是数值就没法相减了。

可以想办法变成数字
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 00:18 , Processed in 0.171590 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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