知识大全 powerbuilder程序防止破解的办法[2]

Posted 软件

篇首语:古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 powerbuilder程序防止破解的办法[2]相关的知识,希望对你有一定的参考价值。

  分析发现一个pb的bug可以使得pbkiller无法得到任何代码

  

  //global function integer lf_count ()

  int  li_i

  ……一直到

  int  li_i

  int  li_i

  int  li_i

  int  li_i

  int  li_i

  return

  

  本想测试一下pbkiller对代码行数有没有限制 发现pb 在变量数超过 行后 保存就会出错 但是重启IDE又能插入一个 可以保存 但是插入第二个变量就不行了 我用这种方法最大可以插入到 int  li_i 现在我们先写 个 编译和调用这个函数都没错 然后多申明一个 比如int  li_i 采用增量编译后 主调用程序中返回 (注意 不能进行全编译 否则报内存只读错误) 这倒没什么价值 价值在于这样编译后的pbd pbkiller无法反编译出任何代码 大家可以测试一下 如果用作关键点计算或者返回几个关键参数 倒是蛮好的!不过 工程project也只能用增量编译 否则IDE报错退出

   pbNI的运用 使得关键代码可以融入pbd 但是pbkiller又反不到 其他调式工具也单独调试不到 具体未测试过 见黄国畴的blog有实例

   编译后的文件假设包括一个main exe和main pbd second pbd 用ue打开main exe 在最后部分RTL标志以上有一个dat*标志 找到其中的pbd列表 修改一下 如 mypic jpg 然后把相应的pbd文件改改名字 效果也挺搞笑的

   做 个exe(不是主程序) 其作用只是依次调用 比如 exe调用 exe exe又去调 exe 最后调用main exe 各步骤的调用都带参数 并且这 个exe还执行部分文件操作和数据处理 或者部分认证和文件校验等 然后最后调用main exe 而且带参数 这些参数隐蔽地作为一些地方的数据 也可以在 exe执行过程中将一些数据写入sql中或者文件中 如此使用倍增难度的方式来为难pj者

  还是那句话 不要让pbkiller直接看到你的源码(给破解者一个假的pbd是个好办法) 保护自己的软件一年以上 给客户一个必须要掏钱的理由!

  只要能防止静态下反编译到你的pbd(一般破解者就是直接找跟主文件同名的pbd来编译看看是否能找到注册算法 根本不会在意你的pbd到底是不是正确的!!!也不会在意你对他的欺骗) 你就有 %的希望保护到自己的软件 如果你的软件受众很少的话

  有兴趣可以参考《加密与解密》P 页的几个对软件保护的建议 (*见网上有 就摘抄过来)

  本节将给出关于软件保护的一般性建议 这些都是无数人经验的总结 程序员在设计自己的保护方式时最好能够遵守这里给出的准则 这样会提高软件的保护强度

  ( )软件最终发行之前一定要将可执行程序进行加壳/压缩 使得解密者无法直接修改程序 如果时间允许并且有相应的技术能力 最好是设计自己的加壳/压缩方法 如果采用现成的加壳工具 最好不要选择流行的工具 因为这些工具已被广泛深入地加以研究 有了通用的脱壳/解压办法 另外 最好采用两种以上的不同的工具来对程序进行加壳/压缩 并尽可能地利用这些工具提供的反跟踪特性

  ( )增加对软件自身的完整性检查 这包括对磁盘文件和内存映像的检查 以防止有人未经允许修改程序以达到破解的目的 DLL和EXE之间可以互相检查完整性

  ( )不要采用一目了然的名字来命名函数和文件 如IsLicensedVersion() key dat等 所有与软件保护相关的字符串都不能以明文形式直接存放在可执行文件中 这些字符串最好是动态生成

  ( )尽可能少地给用户提示信息 因为这些蛛丝马迹都可能导致解密者直接深入到保护的核心 比如 当检测到破解企图之后 不要立即给用户提示信息 而是在系统的某个地方做一个记号 随机地过一段时间后使软件停止工作 或者装作正常工作但实际上却在所处理的数据中加入了一些垃圾

  ( )将注册码 安装时间记录在多个不同的地方

  ( )检查注册信息和时间的代码越分散越好 不要调用同一个函数或判断同一个全局标志 因为这样做的话只要修改了一个地方则全部都被破解了

  ( )不要依赖于GetLocalTime( ) GetSystemTime( )这样众所周知的函数来获取系统时间 可以通过读取关键的系统文件的修改时间来得到系统时间的信息

  ( )如果有可能的话 可以采用联网检查注册码的方法 且数据在网上传输时要加密

  ( )除了加壳/压缩之外 还需要自己编程在软件中嵌入反跟踪的代码 以增加安全性

  ( )在检查注册信息的时候插入大量无用的运算以误导解密者 并在检查出错误的注册信息之后加入延时

  ( )给软件保护加入一定的随机性 比如除了启动时检查注册码之外 还可以在软件运行的某个时刻随机地检查注册码 随机值还可以很好地防止那些模拟工具 如软件狗模拟程序

  ( )如果采用注册码的保护方式 最好是一机一码 即注册码与机器特征相关 这样一台机器上的注册码就无法在另外一台机器上使用 可以防止有人散播注册码 并且机器号的算法不要太迷信硬盘序列号 因用相关工具可以修改其值

  ( )如果试用版与正式版是分开的两个版本 且试用版的软件没有某项功能 则不要仅仅使相关的菜单变灰 而是彻底删除相关的代码 使得编译后的程序中根本没有相关的功能代码

  ( )如果软件中包含驱动程序 则最好将保护判断加在驱动程序中 因为驱动程序在访问系统资源时受到的限制比普通应用程序少得多 这也给了软件设计者发挥的余地

  ( )如果采用keyfile的保护方式 则keyfile的尺寸不能太小 可将其结构设计得比较复杂 在程序中不同的地方对keyfile的不同部分进行复杂的运算和检查

  ( )自己设计的检查注册信息的算法不能过于简单 最好是采用比较成熟的密码学算法 可以在网上找到大量的源码

      编辑推荐

       ASP NET开发培训视频教程

       Microsoft NET框架程序设计视频教程

