IDA PRO 学习心得

上传人:cn****1 文档编号:557721178 上传时间:2023-02-21 格式:DOC 页数:12 大小:925KB
返回 下载 相关 举报
IDA PRO 学习心得_第1页
第1页 / 共12页
IDA PRO 学习心得_第2页
第2页 / 共12页
IDA PRO 学习心得_第3页
第3页 / 共12页
IDA PRO 学习心得_第4页
第4页 / 共12页
IDA PRO 学习心得_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《IDA PRO 学习心得》由会员分享,可在线阅读,更多相关《IDA PRO 学习心得(12页珍藏版)》请在金锄头文库上搜索。

1、IDA学习笔记【文章标题】: IDA学习笔记【文章作者】: GoodGavin【作者邮箱】: gavin_【编写语言】:MicrosoftVisualC+6.0【使用工具】: IDA5.2, Hex-Rays.Decompiler.v1.0(IDA插件), OD,UltraEidt【操作平台】: Winxp【时 间】: 2009年10月【作者说明】:IDA据说是个好东西,功能也很强大。但确实不易上手。学习一下,顺便做点笔记。从零开始吧!希望大家指正。(原来只要找,IDA的资料还是很多的,推广有效!)【详细过程】用最简单的CM做实验。首先帮助里说了:If you are starting to

2、use IDA for the very first time, there are some commands you will find very useful: - convert to instruction(转换成指令) : the hotkey is C - convert to data (转换成数据): the hotkey is D在IDA View-A窗口的指令或数据上按上述按键进行指令和数据的转换,算是学习的第一步。第一次交锋:根据OD的使用情况,查找字符串。(快捷键:shift +F12)。IDA中的菜单命令位置如下图:或者菜单上的按钮:在String窗口中找到关键字符

3、串:双击,来到IDA View-A代码窗口:这句:data:00403020 aFail db fail!,0 ; DATA XREF: .text:004016A6o双击后面的004016A6地址,来到使用fail数据的代码处(这样就是方便哦!)鼠标单击loc_4016A2:标签,所有的都会高亮显示。(这个功能very good!)第二次交锋:更改代码,爆破有两处地方跳到了注册失败。OK,改掉他就算爆破了!可是怎么改了?用OD,Ultraedit,WinHex都可以改。但是强大的IDA不会没有这个功能吧?不知道怎么办?学习第一招:查帮助或者手册(Help-Help Index),如果E文不好

4、,看雪有中文版的。更改指令的菜单位置为:Main Menu Bar - Edit - Patch Program功能。高兴啊!结果发现我的IDA中没有这个子菜单。无语。学习第二招:搜索引擎百度搜索:“IDA 没有 patch program 菜单”,看到这篇:http:/ = NO改为DISPLAY_PATCH_SUBMENU = YES更改配置文件之后,选中要更改的那行指令,然后选择Main Menu Bar - Edit - Patch Program -change byte弹出对话框:把74 15改为 90 90,这条指令是两个字节的,通过如下方法可以在IDA中看到:当然经过如下设置,

5、可以和OD一样看到指令的机器码:Options - general - numberofopcodebytes 设定一个数(显示几个字节的机器码) 但是个人觉得,显示上之后没有原来的样子好看了。(*_*) 嘻嘻(这里有个功能,记忆之前改的数据,个人反而觉得不好用。第二次敲90 直接把第一次改的那串数据放进去了,这样还得把整行的数据都敲一遍。)如何保存更改后的程序?据说 File - Product file - Create EXE file是这个功能,可惜:帮助:IDA produces executable files only for: - MS DOS .exe - MS DOS .c

6、om - MS DOS .drv - MS DOS .sys - general binary - Intel Hex Object Format - MOS Technology Hex Object FormatFor other file formats please create a difference file.难道PE文件不是general binary?不明白。File - Product file - Create Diff file有效。生成的dif文件的内容如下:This difference file is created by The Interactive Disa

7、ssemblermyEasyCM.exe00001675: 75 9000001676: 2B 900000168B: 74 900000168C: 15 90直接用UltraEidt安照如上内容更改数据程序就告破。但是IDA中为啥就找不到这个功能呢?Baidu上没有找到解决的办法,到Google上用E文搜索:发现相关的说法都是下面的意思(IDA只是对内存中数据的修改,没有写入硬盘。如果需要更改请用HEX Editer。)暂时先放弃用IDA更改了。(留下个问题:1是如何用IDA更改代码)http:/ you use the patch feature during a debug sessio

