基于OllyDbg的软件漏洞技术分析

2022-09-11

为了设计出更加安全的软件加密方案, 就必须深入了解软件反调试技术, 只有对软件反调试有了深入的研究, 才能设计出有针对性地、更加安全的加密方案[1]。

1 软件加密技术分析

1.1 正确的注册码不应在内存中出现

明码泄漏最有名的利用就是数据约束性的秘诀 (Data_constraint) , 其依据参数或局部变量通常都是存储在堆栈中的, 而软件作者一般都使用局部变量存放临时计算出来的注册码, 以比较真假, 使得它们的位置很接近。比如“序列号?=?F (用户名) ”算法计算出来的序列号是以明文形式在内存中出现的, 很容易在内存中找到它, 从而获得注册码。测试如下代码:

编译后动态跟踪结果在lstrcmpA函数处设置断点后, 运行程序, 用户名输入“123456”, 序列号输入“吉胜军”, 点击注册后, 两者会出现在相邻的内存区域。

解决的办法经反调试得知:如果把序列号分步算, 分步验证, 就算泄漏也不会同时全部泄漏。再就是算法中故意出来很多假的明码, 迷惑破解者。利用加密算法将注册码变换成一个函数地址, 建立异常处理后去执行, 如注册码不正确, 将无法得到正确的执行地址, 同时这种方法没有比较和跳转。还有如F 1 (序列号) ==F2 (用户名) 对序列号采用一种算法处理, 生成tempSn, 然后对用户名采用另外一种算法处理, 生成t e m p N a m e, 如果tempSn==tempName, 则验证成功[2,3]。

1.2 反字符参考技术

就破解软件来说, 调试工具中如OllyDb g中的“字符串参考”可以作为破解软件的切入点。它基于这样一个原理, 出现字符的地方便是相关代码的附近。由于高级语言的特性, 条件表达式都被编译成jz、jl、jg等汇编指令。这些指令都能简单的在中间加上n而把判断的条件反转, 例如jz是比较两个数, 如果相等便跳转, 而jnz则用于不等的情况。

测试如下代码:要求用户输入序列号, 比较用户输出的内容, 显示成功或者失败。正确的序列号只有一个“吉胜军”。

使用Ollydbg打开debug模式编译后的文件。在主菜单中选择:插件->超级字串参考+ (U) ->查找ASCII。双击“注册成功”之后, 我们便来到比较注册码的地方, 跳转只有一个, 将它改成jz、保存、破解完成, 这是由于debug模式编译会保留源代码与汇编代码的对应关系。

理解字符参考的实现方法, 有助于理解字符串参考很可能通过相关指令得到程序使用的字符指针。例如使用类隐藏函数指针, 测试代码如下:

显然, 字符参考只会把破解者带到构造函数。注意编译器为了确保类的正常使用, 构造函数在引用该类的函数中被优先执行。事实上, 到达构造函数, 其实也说明离关键代码不远了[4,5]。

指针有很多种, 可以是函数指针, 也可以是指向某个数据结构的指针, 甚至是指向指针的指针, 例如用于实现链表的指针。S i m p l e.e x e的在内存空间中的基址是00400000, 40本身就是“@”的ASCII码, 字符串参考是这样排除非字符指针的, 首先检查指针指向的首个字节是否有效字符, 然后过滤所有不符合的项。测试代码如下:

在“Hello Ultra String Reference”前面加了一个无效字符编码“0x1f”。重复前面的操作后, 发现无论你选择“查找ASCII”, 还是“查找UNICODE”都无法找到“测试”和“Hello Ultra String Reference”的字符参考。

2 结语

软件如果没有针对性的反调试措施, 软件加密也显的比较脆弱, 软件就等于直接裸露在破解者面前。软件中的加密算法一般很难通过外部的逻辑分析或穷举筛选来破解, 对软件加密的最大威胁来自反调试, 因此, 软件的反调试是软件安全的最大威胁。

摘要:软件加密是保护软件开发者利益的必要手段, 是软件开发过程的重要组成部分。传统的软件加密方法主要依赖于加密算法的强度, 隐蔽性差、可靠性低、算法设计漏洞颇多。本文通过OllyDbg反调试软件对现有软件加密方案进行逆向分析, 分析了现有软件加密算法出现漏洞的原因及破解者是如何利用已知信息来进行软件破解。

关键词:软件加密,OllDbg,反调试,算法

参考文献

[1] 冯振国, 何瑞春.随机多重加密方法在小型软件注册中的应用[J].计算机工程与科学, 2009, 4.

[2] 朱建启.软件许可认证的研究与实现[D].吉林:吉林大学, 2004.

[3] 门乐林, 蔡平胜.基于RSA的双重加密技术在软件注册中的应用研究[J].网络安全技术与应用, 2006.

[4] 赵倩.数字水印版权保护系统[D].北京:首都经济贸易大学, 2004.

[5] 谭毓安, 卢超, 崔志刚.基于DSA算法的软件注册码保护[J].微型机与应用, 2005:21~23.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:基层政府采购业务电子化系统探索与实践下一篇:大学本科导师制工作中青年教师角色及存在问题的探讨