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. gameplay理解
  2. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!
  3. ecshop 快速添加会员
  4. 第一节:框架前期准备篇之Log4Net日志详解
  5. 收藏 | 目标检测的模型集成与实验
  6. HBase基本概念与基本使用
  7. Firebug 教程
  8. 加载等待loading
  9. DBV命令行工具检测坏块
  10. 单尺度Retinex
  11. 小白教程系列——C盘满了,将C盘扩容
  12. 医院预约挂号系统的设计
  13. 华为推送 坑点 自定义intent
  14. TiDB+TiSpark部署--安装,扩缩容及升级操作
  15. 咸鱼ESP32实例—RTC
  16. java线程高并发编程
  17. postgresql启动1053错误
  18. Sublime Text 下载-设置切换中文版
  19. 为何使用人工智能软件?
  20. OpenGL学习---1.1 OpenGL基本介绍

热门文章

  1. python编程求长方形的面积_海式求三角形面积编程python
  2. 安卓协议逆向之frida hook百例二
  3. 成都榆熙电子商务有限公司:运费险理赔难吗?
  4. 网络质量测试器 v1.0 下载
  5. IDEA创建SpringBoot项目以后,pom.xml版本信息报错
  6. VS2015配置ITK环境
  7. Qualifier使用
  8. C. Road Optimization codeforces 1625C
  9. jQuery删除元素方法remove(),detach(),empty()
  10. Unity5.x制作合金弹头(一)-DoTween组件的使用