Pbidea库关于PB核心代码保护的一个方案

我们写程序,总是希望自己的代码不容易被别人破解,有一定安全性。尤其是用PB写CS程序,如果代码被pbkiller之类的工具轻易反编译了,数据连接等信息、加密方法等就一止了然,别人可以直接使用这些信息连接到数据库,其影响不可估量。当然,也有人不在乎这些安全考量,那就不在此考虑之类,可以忽略本文。

一、pbidea库核心代码安全保护方案

1.给应用程序正常添加库文件。将核心代码单独放到一个pbl里面,库名称随意指定,这里假设我们指定的名称是panda.pbl。这里的“panda”就是关键字。panda.pbl里必须有个对象叫做 uo_panda,uo_panda有一个函数 of_init()。

2.正常写程序,把一些初始化代码,包括数据库连接、注意信息等放到 uo_panda 对象或相关对象里面,只要 uo_panda.of_init() 能访问到即可。注意不要在其他 pbl 或 pbd 里包含 panda.pbl里的对象,否则后面会把panda.pbl从库列表里移除,会导致其他对象编译失败。

3.全编译项目,生成 panda.pbd。然后重新设置库列表,把panda.pbl从库列表里移除。

类似 panda.pbl这样的库可以有多个。

4.写这样一段代码,生成加密文件

string ls_files[]

ls_files[1] = "panda\panda.pbd"

ls_files[2] = "panda\json" //json是一个utf8编码的JSON文件,在调用时会被自动解析到uo_panda.json对象里去。当然,你也可以没有这个,可选的。

ls_files[3] = "panda\dzz.png"

……..可以将更多需要打包到加密文件里的文件添加进来

uo_utils u

u = create uo_utils

u.packapplication( "panda.dat", "mykey", ls_files[]) //生成加密文件panda.dat

至此,我们得到了一个加密文件包,包含了我们的核心代码。

那么,我们怎么调用这个核心代码呢?其实很简单:

在主窗口的 open事件里,

uo_utils u

u = create uo_utils

u.initapplication("panda") //注意"panda"这个关键字

initapplication这个函数加载了加密文件包,并且调用了 uo_panda对象里的 of_init()函数 ,完成核心代码调用。

二、pbidea库核心代码安全保护方案的实现原理

本方案主要是利用aes 256位加密,key是随机生成,对库文件进行加密打包,几乎是防止了暴力破解的可能。

Initapplication函数首先是对文件进行解密,把内容读取到内存,在内存里进行解密。当PB程序执行时,分块进行读取,解密成代码后执行。所有PB的对象创建、代码运行,都在DLL内部完成,这也是pbidea库使用system library方式的优势。

考虑到可以利用目前各种调试工具,例如OllyDBG,进行调试跟踪 ,暂停关键代码执行,分析研究程序。Pbidea库做了一些反调试处理。发现自身处于调试环境中时,会拒绝执行应用功能,从而保护代码安全。即使是调试工具从内存中找到解密后的文件内容,那也只是局部内容,无法保存成整体的文件出来反编译。

大自在 QQ:781770313,QQ群:624409252

2022年4月3日

Pbidea库关于PB核心代码保护的一个方案相关推荐

  1. 初步解决博客园代码高亮的一个方案

    今天我要推荐的是一个免费而且支持markdown语法的软件--Typora 它有很多优点,支持多种类型代码的高亮风格,方便的排版处理,支持Latex等,最重要的一点是真正做到了所见即所得ヽ(゚∀゚)メ ...

  2. 长文梳理Muduo库核心代码及优秀编程细节剖析

    一.前言: 代码地址: https://github.com/yyg192/Cpp11-Muduo-MultiReactor  Muduo库是陈硕个人开发的Tcp网络编程库,支持Reactor模型.本 ...

  3. linux 内核 核心代码,8分钟掌握Linux内核分析的核心科技

    原标题:8分钟掌握Linux内核分析的核心科技 作者: OUYANG_LINUX007 来源: http://blog.csdn.net/ouyang_linux007/article/details ...

  4. Android高级混淆和代码保护技术

    本文讲的是 Android高级混淆和代码保护技术, 这是一篇关于 Android 代码保护的文章,旨在介绍代码混淆.防止逆向工程的各种高级技巧.大家都很忙,我也赶着回去继续开发我的新应用,因此话不多说 ...

  5. Android 高级混淆和代码保护技术

    转载自@drakeet Android大牛的博客 http://drakeet.me/android-advanced-proguard-and-security/ Android 高级混淆和代码保护 ...

  6. Apollo control模块纵向控制原理及核心代码逐行解析

    前言 2021/12/30 前段时间一直在看Apollo的控制代码,因为工作较忙,只能抽时间整理下代码笔记,可能稍显粗糙,部分图片手绘,作为日后调试之参照.以后有时间再优化排版,再把涉及到的其他概念补 ...

  7. python 源码保护_Python代码保护

    Python等解释性脚本语言都需要源码明文存储,所以有两种情况需要考虑代码保护的问题: 代码逻辑的保护:代码本身有版权或者不能公开源代码 涉及用户名.密码等关键信息的配置 代码保护方法 Python代 ...

  8. OceanBase首次阐述战略:继续坚持自研开放之路 开源300万行核心代码

    简介:在数据库OceanBase3.0峰会上,蚂蚁集团自主研发的分布式数据库OceanBase首次从技术.商业和生态三个维度对未来发展战略进行了系统性阐述.同时,OceanBase宣布正式开源,并成立 ...

  9. python 重写断言_历时四年,Dropbox 用 Rust 重写同步引擎核心代码

    开源 GO 语言工具库.研究 iOS 和 Android 的 C++ 跨平台开发,花费五年时间从云平台向数据中心反向迁移-Dropbox 从未停止对技术的"折腾".如今,这家公司又 ...

最新文章

  1. android开发我的新浪微博客户端-登录页面功能篇(4.2)
  2. LIGA Stereo:基于双目3D检测的Lidar几何感知表示学习(ICCV2021)
  3. 8则实用的Linux Shell命令
  4. vs2019下载和更新速度非常慢的解决方案
  5. 数据分析基础教程Numpy指南笔记
  6. win32 数据类型 vs c#
  7. RocketMQ-初体验RocketMQ(05)_RocketMQ架构解读
  8. LeetCode Shell 194. 转置文件
  9. Spring Boot Transaction 源码解析(二)
  10. 如何在Marketing Cloud里创建extension field扩展字段
  11. 软件构造学习笔记-第七周
  12. java 微信 回复_微信java 开发2 发送文本消息并回复
  13. MobileNetV1
  14. Docker学习文档之一 安装软件-Linux环境
  15. MySql大数据量恢复
  16. linux内核网络基础,linux网络内核基础.doc
  17. 矩阵论10,11,12作业
  18. ubuntu16.04 修改本机密码
  19. matlab 半导体激光模拟工具箱,MATLAB中的激光器仿真
  20. 根除文件夹exe病毒教程

热门文章

  1. 农商行招聘计算机类笔试真题,2018农商行招聘考试题库――计算机(六)
  2. 阿里平均每天纳税超1.4亿 全年纳税516亿
  3. 《Ansible语法篇:剧本对象关键字之until》
  4. UIButton: set image for selected-highlighted state
  5. win10鼎信诺为什么安装不了_Win10升级安装为什么会偶遇失败?原因居然是这个...
  6. 一条龙服务玩游戏闯关搞定Java集合
  7. 揭秘!消息管理平台的实现原理
  8. 资金表实现过程方案二:资金表与冻结表分离(三)
  9. Hive Explain 详解
  10. java串口调试助手_基于 QML的 串口调试助手