1.情境: ida将一个原本可以放在一个函数里的分割成了多份
解决方案:1.检查是否有成了函数,有了函数的话将其删除,删除方法有2:
1.在左边function窗口删了函数;
2.右键-undefine-快捷键C(重新转成代码)
2.右键-edit function(Alt+p)--修改函数始末位置,把它放在一块。
木盒被一块块挡板隔开,抽去它们之间的挡板,在拼接在一起的木盒的开头结尾各放一块挡板。
2.IDA设置v11,v12,v13并非空穴来风。------v11在前,v12在后,v13在后之后。是有顺序的。
3.显示被拒绝,没有权限,除了用管理员运行外,还有可能是因为在OD之类的其他调试器打开了。
4.快照:file-->take database snapshot(快捷键:ctrl+shift+w)。不小心修改了内容,ida是不能撤回的。所以要有保存快照的习惯。
5.shift+E,export data:可以用于导出数据,数组
6.ida会出现识别有误的时候,比如一串字符数组,却识别成了intxxx类型。int64 8个字节(则int32 4个字节),1个字符是1个字节。 F5后右键->set item type 改变类型,比如改成char v1[16]之类的。把他整理回字符串形式。
7.Alt+L,Edit→Begin Selection,从选定的位置开始,在另一处再点击鼠标,会都被选中。eg:先这样后C,把所有内容分析回code
8.byte类型之类的显示 是受寄存器影响的。比如寄存器是cl ch 是8bit 即byte类型 。ecx则是32位为dword
9.option->general->Line prefixes :可以使得图视图显示出地址
10.ctrl+滚轮:可放大放小
11.报错
原因:程序在调试时遇到int3,没有将其传给程序
解决办法
菜单栏->debugger->debugger option->edit exception->在sigtrap处右键->打勾"Silent,do not warn or log" 和 "pass to application"
12.ida远程调试程序
Parameters:设置参数,即 ./xxx yyy 时的yyy。也是给在linux下的完整路径,但不知道多个参数时该怎么设置
13.optional->general->NUmber of Opcode byte设置为6 (大多数超不出这个范围)。也为了opcode
14.
- 使用 View -> Open Subviews 命令恢复无意中关闭的数据显示窗口
- 使用 Windows -> Reset Desktop 命令可迅速将桌面恢复到原始布局
- 使用 Windows -> Save Desktop 命令保存当前的桌面布局
- 用 Windows -> Load Desktop 命令打开之前保存的一个桌面布局
但我并不知道他能用在哪里?
浏览历史:前后
我没注意到这些的主要原因是F5用太多
15.局部变量和参数也可以重命名
16.fomat,格式,也是格式化,即修改一个值以什么形式(Hex,string,bin)表示
17.alt+m设置标签
ctrl+m跳到标记位置
18.https://www.cnblogs.com/onetrainee/p/12173670.html - IDA] F5时参数识别错误的修正策略
19.有时 在一个函数里有两个毫不相干的函数,可以create func把两个函数分开。
20.解析宏
使用IDA反汇编程序的时候,IDA并不会将宏的名字解析出来,相反,它只会使用宏对应的数字进行显示,如下如所示:
如果只看这些数字,完全无法得知什么情况,好在IDA提供了解析机制,可以将数字转换为宏名。在对应的数字上右键,选择Enum:
然后在弹出的对话框中选择对应的宏即可!
替换后的结果如下,这样的话,就方便了静态查看代码。