单片机 防破解 技术论述

单片机防破解,近几年专门针对于产品设计,最终在产品程序加密这一块,发现是一个非常实际的问题,公司研发产品几十万,竞争对手花几万破解复制你的产品,而其他竞争对手能够使用更低的成本复制已经被破解的产品,让你的产品在短短1个月内成为烂大街的货;在这种市场风气下非常阻碍具备创新能力公司的发展;因此在3个月各种询问以及沟通过程中,从如何破解单片机系统到如何防止破解进行说明,希望能够帮助具有相同需求的朋友;在此利用市场上破解率最高的STM32单片机来说明。
一、破解单片机系统,分为两步:
1、从单片机中将二进制文件读出;虽然单片机有各种所谓的读/写保护机制;防止bin文件被读出,读出的方法起始也很简单,将单片机的晶元漏出,在晶元上跳线,将读保护从硬件上跳过,再用设备读取Bin文件,(不同的单片机这一块的难度也有不同,例如目前绝大部分的STM32F1系列单片机晶元破解技术已经成熟,而STM32F4系列只有少部分的系列可以进行此破解,并不是不能晶元操作只是市场占有率比较低破解需求小,破解行业还不愿意花费大量成本来拓展这一块);本质上这些都是成本的问题,愿意花巨额破解也是可以的。
2、二进制文件破解,能够独立运行;说明白一点就是将Bin文件中和单片机标志相关的或者和外部硬件设备相关而导致Bin文件不能通用(就是能够直接复制使用)的部分进行屏蔽,能够让Bin文件独立的在任何一个相同的平台上运行;这个部分属于软件破解,破解人员拿到bin文件后会将其进行反汇编成为汇编代码,直接使用汇编代码在在破解的平台上仿真运行观察文件执行流程(这点需要消耗大量的人力和时间);软件加密大体分为两部分,密文加密、硬件加密;密文加密一般都是将单片机内部的标志性密文,例如STM32的UID或者相同单片机具备不同硬件数据的部分在软件层面上进行绑定,最最简单的就是STM32在上电的时候读取UID比对,如果错误就怎么处理等,破解密文加密实际上就是通过仿真跟踪的手段,找到密文加密地点,改写此段的汇编代码,通过多种方式绕过密文对比,或者更改密文对比结果,从而屏蔽密文对比对程序的作用,目前用的最多的就是转移读取密文的位置,破解者将相同的UID密文数据写在FLASH内部的某个地方(也就是Bin文件的某一个地址),并且在STM32读取UID时不读取硬件UID而是读取破解者存在在FLASH内部的UID,将程序蒙骗过去,破解完密文加密后,此时的Bin文件就和单片机内部的密文一点关系都没有,读密文的时候都是程序自己读自己bin的某一个数据和硬件平台没有关系了,如果没有硬件加密此时就可以在任意相同的平台上运行了;硬件加密一般用的比较多的就是加密芯片,这种方式加密方法会强一些,破解方法一般会建立在密文加密之后,硬件解密也是两种方法:第一就是在单片机内部找到和外部加密芯片通信的程序观察发出哪些数据和接收哪些数据,同时在外部硬件设备上通过逻辑分析仪进行同时观察,记录结果,由于通过密文解密之后,设备已经成为通用设备,并且密文也是一个假的固定密文,通过这个固定密文算出的加密运算符也是固定的,从设备发给加密芯片的加密码也就是固定的,加密芯片通过固定的加密算法返回的密文也是固定的,所以这个时候程序内部可以将这个读取的部分跳过,或者在外部仿制一个固定的通信过程,取代加密芯片即可,这一步做完硬件加密就完事了。
实际上破解加密就是把单片机有特异性的部分全部屏蔽掉,从实际上说在不差钱和时间的情况下没有破解不了的系统;作为加密者能做的就是极大的增加其解密的成本和周期,拖住对方;


加密方法:

