利用x64_dbg破解一个最简单的64位小程序图文教程
x64_dbg 是 Windows 下的 32/64 位调试器,类似 ollydbg。x64 dbg 采用 QT 平台编写,官方包含简体中文语言。熟悉 ollydbg 调试工具的应该很容易上手。x64 dbg 整体前景比较乐观,功能有待更强。
最近在研究学习一些逆向的东西,其实之前也涉及到这方面的东西,只是之前的系统和应用,基本上都是32位的,所以直接用od来分析就行了,这方面的资料在网上很多,随便一搜到处都是,不过随着技术的不断发展,64位系统出现了,随之64位的应用也出现了,而od只能分析32位应用,所以一些64位应用,od是没办法分析逆向的,所以,在这里要提到另一个可以用于分析64位应用的调试软件,名字叫x64_dbg。网上对于这款软件的介绍很少,只是说能分析64位应用,具体用法也找不到,不过我找到了它的一个教程,里面有一个最简单的64位应用,但网上是用英文介绍的,对于一些英文不好的同学来说,看起来可能比较费力,我就大概说说我自己的一个分析过程,供大家学习!对了,先提醒一下哈,我现在还是在这方面的一个极度小白,说的不好或者不对的地方,请各位及时提出来哈!
首先是这个最简单的64位小程序,



当然了,这个密码肯定不对,软件也提示了,那我们怎么办呢?这个时候就需要用到文章开始的分析工具了,x64_dbg。我们先打开这个

我们可以看到,这个工具,整体跟od极为相似,所以我相信,会用od的人,对于x64_dbg来说,肯定不是什么问题。然后我们再用x64_dbg打开simple.exe,当然了,打开方法有两种,一种是file里面f3,打开这个exe,也可以file里面alt+a,附加exe进程,两种方式对于这个应用来说,基本没什么区别,好了,我们先打开这个exe,附加到这个x64_dbg中来,会得到如下界面

熟悉od的同学,肯定对这种界面相当熟悉了吧,具体的我也不多说了,下面看看如何破解这个exe,还记得刚才我们输入了一个123456吗?exe会弹出一个提示框,上面提示了一句话,“Authentication Failed.Invalid Password”,那好,就从这句话入手,在cpu界面,点击右键,选择搜索字符串

搜索这句话,就能得到以下的东西

那好,我们点击进去看看是什么?

会od的朋友,看到这里,应该就比较明白了,中间有一个jnz跳转,然后再弹出的这句话,我们可以猜想一下,应该是密码输入不正确,就导致了这个跳转,先来点简单的,要如何不让程序跳转呢?最简单的方法,现在是跳转的0x59ea68,其实下一个地址是0x59ea5a,我们先把跳转地址改成跳转到下一行吧,首先,在0x59ea58这行按F2下一个断点,然后在应用里面输入123456,看会不会在这里断下来

很好,断下来了,我们再将地址改成如图所示,点ok,再运行,很好,已经提示正确了

如果我们要保存修改过的exe,如何保存呢?上面有一个


另外保存一个exe,这样,你无论输入什么,都会提示正确了。目前破解算是完成了第一步。
然后我们再看看第二步,怎么才能得到正确的密码呢?其实这个才是我们破解一个应用比较关键的问题,有些应用,我们可能不会给它打补丁,只需要了解了他内部的东西,直接就可以破解了,我们再重新来看看跳转前,有一句,lea rdx, qword ptr ds:[59EAF8],执行完后,再来跳转的,看来这个应该是比较,那我们dump一个0x59EAF8的值,看看是什么


看到这个,这么长一段字符,编程的同学,应该都能猜到,这个应该是md5,那我们看看这个md5能不能解密呢?虽然说md5是不可逆的,但如果有字典,有些还是可以,那我们来试试,先拷出这段字符串10db8e415b857a61e18ef5d4db8e4f38,上网解密试试

没想到真的解开了,看来密码可能是这个,我们来试试

果然,密码真的是这个,到此,这个sample.exe的分析到此也结束了。
小结:这个exe本身是一个非常非常简单的应用,所以分析也十分简单,所以大家不要笑我哈,后面碰到的应用,肯定比这个复杂不止十倍以上,所以大家在分析的时候,要根据应用本身的情况来分析,我写这个教程的目的,还有一个,因为x64_dbg网上能查到的资料确实不多,我写了这个,希望以后有人用到这个分析软件时,提供一点点思路!