8、n it simply patchesthe processes memory only and also only the database disassembly, noinformation is written back to disk, so when you relaunch the process theorignal bytes are once again in memory.You really need to also patch the executable with a hex editor, at worseperhapes the IDA write exe mi

9、ght work. If you do patch with a hex editoryou can choose from the ida file menu to simply reload the input file, i thinkthis shouldnt destroy your database and notes.DataRescue aims the product at the analysis market and this is the simplereason why features such as code modification are actively d

10、eveloped upon./yates. 第三次交锋:分析代码IDA分析代码的能力很强。现在知道的方法有:1、IDA的Text View2、IDA 的Graph view3、Hex-Rays.Decompiler插件的反编译功能,可以生成类C的代码,大大增加易读性 安装这个插件之后,光标定位在函数上,按F5,即会生成源代码。其他的高级功能我不知道了,另外还有一个教程专门说的他的数据功能的,也学习一下,看看能有什么收获。好了,MFC生成的代码不仔细看了(水平有限),只针对自己写个判断序列号的函数看一下。比较比较。看5种代码:1、OD生成的汇编代码(字符串查找下断或者F12中断法都可以定位关键代

11、码)2、IDA生成的汇编代码(Text View)IDA有两个有点,一是循环和跳转比较明确,用了不同的箭头表示(粗箭头表示的是循环);二是进行了代码的分析,生成了一些变量,如arg_4,这样可以便于分析。3、IDA生成的图形代码(Graph View) 当光标定位在函数上时,和Text View-A通过右键菜单切换或者空格键切换。流程看上去更直观。4、IDA的Hex-Rays.Decompiler插件生成的类C语言源代码 对于一般人(习惯高级语言的),这个源代码要容易读懂。当然对于习惯于看汇编代码的高手就另当别论了。仅对于本程序而言,第一次看这样生成的代码有些别扭,有些地方不理解,和自己写的方

12、式也有出入。但如果了解了这种代码的特点,对理解代码应该是有帮助的。这段代码里有些地方不明白:(似乎好好看看编译原理会明白些)一是*(_BYTE *)v3是什么意思?应该是取a1v3,但是对这句不理解。二是strlen(a1) = 1的时候就表示成功,为什么不是零?更改*(_BYTE *)v3为a1v3;strlen(a1) 为 strlen(a1)+1和原始的代码结果相同。函数用如下方式调用。sub_401590(serial, (name - serial) ) 参看汇编代码,可以更清楚的理解为什么会这样5、我自己写的代码(供参考)第四次交锋:用IDA运行程序据说IDA动态调试程序的功能还不

13、强大(不然OD就该下岗了)。但他还是有动态调试功能的,尝试一下。首先说明一下之前在IDA View-A窗口中更改的代码对调试状态的代码没有影响(最初尝试运行更改后的程序,希望可以看到效果,结果发现无效。或许是我不会设置吧)。需要在调试器运行的状态下更改代码(F1键说:如果在调试器处于活动状态引用这条命令patch program,IDA会修改内存和数据库。如果数据库不包含修改的字节,那么进程内存将会被修改。)打开调试器窗口,运行代码。这时候会有几个新窗口。IDA View-EIP,IDA View-ESP,Thread等,在IDA View-EIP中找到关键跳,改掉。单击sign(注册),输入

14、任意用户名和序列号都提示成功了。F2依然是下断点,依然可以查找字符串和函数,基本的调试还是没有问题的。点击黑色的箭头窗口会显示相应的地址或堆栈的内容,当然选择EIP后的黑色箭头回到代码位置。有个问题是如果我关闭了IDA View-EIP和IDA View-ESP窗口,不知道如何再次打开。尝试Open - View subviews - Disassembly,在不停止调试的状态下可以同样使用,但如果重新开始调试之后,再用如上方式打开IDA View-A,则无法显示代码。在IDA View-EIP或ESP窗口右键更改synchronize with选项,依然会导致下次不能正常运行,应该是运行设置的问题,但没找到设置的地方第五次交锋:不识别的函数注册按钮单击后的代码如下,IDA没有认出这是一个函数,因此图形视图(Graph View)和F5反编译源码功能都不能用。Align的作用是指令对齐,应该是伪指令。.text:004015DC align 10h.text:004015E0 sub esp

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号