idapro使用技巧及大杂烩.doc
18页IDAPro使用技巧及大杂烩IDAPro基本简介IDA加载完程序后,3个马上可见的窗口分别为IDA-View,Named,和信息输出窗口(outputWindow)IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头默认为红色,蓝色表示默认下一个执行块在存放器窗口中显示着每个存放器当前的值和对应在反汇编窗口中的内存地址函数在进入时都会保存货仓地址EBP和ESP,退出函数时恢复选择菜单Debugger下的Startprocess(也能够按F9键)来开始调试调试会让程序在电脑中执行,因此IDA会提示注意防范恶意程序、病毒和木马打开IDAPro6.5,为进入IDA界面供应三种选项,分别是New(新建),Go(运行),Previous(上一个)选择File菜单下的Open,打开想要逆向的可执行文件,会显示一个Loadanewfile的界面这里能够选择:1. 程序的种类;2. 办理器的种类;3. 加载的段地址和偏移量;4. 可否赞同解析;5. 一些加载选项;6. 内核和办理器的一些选项;7.windows系统dll所在的目录默认选择PE文件就可以,对于一些网络数据包也许其他格式的文件,能够使用二进制加载,自己进行解析。
工作区有多个子窗口,IDAView-A是反汇编窗口,HexView-A是十六进制格式显示的窗口,Imports是导入表(程序中调用到的外面的函数),Functions是函数表(这个程序中的函数),Structures是结构,Enums是列举IDAview:定位要更正的代码段在哪里Hexview:用来更正我们的数据exportswindow:导出窗口importwindow:导入窗口nameswindow:函数和参数的命名列表functionswindow:样本的全部函数窗口stringswindow:字符串显示窗口,会列出程序中的全部字符串IDA很智能,鼠标移到某些表记符上会自动有合适的提示,双击还能够自动跳到相应的地址把一个函数逆向的方法很简单,只要按F5键就会出来逆向出的C语言程序了退出IDA时,会进行文件保存确认,若是需要连续进行解析,将IDA中间数据库打包,下次连续打开就可以进行解析;若是不需要连续解析,选择不要打包,不要储藏数据库IDA打开应用程序时,会为其创办一个数据库,后缀为IDBIDB由4个文件组成:后缀为id0的二叉树形式的数据库,后缀为id1的程序字节表记,后缀为nam的Named窗口的索引信息,后缀为til的给定数据库的当地种类定义的相关信息。
一旦IDA为某个可执行程序创办数据库,它自己就不再需要接见这个可执行文件,除非使用IDA的Debug功能跳转指令分三类:无条件跳转:JMP;依照CX、ECX存放器的值跳转:JCXZ(CX为0则跳转)、JECXZ(ECX为0则跳转);依照EFLAGS存放器的标志位跳转,这个太多了.学Win32汇编[28]-跳转指令:JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP等—MOVSXMOVZX比方MOVSXEAX,BYTEPTR[00401000]或MOVZXEAX,BYTEPTR[00401000]在C语言中应该如何表达啊?比方定义一个全局变量BYTEbt=101;DWORDdw;应该如何把bt赋值到dw中.并且功能与MOVSX/MOVZX相同?汇编语言与C语言的语言构件不相同,其实不是必然能转成完好等价的C语言的代码的对于以上代码,能够这样理解:movsx====>dw=(DWORD)((signedchar)(bt))movzx====>dw=(DWORD)((unsignedchar)(bt))movzx是把高位所实用0填充,而movsx是把原来数的最高位扩展成超出的位。
对于bt=101,也就是0x65,八位二进制是“01100101”,因为它的最高位是0,因此这两种情况,dw都等于0x00000065换一个,比方bt=247,也就是0xF7,八位二进制是“11111110”它的最高位是1经过movsx变换后,dw等于0xfffffff7;而经过movzx变换后,dw等于0x000000f7交织参照经过交织参照(XREF)能够知道指令代码互相调用的关系.如下:.text:00401165loc_401165:;CODEXREF:sub_401120+B|j这句CODEXREF:sub_401120+B|j表示该调用地址是401120,“j”表示跳转(jump)“o”表示偏移值(offset)“p”表示子程序(procedure)双击这里或按回车键能够跳到调用该处的地方参照重命名:找到一段代码(一般为函数入口名),右键点击选择”Rename”能够将函数名称变成易懂的名称.标签的用法:在菜单”Jump”中选择”MarkPosition”将会打开标志当前地址功能,输入一个名称,在菜单”Jump/Jumptomarkedposition”中或按”Ctrl+M”键双击想要调转的名称,便会到达拟定的代码地址.进制的变换:选择快捷键的#能够变换进制,选择”Toggleleadingzeroes”功能是用0填充数据前的空位.cqd,为ConvertDoubletoQuad的缩写,意为将双字数据扩展为四字。
该指令先把edx的每一地址成eax的最高位(若eax>=0x80000000,则edx=0xFFFFFFFF;若eax该指令常用于扩展被除数,许久前,指令集规定除数必定是被除数的一半长,这个规定素来被沿用使用IDIV执行除法时,若是除数是32位,这就要求被除数是64位,即EDX:EAX,因此扩展一下EAX以满足除法指令的条件并且获取正确的结果DIV和IDIVDIV和IDIV两个都是算术除法操作指令DIV是无符号数除法DIVs;完成两个无符号数相除IDIV是有符号数除法指令,完成两个有符号数相除被除数、商、除数、余数存放地址及对s的规定与DIV指令相同更正程序的指令也许数据,并进行保存如何更正数据在HexView窗口下,[S1]双击要更正的地方[S2]使用F2捷方式更正当前字节[S3]再按下F2快捷方式应用更正如何改变执行流程[1] 更正跳转指令[2] 更正内存数据[3]IDAView中使用下面的命令JumptoIP,SetIP,Runtocursor保存更正使用下面的主菜单命令,直接把更正保存到输入文件中,即可[IDAMainMenu]->[Edit]->[PatchProgram]->[Applypatchestoinputfile]。
OD中右键-保存到文件-选择我的OD是这样的,只能更正一条,经过选择,保存一条重新载入再更正再保存.如何对DLL文件进行动向追踪用[F2]在IDAView中当前代码行切换断点启动装载DLL的EXE文件使用[Debugger]->[Attachtoprocess]把当前二进制代码attach到正在运行的进度中去现在应该进入断点[F7]Stepinto[F8]Stepover[F9]continueCursor移到内存地址后双击就可以查察到详尽内存中的值,右击快捷菜单[JumptoIP]项,能够回到你刚刚指令的地方IDAView中有很多行代码,能够使用[;]快捷键对当前行进行说明为了观察详尽指令的二进制表示你还需要[IDAView]->[右击快捷菜单]->[Synchronizewith]->[HexView1]这样HexView会和你的IDAView中光标地址同步在IDAView中为函数更名,用[N]快捷键观察内存(变量)[Toolbar]->[Openthewatchlistwindow],[T。





