反汇编的应用1-软件破解

下面的案例主要介绍反汇编的使用价值,即在软件加解密方面的应用,可以很好地体会到基本的汇编指令在实践中的应用,也可以认识到Ollydbg在软件调试过程中的威力。

选用的示例程序CRACKME.exe程序来自看雪论坛的“从零开始用ollydbg cracking”系列。本文只做学习交流用途,不作其他任何用途。

下面开工:

1. 采用ollydbg打开CRACKME.exe,命令:f3;

2. 注册的正确与否,程序会弹出窗口,窗口上会带有字符串,那我们这里就以正确与否的字符串作为线索;命令:右键->search for-> all referred strings;

3. 找到如下的string:Great work,mate! now try the next CrackMe!",并且双击进入,跳转到调用该字符串的地方;

4. 从下图可见,下面两个弹出窗口就是最后看到注册信息对错的提醒窗口,那么以这两个为线索,查看是从哪里跳转到这两个函数调用起始处的;

5. 鼠标停在push 30处,可以看到下面的观察窗口显示:local call from 0040124C;

也即意味着push 30处是由0040124C处跳转过来的;那么查看该处的指令;

6. 此处关键的指令就在401241处,通过该处指令的比较,来确定后面序列号的正确与否,再来选择后面的跳转。

7. 通过在CMP EAX, 0指令处打断点,我们F9运行程序,程序弹出注册窗口,我们输入:

然后按ok后,整个程序就停在我们下断点的地方。如下图所示,

8. 根据右边的注释,上述的流程就很清晰,401228处的指令将用户名abc字符串地址压入,然后进行处理后,将结果保存在EAX中,后面的将序列号123也做同样的处理;可以猜测对于序列号操作的结果应该输出在EBX中,这样后面的CMP EAX, EBX这条语句才说得通;

9. 我们F7单步跟入40122D的函数调用,看到如下的处理过程:

简单跟踪下的话,可以发现上述的代码等同于下面的C语言代码:

int nameCrack(char* str)
{
	char t;
	int sum = 0;

	while(*str)
	{
		int t = (int)(*str);

		if(t > 0x5A)
			sum += (int)(t-0x20);
		str++;
	}

	sum = sum ^ 0x5678;
	return sum;
}

对于我们的输入abc,上述函数的输出为:0x56BE;

10. 同样地,我们对于401238处的指令也进行跟踪调试:

上述的代码等同于下面的C代码:

int numCrack(char* str)
{
	int sum = 0;

	while(*str)
	{
		int c = (int)*str - 0x30;
		sum = 10*sum + c;
		str++;
	}
	return (sum ^ 0x1234);
}

11.根据调试,EAX和EBX的值分别为:56BE和124F,两者不同,因此解密失败;为了让两者相同,我们保持abc不变,改变序列号来实现。

12. 56BE与0x1234亦或操作后的值的十进制表示为:17546。因此我们只要输入的字符串操作的值sum等于17546即可。又因为数字的ASSIC码是从”0x31”开始的,

而代码中有减去0x30的操作,因此我们输入的数字只要是17546即可。

时间: 2024-10-09 22:59:31

反汇编的应用1-软件破解的相关文章

OD调试9—实例:深入分析代码完成软件破解

OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出的一些走法,逆向程序的算法,才能体会逆向的真正乐趣! 所以,今天的主题是:是男人,就跟进去吧~ 这次还是使用一个比较简单的程序,不然太复杂的话,一步步跟进程序可能会把自己搞崩溃,脑子恐怕不够搞.大家凭自己的能力,能进入多少就进入多少,一分不少,一寸不多!能力是培养出来的,耐心! 试验软件:MrBil

史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

如果你看到了这篇博文,绝对保证不虚此行.仅仅5行脚本代码,即可破解99%的过期软件. 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久没用过它了.今天安装好,导入许可文件,结果问题出现了,提示没有激活.怎么回事??仔细一看,原来许可文件到2013年12月份就过期了(乌鸦飘过...) 在网上找了半天也没有找到一个新的许可文件,结果一狠心,手动改了一下日期,再启动,ok了,把时间再改回来.本来事儿到这儿就完了.但是结果光今天一天就手动改了好几次系统时间,这就太让人无

软件破解技术初探