1、大量使用内联验证函数;
验证函数是用来检测本系统是否被破解的功能函数,内部应该包含加密的正反解算法,在此特别说明一定要用内联函数 inline,普通函数作为一个反复调用的模块编译时被存储在bin文件的固定地点,每次调用时会跳转到这个地点运行,如果验证函数使用普通函数,那么破解人员只用搞定存储验证函数在bin文件的这个区域就万事大吉了,那么系统中所有验证功能都被破解了;而内联函数在系统编译时会将函数复制在调用的部分成为一个分身,是一块独立部分,如果系统在不同的地方调用了10次内联函数,那么就有10个功能相同的函数在bin内,互不影响,这样可以有效的增加破解的时间成本,狡兔N窟;验证函数最好放在一些不经常运行到的程序中,在程序体积与性能允许的情况下,×××;
2、读取密文绝对不使用直接寻址;
由于Bin文件被反汇编之后成为汇编代码,如果只直接寻址(例如寻址到UID密文0X11111111地址上的数据)那么被寻址的地址是直接在汇编代码上可以看到的,直接通过查找功能就可以锁定读取密文的位置,所以一定要用间接寻址,例如我们要寻址0x11111111,可以制定一个32位数据指针,先让其等于0x11110000,再加上0x00001111,最后等于0x11111111再进行寻址,这样的方法破解人员只能在仿真时严格跟踪R0-R3寄存器,才能发现在哪读取了密文,增加其破解时间成本和难度;
3、尽量增加外部功能硬件的密文数量,获取密文后进行算法运算增加其复杂性;此处实际上是增加其余的密文,避免破解人员观察加密程序读取UID的代码位置,防止被锁定;
4、全文加密,针对于单片机系统的程序区code进行全文计算算出MD5,计算出MD5存储到某一个位置,如果bin文件中程序区段被修改,那么在检测函数针对全文进行二次MD5验证是得到的密文会和之前不同,这种方法可以查看出代码区是否被动过手脚;
5、程序中发现被破解或者动过手脚不要卡死,或者不要有任何实时的处决动作,而是尽可能的延后处决;这个很重要,因为在破解人员自认为破解成功后,会自行测试设备是否能够正常运行,如果防破解此时发现被破解直接自毁程序或者卡死,那么就是告诉破解人员还有地方没有破解完成,需要继续,这个时候需要用户做的就是设置一个延迟处决的代码,当发现系统被动过手脚,先要按兵不动,程序能够正常运行,当系统重新启动500次或者通电时间超过1000个小时,系统再自毁,增加足够的测试周期,极大地延缓测试频率,拖慢脚步,如果此时被误认为已经破解成功,并量产产品,往往会对破解用户造成足够大的经济损失;更绝的是在自毁之后再FLASH中写入当前代码的原作者以及公司,通过bin读取出提取信息,可以告发对方侵权!

原文地址:http://blog.51cto.com/13690049/2094999

时间: 2024-10-21 02:43:38

单片机 防破解 技术论述的相关文章

【转】Android 防破解技术简介

http://www.cnblogs.com/likeandroid/p/4888808.html Android 防破解技术简介 这几年随着互联网的不断发展,Android App 也越来越多!但是随之而来的问题也越来越多,这其中比较令人头疼的问题就是:有些不法分子利用反编译技术破解 App,修改代码,之后再重新编译上传到应用商店!到时候,如果用户下载了这些应用,就可能造成个人信息或者金钱的丢失!所以,作为开发者的我们,有必要学习一些防止被破解的技术手段了! 简介 现在想要破解一个 App,

全球首推iOS应用防破解技术!

近日,国内专业的移动应用安全服务平台爱加密正式推出iOS应用加密保护服务,针对iOS应用做防破解保护.这一平台的建立,弥补了iOS应用防破解市场的空白,有利于保障iOS应用开发者的合法权益,降低苹果APP用户面临的隐私窃取.财产损失等风险. iOS系统和安卓系统作为全球使用人数最多的手机操作系统,一直以来都备受关注,尤其在安全领域,安卓应用被破解.盗版的现象已经成为普遍,而iOS系统的封闭性被广大开发者一直认为是最安全的系统,所以一些人想当然的以为他的应用也是安全的.然后事实并非如此.报告显示,

STM32F413/423/446芯片解密单片机破解技术解析!

STM32F413/423/446芯片解密单片机破解技术解析! 深圳凯基迪科技,专业承接各种高难度加密芯片,现承诺STM32F413解密STM32F423解密STM32F446芯片解密单片机破解100%包成功!如有需要欢迎咨询:132-6677-8242 , QQ:528621124 STM32F413/423 Cortex-M4入门级高性能微控制器: STM32F413/423微控制器为高性能STM32F4系列单片机的入门级产品,实现了运行模式下的动态功耗和处理器性能之间的最佳平衡,即使在3.

