ida pro使用教程-ida pro最新使用教程
好酷屋教程网小编为您收集和整理了ida pro使用教程-ida pro最新使用教程的相关教程:IDAPro能够创建其执行的映射,以符号表示(汇编语言)显示处理器实际执行的二进制指令。IDAPro中已经实现了先进的技术,以便它可以从机器可执行的代码生成汇编语言源代码,并使这种复杂的代码更具人
IDA Pro能够创建其执行的映射,以符号表示(汇编语言)显示处理器实际执行的二进制指令。IDA Pro中已经实现了先进的技术,以便它可以从机器可执行的代码生成汇编语言源代码,并使这种复杂的代码更具人类可读性。
调试功能通过动态分析增强了 IDA。它支持多个调试目标,并且可以处理远程应用程序。其跨平台调试功能可实现即时调试,轻松连接到本地和远程进程,并支持 64 位系统和新的连接可能性。
几天前,我们从一位IDA用户那里收到了一个小型无害的可执行文件(test00.zip;使用密码123解压缩两次),无法在IDA中调试。断点不会中断,并且程序将失控,就好像调试器太慢而无法捕获它一样。当我们第一次在IDA中加载程序时,它抱怨找不到导入部分。这种类型的情况经常受到受保护的可执行文件,打包的蠕虫等的影响。
第二件值得注意的事情是,切入点跳跃…无处。标记为红色的地址通常反映 IDA 无法解析的位置。
此代码采用尝试来防止反汇编,因此,默认加载参数不合适。这种类型的模糊代码演示了一键式方法固有的问题。
但是,如果我们进一步研究,例如通过在手动模式下加载文件,该怎么办?在此模式下,用户可以指定应加载文件的哪些部分。为了安全起见,让我们加载所有部分。让我们取消选中”制作导入部分”复选框,以避免”缺少导入”消息。我们有这个:
一旦我们回答了有关文件每个部分的问题,我们将得到这个列表:好多了!
现在我们摆脱了未解析的地址,我们可以分析程序。我们的可执行文件的第一个指令是跳转,它跳转到程序头:loc_400158。嗯,程序头不应该包含任何代码,但这个程序滥用了约定并跳转到它。一个有趣的副作用是程序头是只读的。这可以解释为什么断点不能放在那里。
无论如何,让我们看看该程序的工作原理。我们看到程序将一个指针加载到ESI中,该指针立即复制到EBX:
HEADER:00400158 mov esi, offset off_40601CHEADER:0040015D mov ebx, esi(Ctrl-O 将第一条指令中的十六进制数转换为标签表达式)
稍后,EBX 的值用于调用子例程:
HEADER:00400169 call dword ptr这样的调用在列表中很常见,因此让我们找出该函数及其功能。显然,指向该函数的指针位于此处:
__u_____:0040601C off_40601C dd offset __ImageBase+130h如果我们点击__ImageBase,我们将看到的是一个dwords数组。IDA 将程序标头表示为数组,这在我们的例子中是不正确的。我们取消定义数组(热键 U),返回指针(热键 Esc),然后再次跟随指针。这一次,我们将最终到达地址0x400130,该地址应包含一个函数。我们确信这一点,因为0x400169的指示间接地0x400130。我们按 P(创建过程或函数)告诉 IDA 在当前地址应该有一个函数。虽然该功能现在在屏幕上,但我们只有一半!似乎编写该程序的人希望它对其进行混淆,并将该功能分成几部分。IDA 现在知道如何处理这些碎片化的功能,并在屏幕上显示有关其他功能部件的信息:
但它只引用了其他部分。如果将整个函数放在一个页面上,那就太好了。有一个特殊的命令可以帮助我们:在IDA中生成函数流程图的命令,它的热键是F12。对于像我们这样的碎片化函数,此命令特别有趣,因为该函数的所有部分都将出现在屏幕上:
显示 main 函数的流程图可能会很有趣(很长的函数,请继续滚动!
快速浏览流程图就会发现,函数在其”ret”指令(0x4001FA)处只有一个出口。我们可以在那里放置一个断点,让程序运行。现在,在我们这样做之前,让我们重复一遍,在计算机上运行不受信任的代码不是一个好主意。对于此类测试,最好有一个单独的”沙盒”机器,例如使用IDA提供的远程调试工具。因此,当将在调试器下启动新文件时,IDA 会显示一条警告:忽略风险自负。
由于断点位于程序头中,并且程序头受系统写保护,因此我们不能使用普通的软件断点。我们必须使用硬件断点:首先按 F2 创建断点,然后右键单击并选择”编辑断点”以将其更改为”执行”事件上的硬件断点:
设置断点后,我们按 F9 启动调试器。当我们到达断点时,程序将被解压缩到”MEW”段中。我们跳转到那里并将所有内容转换为代码(执行此操作的最快方法是在断点处按 F7)。
现在我们有一个非常好的列表,但有一个主要问题:它是短暂的 – 一旦我们停止调试会话,列表就会消失。
原因当然是列表显示内存内容,并且当进程死亡时,内存将不复存在。如果能够将内存保存到数据库中并在没有调试器的情况下继续分析,那就太好了。我们将考虑将该功能添加到IDA的未来版本中,但与此同时,我们将不得不手动完成。当然,通过”手动”,我们并不意味着在纸上逐个复制字节。我们可以使用内置的IDC语言来实现这一点。
有两个要保存的内容,因为它们将在调试器停止时消失:内存内容和导入的函数名称。可以使用以下 4 行脚本保存内存内容:
auto fp, ea;fp = fopen("bin", "wb");for ( ea=0x401000; ea脚本运行后,我们将在磁盘上有一个名为”bin”的文件。它将包含”MEW”段中的字节。如您所见,我对十六进制地址进行了硬编码:毕竟,它是一个一次性脚本,旨在运行一次。
我们还必须保存导入的函数名称。例如,查看0x401002的呼叫:
MEW:00401002 call sub_4012DC如果我们想知道被调用函数的名称,我们按几次Enter键以按照链接进行操作,最后得到名称:
kernel32.dll:77E7AD86kernel32.dll:77E7AD86 kernel32_GetModuleHandleA: ; CODE XREF: sub_4012DCjkernel32.dll:77E7AD86 ; DATA XREF: MEW:off_402000okernel32.dll:77E7AD86 cmp dword ptr , 0当我们退出调试器时,kernel32.dll段将与其所有名称,指令,函数和所有内容一起从列表中消失。在此之前,我们必须复制函数名称:
auto ea, name;for (ea = 0x401270; ea现在我们已经运行了这些脚本,我们可以停止调试器(按 Ctrl-F2)并复制回内存内容。”文件,加载”菜单中的”加载其他二进制文件”命令是要走的路:
请注意,没有必要创建细分,它已经存在(清除”创建细分”标志)。此外,地址在段落中指定,即向右移动4。
加载文件,按P在0x401000瞧,你有一个很好的列表:
其余的分析是留给读者的愉快和令人愉快的任务,因为……你猜对了。
以上就是好酷屋教程网小编为您收集和整理的ida pro,ida pro使用教程-ida pro最新使用教程相关内容,如果对您有帮助,请帮忙分享这篇文章^_^
本文来源: https://www.haoku5.com/IT/642be47d89c4e2e63a026af7.html
相关推荐
热门专题
PS快捷键_PS快捷键大全
经典的Photoshop快捷键大全,如果你是入门阶段的水平,熟读此文并掌握,马上进阶为中级水平。matlab怎么换行?matlab换行教程
今天小编为大家带来的是matlab换行的教程,想知道怎么换行的小伙伴来看看接下来的这篇文章吧,相信一定会帮到你们的。matlab怎么换行?matlab换行教程1、首先在matlab主页面板中点击【Matlab求矩阵的乘积的操作方法
很多用户在使用Matlab的时候,不是很熟悉其中怎么求矩阵的乘积的?本期为你们带来的教程就描述了Matlab求矩阵的乘积的操作方法。Matlab求矩阵的乘积的操作方法打Matlab,在命令行窗口分区工具diskgenius强制删除文件的具体使用流程
很多人不知道分区工具diskgenius如何强制删除文件?今日为你们带来的文章是关于分区工具diskgenius强制删除文件的具体含义讲解,还有不清楚小伙伴和小编一起去学习一下吧。分区工具diskggoldwave怎么启用延迟录制计时器?goldwave启用延迟录制计时器教程
很多小伙伴在使用goldwave的时候,想知道怎么启用延迟录制计时器,下面小编就为大家分享教程,感兴趣的小伙伴不要错过哦!goldwave怎么启用延迟录制计时器?goldwave启用延迟录制计时器教pycharm使用技巧
今天小编给大家讲解pycharm使用技巧,有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的。pycharm使用技巧使用PyCharm软件需要python运行环境,这里我已经下载好。CAD看图软件哪个好用?如何使用CAD看图软件
在CAD中,大家都知道CAD图纸是使用CAD制图软件来绘制完成的,那保存的格式就是为dwg格式和dxf格式的。那需要对图纸内容进行查看的时候,就要适用到CAD看图软件。但看图软件有很多,那么CAD看图diskgenius怎么将分区中的文件复制到指定目录?diskgenius将分区中的文件复制到指定目录方法
使用diskgenius的时候,很多小伙伴不知道怎么将分区中的文件复制到指定目录,下面小编就给大家带来方法,有需要的小伙伴不要错过哦。diskgenius怎么将分区中的文件复制到指定目录?diskg分区工具diskgenius将硬盘合并分区的详细流程
说起分区工具diskgenius伙伴们都不陌生,那么使用怎么使用分区工具将硬盘合并分区呢?下面一起看看关于分区工具diskgenius将硬盘合并分区的详细流程吧。分区工具diskgenius将硬盘合MathType中公式与文字错位的处理方法
最近有很多朋友向我咨询关于MathType中公式与文字错位的问题,今天就为大家介绍MathType中公式与文字错位的处理方法,希望能够帮助到大家。MathType中公式与文字错位的处理方法方法一