持续更新ing~~~~
前言
参考并推荐以下博文:
https://xz.aliyun.com/t/4205#toc-11
IDA使用
一、操作技巧
- C:将十六进制数据分析为代码;D键--当作数据进行分析;P键--将该段代码分析为函数。
- CTRL+S:打开段视图,可以选择某个数据段进行跳转。
- x:光标停留在某个函数、变量,按该键,可以查看交叉引用。
- n:重命名变量或函数。
- y:更改变量的类型。
- u:取消对函数、代码、数据的定义。
- 打开函数调用图:菜单栏中,view-->graphs-->Function calls(快捷键Ctrl+F12)。
CTRL+F7:
运行至返回,直到遇到RETN(或断点)时才停止。- Alt+K:修改栈指针。实在改不对就nop掉吧。
二、一些疑问和想法
- idc脚本的使用--加密与解密P83。
- 如果函数中存在花指令或者一些故意破坏堆栈的指令,可以先patch掉后按p分析为函数。
- 在创建函数时,若无法确定函数结束位置或者发现非法指令,则会创建失败。alt+p创建一个函数,需要设定开头和结尾。如果还不行,就在编辑里创建一个新的segment。
- 导入自己设计的结构体或C库中的:View-->Open Subviews-->Local Types中可以看到本地已有的结构体,在该窗口中右击insert可以添加新的结构体。
- ida似乎无法同时调试父子进程(在子进程中使用ptrace(0,0,0,0)时),暂时没有深入研究。
- patch后的代码需要在Edit-->Patch Progam-->Apply patches to input file才能保存到原文件。
- 撤销patch,Edit-->Keypatch-->undo last patch。
- 如果打了很多次patch,不好分清该撤销哪一次的patch,那么可以在菜单栏中打开patched bytes界面。(view-->open subviews-->patched bytes)
Linux使用部分
- 查看进程信息:
ps -ef | grep 进程名 ls -l /proc/进程id
- 。。。
杂七杂八调试技巧汇总
1.javascript调试
按F12,如下图打开控制台,点击Source,可以在js文件里双击代码所在的行下断点。
点击该按钮开始执行程序或继续执行。
添加一句代码console.log( xxx )来打印输出自己想要获取的信息。