【翻译】R4ndom破解教程全文翻译(For新手):第十八章
【翻译】R4ndom破解教程全文翻译(For新手):第十八章 翻译都是我理解的方式进行描述,可能和原文不一致。本教程中文版只在吾爱破解论坛 首发。转载请注明来自吾爱破解论坛@52pojie.cn 正文开始 试用时间和内存断点 解释:使用时间通常来说是一个程序提供一段时间让用户使用,超过这段时间后程序将不再工作或者减少功能工作,一般会给出30天的试用。当一个逆向工程师在破解这一类的程序时会去找到注册码,如果我们比较懒的话,就找到程序中的试用时间,让这个时间无限话。 教程中,为了保护作者和软件,我下载的软件在CNET网站上的下载次数只有2次,估计是作者已经不再提供维护和支持了,本程序的原名为:Secrre Data-Hide a File into an image.exe,而我将它改为:SecureData.exe。而且不含附带的DLL文件,因此该程序并不能真正的工作。但是足够本教程的教学。 打开程序后会弹出窗口显示了可以试用的次数,点击OK后来到主界面点击About后输入Key后,点击Register出现好了,目前我们已经知道程序的大致流程了让我们用OD来打开程序搜索字串后,我们可以看到我们没有看到和试用信息一样的字串,但是注意红色框 试用期逆向工程师必须要知道的一个重要信息,在程序中必须要保存试用期的次数或者天数,这样来说试用期一定是保存在什么地方,通常情况下是保存到文件或者硬件中。 大多数时候,保存这个数据的地方很容易找到,只是逆向工程师会把自己往复杂的方向去想。最简单的方法就是看字串和搜索注册表或者文件路径。比如:Software\\AppName\\Key或者AppName\DataFileName.ini or AppName\DataFileName.dat 多数会采用引用window 系统变量,如%WINDOWS%,这表示在Windows目录。 当然,如果程序不是很大,你还可以一个Call一个Call的看。或者注意一下windows API,CreateFileExA,RegSetValueExA等等,确保数据是保存到文件还是保存到注册表中。而本程序使用了2套做法,在硬盘上创建了文件并且将它隐藏。 看会字串搜索结果这里不会讲解注册表的树形结构,我们直接打开注册表,使用Window +R键,输入Regedit,打开注册表然后打开HEKY_LOCAL_MACHINE,找到字串Windows Data Count,然后可以看到我们看到Data Flag显示为7,我们把这个值改为100然后保存后显示现在重新打开程序看上去修改成功了,这比想象中容易 分析程序 另一种方式就是我们通过修改程序代码达到同样的效果。这样做的好处就是不用每次快到时间就去修改注册表。记住,当我们运行程序的时候请记住还剩下的次数,让我们去看看这个地方程序到底做了什么,首先这个字串开始于406078这是一大段程序,我们可以看到这是windows程序的初始化消息这里先把一个ID为0x41D的窗口句柄作为GetDlgItem的参数,让我们用Resource Hacker看看资源查看GetDlgItem的用法后,我们把断点设在40604C处,然后重启程序,来到我们的断点处,单步分析,发现GetDlgItem的返回值保存到EDI中。下一条是把内存418FC4的数据放到ESP+C中,跟踪这个地址我们看到数据是403980.如果你继续跟踪就会发现这是一个Callback。我们假设这是一个对话框。再往下两行,把内存41E084保存到eax中,而这个值为8,这个值和试用次数是匹配的。这就是我们要找的。 最后,我们在去看看字串这个看上去是C语言中格式化,如果你熟悉C/C++语言的话。printf(“My IQ is a whopping %d”, 18); 我们就看看这个%d是在那里被赋值的,来到然后程序跑起来,我们看到试用信息,点击ok按钮后来到主界面。 打补丁你先想到的是为什么不直接在地址406072的地方把试用次数改大,比如MOV EAX, DWORD PTR DS:改为:MOV EAX, 99但是不能这样做,这样做虽然程序会显示试用次数很大,但是其他地方会检测到数据小于1时,程序将不再工作,所以我们必须要找到程序去改变这个值的地方,在程序修改后我们再进行打补丁(修改)。 所以我们要在这里设置硬件断点就是这个内存被写入的时候断下来现在我们只剩下6次试用次数了,我们设置了硬件断点,不论在任何地方对这个地址执行写操作,我们都会断下来。重启程序,OD会断在我们设置的硬件断点处看图片顶部,我们可以看到注册表不是创建一个键值,而是打开。然后判断是否能打开,如果不能打开则跳到坏消息处。这就说明需要管理员进行操作,如果不出错405A96的call就会把值读取出来保存到ESP+C中,如果有第二个则保存到ESP+8 我已经分析了代码并给了注释,建议你自己分析代码 我们发现这个值(6)已经搬到了405AAD内存里面了最后,我们在检查一下其他值,然后关闭注册表控制。那么问题来了,哪个位置是做补丁最好的地方呢?回看代码,发现在405ADD被赋值后就没做过任何变化了。如果我们把405AAD修改为MOV DWORD PTR DS:, FF,这会导致程序代码不正常。因为会被删除下两条命令。那么就在前面405A9F处进行修改吧然后我们可以看到步过这个命令后,内存41E084的值变成FF了然后跑起来,试用信息为:现在我们的程序不管打开多少次,这里总显示为255了。 虽然说去掉NAG弹窗,直接进行破解是最好的,但是我会结束这次的教程。不去做破解的原因有2,1是通过逆向,你知道程序工作原理以及设计程序时避免这样的检测。2有时你不能破解一个程序,对你来说是下一个好事。 最后附上原始教程与使用软件詳細的圖文教學~~謝謝sighout大大的分享 siuhoapdou 发表于 2016-9-19 16:42
詳細的圖文教學~~謝謝sighout大大的分享
不是大大,我是新手 感謝LZ 全部都載下來慢慢看 絕對支持!! ryan86128 发表于 2016-9-19 21:22
感謝LZ 全部都載下來慢慢看 絕對支持!!
一起加油 慢慢研读 分析的很详细,小白也能看懂,谢谢楼主的分享
感謝LZ !好人啊。通俗易懂 又有用。赞 终于找到能看得懂的,谢谢分享学习!! 先谢楼主的无私分享
页:
[1]
2