大家好!
今天要为大家分享的是——64位数据扫描及工具介绍!
x64位程序的分析,主要用到两款工具,而这两款工具同x32位程序的分析工具类似,一款是CE,另一款则是xdbg64。
CE与x32的用法大致相同,主要用来对数据的突破口及地址进行扫描(如图)
有人可能会说64位程序应该用8字节来扫描,其实大部分作为突破口的数据都是从4字节开始扫描的,因为64位地址的需求还不是那么大,有些游戏数据中甚至只有基地址等少量地址是8字节的,其他的都是只有4字节的有效数据。虽然我们扫描的是4字节的数据,但是在64位的CE中是可以扫描出8字节的地址的(如图)
当然也有一些游戏中会出现很多的8字节的数据(如图)
这是一款游戏中的某种对象的ID,虽然这个ID是8字节的,但是我们看到他的地址缺只是4字节的。所以说目前为止,对于64位程序的数据,大部分还是以4字节为主的,灵活的去运用ce的扫描功能才是关键。
ce的其他功能和32位都大体相同,毕竟是同一款软件的不同版本,这里就不过多的讲解了。
下面我们来看一下xdbg64,xdbg也分为32和64版本,他的界面和功能都和OD很像。随着游戏公司对OD的检测力度越来越大,xdbg也逐渐成为逆向调试器的主流。不过xdbg明显还是不如OD好用,有很多插件都没有被完美的移植(如图)
图中是一款xdbg64的界面,从左到右,从上到下,依次为反汇编窗口,寄存器窗口,参数窗口,数据窗口,以及堆栈窗口。这些都是xdbg64的常用显示窗口,除了参数窗口是为了让我们更加清晰和容易的分析x64程序的函数参数,其他的和OD都没有什么差别。
下面有几个与32为OD操作不同的地方,我们着重看一下。
首先是查找用户的注释,在OD中我们可以在反汇编窗口中点右键来找到,但是在xdbg中是没有的,我们需要再左上方的视图中,或者在快捷按钮中找到(如图)
在数据定位时,反汇编窗口需要拉倒顶端去查找,否则的话会漏掉很多(如图)(如图)
这是我们在不同位置使用相同的机器码进行的定位,这说明xdbg的定位只能定位到模块内以下的代码,而无法将上面的特征定位到。
然后是数据窗口中跟随数据,在OD32中我们可以通过DD DB等指令去跳转并查看地址中的信息,但是在有些xdbg64中,这类插件并没有被完善,所以我们只能通过ctrl+g的方式去跳转到我们需要查看的地址(如图)
还有一些细节方面的不同,比如模块列表无法通过ALT+E查看,只能在上方导航栏点击符号进行查看(如图)
以上就是在使用xdbg64中需要注意的一些地方,其他的内容我们会在后面的文章和视频中进行详细的讲解。