cha138/Article/program/PB/201311/24596

相关参考

知识大全 优化你的PowerBuilder程序

优化你的PowerBuilder程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一段程序完成

知识大全 Powerbuilder 10.0应用程序发布及动态配置ODBC

Powerbuilder10.0应用程序发布及动态配置ODBC  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 ildasm破解和用ilasm来重新编译VB.NET程序

ildasm破解和用ilasm来重新编译VB.NET程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 qq空间相簿许可权仅主人可见有办法破解吗

qq空间相簿许可权仅主人可见有办法破解吗?能帮解决我问题加分!哎,伤心啊,我专门帮别人解决相簿密码的问题,没想到你比一般人更一般!告诉你吧,唯一解决的方法就是盗QQ密码。本人忠心提示一句:盗他人密码,

知识大全 怎么用手机破解无线路由器的管理页面密码

怎么用手机破解无线路由器的管理页面密码?这个是不能破解这个密码的,没办法。怎么用手机破解无线路由器密码你是什么的路由器?如果是普通的傻瓜型路由器,那就没有办法了,如果是专业路由器,比如cisco的路由

知识大全 公司为了防止员工上网玩游戏在电脑里设置不让我玩游戏,应该怎么破解又不被发现

公司为了防止员工上网玩游戏在电脑里设置不让我玩游戏,应该怎么破解又不被发现?这一般是把显卡驱动给卸载了,这样就不能运行3D游戏了。但是一般的2D游戏还是可以的,不知道你是全部游戏都不能玩,还是可以玩小

知识大全 powerbuilder防反编译: pbkiller无法解析的部分公布[1]

  powerbuilder防止反编译pbkiller无法解析longlong类型而且错得一塌糊涂  pbkiller无法解析longlong类型一旦你申明longlong类型无法反编译出类型值也不对

知识大全 加密网页破解大法

  当你在浏览网页时看到一个很漂亮的特效你查看源代码时看到的是一队乱码那多扫兴呀!根据本人的研究总结出了三种解密方法与大家分享!!      方法一        有一种加密的办法是采用javascr

知识大全 PowerBuilder的数据窗口[2]

PowerBuilder的数据窗口[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  循环  

知识大全 PowerBuilder命令行编译详解[2]

PowerBuilder命令行编译详解[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里