网络安全

位置:IT落伍者 >> 网络安全 >> 浏览文章

powerbuilder程序防止破解的办法[1]


发布日期:2022年07月14日
 
powerbuilder程序防止破解的办法[1]

鑒于任何程序都运行cpu指令并可被反编译成汇编码也就是说理论上程序都是在裸奔所以天下无不可破之程序所以这里讨论的防止只是一定程度上的比如提高破解难度拖延时间让破解者挫折感增加等等

pb的现状

pb从其pbd文件和dll文件格式的版本都为(pb尚不知晓还没找到pb的程序)结构大致一样所以pbkiller的作者只要还有时间他可以在一到三个月就做出最新的版本这个软件比起shudepb来说更灭绝人性因为作者将其免费(最初好像也是要卖钱的无奈没有采用shudepb那样的网络计算使得其被破解了从这一点看也蛮有意思从而使得无数的好事者参与到破解的学习中因为我们写的程序众多高手只对商业价值高的软件感兴趣而且以它为职业糊口而初学者只是随便找个软件练手我朋友有个软件被初学者拿来在里面放了一些新文件其实根本没破解到但是宣称为破解版破解方法写到输入随便的注册码提示出错然后就得到真正的注册码了…如果不出错多试几次即可结果呢?程序根本就不在输入注册码的地方判断正确以否你说搞笑不搞笑pbkiller目前最高版只支持我看过代码反编译比较漂亮错误肯定存在但已经很完美了

错误只有对自己的项目反向时才会头痛对破解者而言他们只想看注册部分的算法

shudepb是商业版而且几千块一套这一定程度对pb有利毕竟初学者是不会去买一套没用的工具来学习破解的而且demo版它限制代码的长度非注册版看不全代码还真是厚道所以如果你不打算应对反编译软件的话那请把代码写在行之后(具体是不是行限制自己测试看看)这是最简单办法(pb以上)

至于pbd还原器原理是用pb本身的方法得到dw的反编译代码这个不叫做破解pbd中的dw本来就可以直接用而pb又有函数可以得到语法这就没什么新鲜的了pb的本身函数是不会提供功能给你能反编译得到源码的是绝对不可能的

在网上搜索破解pb程序的帖子通用的说法是程序没法用OD来调而且pbvm里也不好跟都是要用到pbkiller这个利器这在一定程度上说明对付菜鸟使得其反编译成功的几率小一些就能更好的保护自己辛苦劳动的软件

目前几种破解的方法

a 看程序算法和思路直接破解算法公布算法或者写注册机(如果代码一览无遗这个方法其实最简单但是也有很多菜鸟看不懂pb代码还在网上到处问可笑)

b 有人尝试搜索pbd中的关键代码用ue修改pbd中的字节(这个有难度做的人不多而且多数菜鸟只限于pbkiller会用而已对pbd文件不了解据我自己观察对pbd有了解的话很多地方可以用ue直接改比如修改一个字节可以把+变成把=变成<>有点恐怖

c 对于外部dll的调用有破解者提议写假的dll来爆破之让其返回一个已经注册过的序号的依据如磁盘号有所谓的免狗程序应该屏蔽了对狗的调用或者搞了假的dll所以有必要多处验证文件的md只要他没法修改pbd文件

以下是我猜想的一些做法是否切实可行待大家提意见一个软件总是新出时容易被破解如果一年都没被破解以后版本升级变来变去的破解也就更少了

我晓得一个朋友的软件他一年连出十多个版本新版一出两三天之内就被破他用的是delphi写的他真可怜二进制编译的软件及asm之后也许更容易破解吧只要调试就搞定了就像pb一样破解得非常快

pb程序其实也占几个优势多是商业软件商业用户还是有购买的习俗练手者不太容易找pb程序来破解因为共享软件很多一般是你的用户用得还可以又不想给钱就会有破解的念头pb做的都是管理软件破解高手对商业价值不高的软件不感兴趣再者pb程序难以调试知道的人都不想弄加之sql之类的显得异常繁杂远没有破解一个二进制编译的通用的使用量大的软件有意思

代理商破解的可能性更大

我的几个构想的方法(都只针对增加难度让静态pbd反编译难度加大让pj者知难而退)

能采用machinecode方式的尽量用机器编译单一exe文件用pbkiller和shudepb都无法看到代码只能看到变量pj知难而退

我有几个项目代码超级大在当初用pb的时候就没法编译成机器码现在的pb因为有string和blob的bug没法编译成机器码而pb刚出来还没测试不过代码太多似乎没法编译成单一machinecode的exe那就只能用pcode

所以第二点就是欺骗在程序下放跟exe同名的假的pbd文件比如程序为mainexe放一个假的mainpbd给pj者去调试当然不一定是假的pbd你随便找一个pbd用ue删除一些二进制数字即可做的跟真的一样

pbd可以放在在window系统目录下或者path定义的任何地方或者之前文章也提到写他几十个注册函数放在不同的pbd里到底是哪一个只有你晓得搞死他librarylist也可以做做文章因为同名对象都依照lib顺序来查找

程序启动时抓一个时间启动结束后抓一个时间如果中途有停顿是否可以判定在被调试我想你可以删除他电脑上任何东西反正都是破坏别让他悠闲的调试程序我作为一个写代码的人我认为有必要这么做他要QJ你自然也允许你反抗某个杀毒软件当年就这样把破解版搞得吐血

注册码输入时不做任何提示和判断只是写一个标志程序启动时在title那里显示为正式版或者注册版但是实际上我可以延期验证或者随机验证呵呵这样也许把破解者都搞得没办法因为他只要输入一次注册码不管是什么字符都成了正式版而至于什么时间验证除非他有那个耐心否则也觉得破解麻烦对破解者而言抓个特征值是个小case而要一行一行地看代码估计吐血而死

ini中的注册码调入内存和真实注册码对比时我认为将其复杂化后放入一个数组或者blob中注册码不是在程序启动时而是在多时多点多处重复的校验我的想法个地方校验其程序破解的难度就可能让pj者早退却了

而且把注册码和系列号都跟程序的变量或者功能或者数据返回条数等挂钩做的非常隐蔽不再是体现在一个if比较的地方那就能大大减少破解的可能因为我们知道破解者无法修改pbd而且不熟悉pb代码如果搞得太复杂可能他早就不干了

我以后发行程序准备放个或者个pbd在程序下破解者要反编译就去反吧看到个pbd就算我搞pb几年我也知难而退了看到个pbd立即倒地吐血而死

如果主程序不能编译成单一machinecode的exe则某些关键功能可以用run外部程序方式来运行而外部程序用pb单独编写一个小的程序小的程序是完全能编译成功的

费解算法和写法比如把一个数放入数组然后在其他地方其他时候有意无意去改变或者复制移动再到某些时间去执行某些操作或者引发一些限制破解变成去看你的代码我想没人愿意继续下去

如果代理商破解你的软件你就让客户对他产生不信任即可买他的破解版就会被骗钱!做到这个足矣而且你得一棍子把他敲死

发若干个自己做的破解版其实都是测试版这样使用者找遍网上也下载不到真正的破解版很多国内网站转载时都是煞有介事地称其为破解版绿色版完全版其实都是测试版搞笑!

暗桩检测用户越过注册部分不动声色地做限制或者在多处多时深层次的地方或者细节的地方做限制比如数据汇总等于或者是其他单据隐蔽的错误等

攻击生成病毒特征体致使杀毒软件介入或者删除自己或者重启因为重启不可阻止而且破坏调试过程

程序运行完调用一个外部exe删除所有文件包括mainexe和所有pbd和dll(如果他做一个假的dll就会被删除而程序启动时释放一个新的文件出来永远只使用自己的文件这样他修改dll和pbd都没用

必须研究和使用pbkiller和shudepb这两个工具研究它们的bug利用bug写关键代码至少在它bug没解决之前是可以保护的比如pbkiller对dec{}的解析不出来(*提示如对不同精度的数做赋值则丢失精度或者做数学运算等等丢失精度后转为字符串或者blob)对longlong也解析不出来…都可以利用之这两个工具还有很多很多的bug

[] []

               

上一篇:powerbuilder程序防止破解的办法[2]

下一篇:powerbuilder防反编译: pbkiller无法解析的部分公布[4]