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)
bpt.set_abs_bpt(0x00402498)
bpt.set_abs_bpt(0x004026C1)
bpt.set_abs_bpt(0x004028F0)
bpt.set_abs_bpt(0x004028F1)
bpt.set_abs_bpt(0x00402B80)
bpt.set_abs_bpt(0x00402B81)
bpt.set_abs_bpt(0x00402B83)
bpt.set_abs_bpt(0x00402B85)
bpt.set_abs_bpt(0x00402B8A)
bpt.set_abs_bpt(0x00402B90)
bpt.set_abs_bpt(0x00402B9E)
bpt.set_abs_bpt(0x00402BA1)
bpt.set_abs_bpt(0x00402BA2)
}
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或需要进行注释.