App山寨疯狂 爱加密Apk加密平台防破解

App山寨疯狂 爱加密Apk加密平台防破解,Android系统由于其开源性,眼下已占领全球智能机近80%的市场,远超微软的WP系统和苹果的IOS系统.然而也正是由于开源性,Android盗版App在国内横行泛滥,盗版App通过广告骚扰.窃取账号.盗取隐私.远程控制.恶意扣费.购物欺诈等影响用户的体验,侵害用户利益.文章出处:www.ijiami.cn App山寨疯狂 爱加密Apk加密平台防破解,面对严重的App山寨横行的现象,国内第三方针对Android应用加固的平台爱加密,致力于保护App安全

手游类App安全防破解攻略-先来做个漏洞分析吧

2014年6月初,爱加密高调推出免费自动化App安全检测平台,这是国内首家自动化智能App安全检测平台,也是爱加密推出的一个重磅产品,甚至在目前整个互联网行业,包括移动互联网行业还没有这样智能完善的服务平台出现,其应用方向和行业前景相当乐观.       只需一键,专业简单,让风险漏洞无处遁形 目前来说,移动应用开发者众多,他们可能不知道自己的应用是否安全,是否容易被他人破解进行二次打包.出于此类需求,爱加密推出爱加密免费漏洞分析平台.该平台集成了目前黑客最常用的各种破解方法与思路,模拟黑客攻击

新手如何制作防破解网络验证系统?

百宝云介绍 百宝云是一款云服务器产品,专为快速打造个人云端服务器的云应用产品.你不用懂任何高深的技术,只需要懂百宝云的脚本语言即可,百宝云的脚本语言支持中文开发和英文开发,一个开发菜鸟也能轻轻松松上手开发自己的网络服务,百宝云提供完善的全套服务.强大的第三方接口可以和任何开发语言对接,开发者无需变更自己熟悉的开发环境,仅仅需要按照百宝云语言规范,通过com组件,Get或者Post的方式即可轻松访问自己的云端服务器. 百宝云提供的不仅仅是一种虚拟机或者一个操作系统,而是全面的,统一规划的网络服务架

.NET软件防破解方法源码混淆

其实我们只要在软件设计的关键几个环节,利用专业的控件进行保护,就可以保证软件的安全.我们可以在软件设计时和运行时对软件代码进行保护.在设计时的保护,主要的保护手段是,混淆源码:在运行时的保护主要的手段是加壳程序和授权控制.下面我们分别对混淆.加壳.授权控制的方法和采用的控件做一一讲解. 源码混淆 源码混淆就是通过对程序源码的分析,改变源码的原始面貌,降低源码可读性,可对函数甚至流程进行混淆.虽然目前很多开发工具都能进行简单的混淆,不过实用性不大,采用专业的混淆控件对程序源码能起到有效的保护,有些

互联网软件如何防破解

国内推广软件,你要面对的最大问题莫过于软件被破解了.很多软件作者反映说,原来软件在被破解前交费注册的人还不少,但被破解后收入就直线下降,连成本都收不回来.您想,有了免费的东西人们还交那个钱干什么? 在这里,我借鉴了一个软件作者的防破解经验:发行1.0版时2.0版已经写的差不多的.发行1.0版时要把1.0版的防破解或者注册算法写的简单些等着别人去破解.一但出现1.0的破解,等待几周,这几周的时间足以使网上1.0的破解版遍天下. 然后,分析破解过程更改2.0版算法(层层加密,复杂再复杂),虽无法根除

单机 & 弱联网手游 防破解、金币修改 简单措施

手游常用破解方法 对于一个弱联网或者单机游戏,可以从以下方面去破解: 1.找得到存档文件的,直接破解修改存档文件. 2.找不到存档文件,就在游戏运行时借助一些软件来修改数值,比如用各种修改器手游助手来修改金币. 3.找不到存档文件.数值还修改不了,就直接反编译,Java就看Java.C#就看IL.C++就看汇编. 文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn 手游防破解对策 好了,防破解我们也从以上方面来做 (或者还有其它