baitang36 发表于 2018-10-8 08:34:00

改一个字节,破掉试用次数限制

在这个帖子中,鱼与熊掌提出了一个思路,可以用读写文件的方式设置试用次数。经过实验,发现这种方式是比较弱的。本帖的目的不是为了破解,是为了启发大家的思路。
这是程序源码:
;作者:鱼与熊掌QQ775452144
(defun c:tt()
(IF (SETQ TMPTXT (open "C:\\Program Files\\WINDOWNS.TXT" "R"))
   (progn
   (setq tmpxx(READ-LINE tmptxt))
   (CLOSE TMPTXT)
   (setq tmpxx(1+(fix(atof tmpxx))))
   (SETQ TMPTXT (open "C:\\Program Files\\WINDOWNS.TXT" "w"))
   (write-line (itoa tmpxx) tmptxt)
   (CLOSE TMPTXT)
)
   (progn
   (SETQ TMPTXT (open "C:\\Program Files\\WINDOWNS.TXT" "w"))
   (write-line "1" tmptxt)
   (CLOSE TMPTXT)
   )
)
(if (

**** Hidden Message *****

kic 发表于 2019-1-11 11:25:00

哈哈,忘了这个无敌口诀了吗?
爆破无敌口诀
           一条(跳)就死,九筒(90)就胡
            (对应上面的2--修改为nop)
           一条(跳)就胡,一饼(EB)伺候
            (对应上面的1--修改为jmp)
               (74) 变(75)
               (84) 变 (85)

baitang36 发表于 2018-10-8 15:58:00


最安全的注册程序就是没有单独的注册程序,就是把注册判断分散到程序的多个角落,把注册结果作为一个变量,随机拿出来加入计算,这样破解不完全的程序将是不可靠的,会随机出问题,失去使用价值。注册判断分散到多个位置,给破解者造成很大困扰,随机检测,设置很多暗桩,说不定什么时候就跳出一个来。

updoc 发表于 2018-10-8 13:59:00

(DEFUN C:TT()
(vl-load-com)
(setq cdat (atoi (rtos (getvar "cdate"))))
(if ( (ascii "3") (NTH 14 (vl-string->list(rtos (* 10000 (getvar "cdate"))))))
      (alert "\n   执行程序A")
(progn
(alert "\n   程序过期\n   请联系作者")
(exit)
)
      )
)
(progn
          (alert "\n   程序已过期\n   请联系作者")
          (exit)
      )
)
(setq a "程序执行")
)

mikewolf2k 发表于 2018-10-8 09:20:00

楼主你这个是编译完了再比较二进制文件, 找到记录位置的地方,才“破解”的。先有源文件,再破解,有何实际意义?而且只要人家稍微改动下源程序,大于3改成大于9开平方,要改的就不止一个字节了。

baitang36 发表于 2018-10-8 09:25:00


确实如此,其实这不能算是破解,只是思路,说明这样是可行的。
要不,你修改后编译一个fas文件发上来,让我试验一下这种方法是否可行?

updoc 发表于 2018-10-8 10:00:00


方法是可行的,在没源代码的情况下要找出这个比较条件基本是不可能的。如果加入两个以上跳转语句,本方法基本无解。

baitang36 发表于 2018-10-8 10:03:00


发一个小程序上来试试?

updoc 发表于 2018-10-8 10:10:00


贱人工具箱 你试一试

updoc 发表于 2018-10-8 10:21:00

命令 TT:
未过期显示对话框 执行程序A
过期显示程序已过期请联系作者
单纯的一个判断
ZC.fas

页: [1] 2
查看完整版本: 改一个字节,破掉试用次数限制