软件加密技巧分析

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

最近两周一直忙于项目中一项数据加密.其中涉及到软件加密部分很具有技巧特点.觉得很有意思,今天拿来分析一下.

其实在这所谈的软件加密我们无需把这个范围定义太过广泛. 简单着重一个点来看. 行业里软件经过多个版本更迭已经趋于一个成熟的产品在流入市场时, 这时我们就面对一个问题:版权和核心数据保护. 目前国内关于软件版权意识依然不是特别浓厚, 因为只有在牵扯到实际利益时有些人才意识到版权和核心数据保护重要性.

本篇的目的本来是想谈谈在加密算法设计中涉及多重策略使用, 大多是算法在保密性设计上多重规则. 但这个需要一定密码学基础才能直接能看懂.所以本篇暂且来先讲讲软件加密过程中使用各种实用的技巧. 如下我会演示目前在软件加密中所采用各种技巧和原理. 而一个好的加密算法和加密策略的设计也是因为适用场景,范围不同而不同. 当然这也是仁者见仁智者见智.

对与软件的加密保护,有些加密技巧的实现并不需要你了解太多的汇编和系统底层的知识也能做到. 其实无论你的软件采用何种方式来加密.大多是情况下都会归结为某些条件判定.在各种条件下触发不同内部数据操作,当然如果加密程度较高软件产品, 条件发生变化后他们就不直接动的是判定数据,而是下一个条件判定策略的改变. 这意味解密过程的因素是依赖多方面的.

当然定义这些固定行为操作依然依赖的是不同语言的Code来实现. 我们在此不必考虑如何消除这些代码Code,这些执行代码必然会以各种形式存在不同地方正确执行. 我们把核心转向如何有效隐藏和保护这些代码.

<1.1>技巧一:有迷惑性的代码

通常来说,开发人员和解密者都具有很好逻辑思维能力.其实一般情况下大多是同行. 开发人员为了执行代码的效率和空间会不同重构剔除无用代码和逻辑. 是执行这段代码看起来简洁. 其实解密者也是这么理解开发人员的. 他可以通过分析程序中每一段指令来追索编程人员的保护思路. 也就是我们常说各种”逆向工程”方式获取加密逻辑. 如果开发人员在编写这段逻辑是加入大量无用代码. 故意把程序复杂化. 毕竟开发人员使用都是第四代高级语言.而解密者能看到的是汇编代码. 想搞清楚那些代码使用的,那些代码是无用的 并不是意见简单的事情.啊

<1.2>技巧二: 虚假的检查

上面方式其实只是在量上加大解析的难度. 其实有时还是难免被机器程序模拟通信过程. 那么对于已经入侵进来的人. 虚假判断可以抓到他们访问记录.

在程序中故意把返回结果和一些错误的答案进行比较. 比较结果肯定是错误的. 如果发现在通信过程中这个比较结果是正确的, 则这个时候可以证明有人在模拟我们检查逻辑. 正在试图破解软件. 反击的手段可以有多重选择.

<1.3>技巧三: 设置输入和输出迷宫

类似我们常在某些关键设备中设定USBKey身份识别系统验证,它内部原理.就是在一定程度上增加了输入和输出的迷宫.

现在USBKey在于设备进行通信时采用密文数据方式. 即使有设备能够模拟USB通信方式截取到通信数据,依然是密文形式. 同时作为软件开发商为了安全起见定义一套自己的加密的规则和算法,对数据输入输出进行再次加密.这样即使USBKey 丢失数据依然不会外流.

<1.4>技巧四: —计时功能

 

对于这个计时功能, 特别是在商业软件中使用最为广泛. 因为这里面涉及到一个试用期限问题. 我还记得在04年破解一个软件时只需要修改一下XP系统时间既可以在安装时自动破解成功. 后来才发现原来这款软件设置的加密规则时间戳的设置时即时的.

开发商可以在第一次运行,把系统时间记下来.创建一个起始时间文件存储.类似软件试用期 为30天. 在起始时间上加上30天期限 作为结束时间存储为文件格式.

当下一次用户使用软件时判断,如果两个数据时间文件都不存在进行创建. 第一次创建成功后, 下一次用户再来使用软件.时则 起始时间数据文件更新成当前系统时间,这时要比较新的时间是否比开始时间文件中时间要早,. 防止用户修改系统时间.然后再与结束时间比较. 看是否在范围内.这样就完整实现时钟功能.




本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/763846

相关文章
|
6月前
|
数据安全/隐私保护 Android开发
2023安卓逆向 -- 某合伙apk登录加密分析
2023安卓逆向 -- 某合伙apk登录加密分析
70 0
|
3月前
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
5月前
|
人工智能 监控 安全
未来金融将如何借助加密货币发展,可以从以下几个方面进行清晰的分析和归纳
**区块链与加密货币推动金融革命:降低交易成本,提高安全,扩大服务范围,赋能智能合约与DeFi,及改变监管方式。加密经济助力金融效率与普惠性,但也伴随风险,需平衡发展与监管。**
|
5月前
|
存储 SQL 安全
网络安全与信息安全:漏洞分析与加密技术探讨
在当今数字化时代,网络安全与信息安全日益成为全球关注的焦点。本文深入探讨了网络安全中的常见漏洞类型及其影响,并介绍了当前流行的加密技术和提升安全意识的方法,旨在为读者提供系统的知识分享与技术探讨。
51 3
|
JavaScript 数据安全/隐私保护 Python
JS逆向 -- 某视频vurl值的加密分析
JS逆向 -- 某视频vurl值的加密分析
222 0
|
JavaScript 数据安全/隐私保护 Python
JS逆向 -- 某平台登录加密分析
JS逆向 -- 某平台登录加密分析
157 0
|
6月前
|
存储 前端开发 算法
加密算法在网络通信中的应用及优势分析
本文将探讨加密算法在网络通信中的重要性,以及不同加密算法的应用和优势。通过对前端、后端、Java、Python、C、PHP、Go等多种技术的分析,我们将了解在日益增长的网络威胁下,加密算法对于确保数据安全和隐私保护的必要性。
|
6月前
|
Android开发 数据安全/隐私保护
安卓逆向 -- FridaHook分析3DES加密值
安卓逆向 -- FridaHook分析3DES加密值
56 0
安卓逆向 -- FridaHook分析3DES加密值
|
JavaScript 数据安全/隐私保护 开发者
JS逆向 -- 某视频vid值的加密分析
JS逆向 -- 某视频vid值的加密分析
111 2