IDA学习-1

1快捷键

1.1 alt
alt+b:搜索字符串
alt+t: 搜索二进制
alt+k:改栈指针Options-->General-->Disassembly-->Stackpoint
alt+q: 所有结构体
1.2 ctrl
ctrl+k:堆栈
crtl+w:IDA崩溃时再次打开会打开最近一次保存的状态,若自开始就未保存会崩溃至开始刚打开时(就是啥都没有).
ctrl+Numpad+-:already anasylis
Ctrl+8:ViewComment
Ctrl+F9:
Ctrl+E:ChoseEntryPoint
1.3 shfit
shfit +F1:LocalTypes
shift+F4:已经修改的变量名
shift+F11:lib库,Ins:LoadTypeLibrary
shift+F12:StringWindow ---->Ctrl+F:Quickfilter;Ctrl+C:Copy;Ctrl+U:Setup-->...
1.4 杂
?:计算器
/:Edit---->comments
*:数组
Ins:RenameTheLine
F12:打开流程图

2 小点

1.复制一段代码(hex)保存为bin文件可以直接用ida打开.

2.Resolve Alsr:Edit---->Segment---->RebaseProgram

3.IDA调试控制台程序,要传递参数。在debugger->procession options里

4.breakpointWindow:Export Breakpoints as IDC.

5.ida:设置专有桌面

6.栈指针调整,可能在内部其他的call里不平衡,所以先解决内部call在调整自己的。
先U,后P,F5失败在打开栈指针,调整,完了继续U,P,F5.

设置一个call的堆栈平衡,可能是函数类型(快键键Y)设置的有问题,比方ida会反编译出arg0,arg4,arg8,自己判断只有一个参数时,先y修改函数类型,再U,再P.

函数的传参问题,可能多次F5出来结果不一致,很可能是由于eax,ecx,edx等寄存器传参造成的.

7.改变函数结束范围(ida可能会反编译错),从你想开始的地址U,一直U到你想结束的地址,P,右键(alt+p)EditFunction.

8.打开outputwindows:Windows-->OutPut Windows(alt+0)

9.调试设置
Application C:\Users\Administrator\Desktop\avEng\AVDemo.exe
Param C:\Users\Administrator\Desktop\avEng\sample\01699ec01f8fc52efb22010727

10.对API下断点
Debugger-->DebuggerWindows-->Modules--->双击-->右键---->add breakpoint

11.Optional ---->DemageledName--->Names

12.16byte--32byte:alt+s-->Open'ChangeSegmentAttribute'Windows

3 idc

快捷键:File-->SCriptFile(shift+F2)
3.1快速添加OD导出的breakpoint.
$1 breakpointWindow:Export Breakpoints as IDC.
$2 Sample
static main(void)
{
  auto bpt;

  bpt = Breakpoint();
  bpt.set_abs_bpt(0x00402B85);Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402498);Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x004026C1); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x004028F0); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x004028F1); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B80); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B81); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B83); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B85); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B8A); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B90); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402B9E); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402BA1); Breakpoints.Add(bpt);
  bpt.set_abs_bpt(0x00402BA2); Breakpoints.Add(bpt);
}
3.2 DumpMemory.
static main(void)
{
    auto fp, begin, end, defByte;
    fp = fopen("C:\\Users\\Administrator\\Desktop\\avEng\\Assembmemory.f", "wb"); 
    begin =  0x1340020;              
    end = begin + 0x0DDF1C;            
    for ( defByte = begin; defByte < end;defByte ++ )
    {
        fputc(Byte(defByte), fp);     
    }
}
3.3 批量修改地址名字和添加注释
IDA-->File-->ScriptCommand :
set_name(0x0041E7FC,"oleaut32.VarBstrFromBool");
set_cmt(0x0041E684,"yyyy-M-d",1);

od配合调试解密大量字符串或api或需要进行注释.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值