MarkdowPad 2是Windows下的一款基于.Net的离线Markdown编辑器,普通版功能受限,专业版需要购买序列号.网上意外看到一篇文章,说的是用工具破解MarkdownPad,感觉比较有趣,就做了学习和尝试(后面简称为"原文"). 文章链接在此 http://www.zan3.com/zan492.html 用ILSpy查看C#源码 可以使用ILSpy直接将基于.NET的EXE文件反编译成源代码进行查看(语言可以选择 C# / VB / IL). 在程序目录中找到Mark

小米抢购软件-小米抢购软件破解版

在这类非常感谢群主的这个HttpHelper类,但是不是所有的Cookies都是能抓得住的要一个个页面的去分析,有些Cookies是通过脚本增加的,其实登入了小米很简单但是小米也不笨很多COOKIES也不是给你抓得住的在,我也是查看了他的很多AJAX脚本,看得都头疼了,但是就这个毅力使我在短短1个星期和有着HttpHelper的帮助下完成了,上个星期小试牛刀抢到了手机.更多资源:你报   http://www.nibao.net 小米抢购软件-小米抢购软件破解版

简单软件破解入门

一.破解准备: 组合一: 侦壳 language.exe 脱壳AspackDie.exe 反编译 W32Dasm黄金中文版 十六进制编辑器 UltraEdit 组合二: PEid Ollydbg 二.破解软件步骤: 1.查壳 一般软件都会加壳,所以我们想破解软件,首先必须知道待破解的软件所加壳的类型.在这之前,我们需要先了解壳的概念.什么是壳?所谓壳就是一个保护程序,将可执行文件压缩,保护软件版权信息,不让人随意改动.最常见的加壳软件有ASPACK,UPX,PE compact等等. 其中查壳工

软件破解入门(暴力破解CrackMe)

所谓暴力破解,就是通过修改汇编代码进而控制程序的运行流程,达到不需注册码也能正常使用软件的目的.相对于解出算法进而编写注册机,暴破的技术含量是比较低的.但也正是因为一本05年的杂志上介绍“暴力破解”的文章,让我入了这个大坑.近来想重拾调试器,就先从最简单的CrackMe入手,熟练一下各工具方法. 下载CrackMe3文件(我用的是看雪<加密与解密>中的CFF CrackMe #3 程序  http://pan.baidu.com/s/1dD9v9x3 ). 1.查看此程序是否加壳.加壳的话还得

AMTEmu:一款adobe软件破解神器

Adobe系列软件对大家来说应该都不陌生,PS.AI.DW.PR.FL等等都是设计师和爱好者必备软件,软件据用试用期,超期了需要付费才能使用.如何适合国情的使用adobe软件呢,下面介绍一款简单实用的破解工具--AMTEmu. AMTEmu使用很简单,以AI cc 2015为例,成功安装AI后,打开AMTEmu,选择你要破解的版本,点击Install. 然后找到对应的amtlib.dll文件,点击打开.如果安装在默认的C盘,路径是:C:\Program Files\Adobe\Adobe Ill

某某图书管理软件破解版下载

本破解版(含注册机)图书管理系统支持扫描EXCEL导入. 软件截图如下,大家看了后都明白有哪些功能,非常实用. 软件下载地址: 下载地址1  下载地址2   下载地址3

QQ举报QQ群/QQ举报软件破解免费版

破解版软件含有注册机,淘宝售价几十元的 免费长期使用 不限举报次数 该软件采用独有的QQ举报通道,最高效率的举报软件 保证加好友出风险提示:对方号码近期已被他人举报,请谨慎添加! 专治各种骗子,婊子,竞争对手,仇人,坏人,贱人  注:本软件是电脑软件,不适合手机端运行 软件下载地址: 下载地址1  下载地址2   下载地址3

【转】史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

原文:http://blog.csdn.net/xiaoxian8023/article/details/26285361 如果你看到了这篇博文,绝对保证不虚此行.仅仅5行脚本代码,即可破解99%的过期软件. 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久没用过它了.今天安装好,导入许可文件,结果问题出现了,提示没有激活.怎么回事??仔细一看,原来许可文件到2013年12月份就过期了(乌鸦飘过...) 在网上找了半天也没有找到一个新的许可文件,结果一狠心,手动