好久没更新了,随便来写点东西

基础操作就先掠过了Orz,有空回来补充

远程调试

用的几个插件,都有遇到过坑

IDAskins 可以切换到深色皮肤
https://github.com/zyantific/IDASkins

Keypatch
https://github.com/keystone-engine/keypatch
需要先安装keystone-python支持
https://github.com/keystone-engine/keystone/releases/download/0.9.1/keystone-0.9.1-python-win64.msi

Findcrypt 查找常见加密算法
https://github.com/polymorf/findcrypt-yara
需要先安装yara-python,方法如下
在ida python27目录下运行./python.exe libsite-packagespip install yara-python==3.11.0
(需要指定版本是因为更高版本yara pip仓库中没有对应2.7版本的二进制发行),

IDAGoHelper
https://github.com/sibears/IDAGolangHelper
需要修改Go_Utils部分代码使其支持7.0

  • GO_Utils/__init__.py 第16行 self.bt_obj = Utils.get_bitness(ida_ida.inf_get_min_ea())替换为self.bt_obj = Utils.get_bitness(idc.BeginEA())
  • GO_Utils/Gopclntab.py 第31行while possible_loc != idc.BADADDR:下增加一行return possible_loc

FindVulXref
一个IDApython的script,用来查找危险函数的交叉引用,快速定位漏洞点

targets=["malloc","free","system","gets","scanf","strcpy"]
for target_func in targets:
    for functionAddr in Functions():   
        # Check each function to look for strcpy
        if target_func in GetFunctionName(functionAddr):
            xrefs = CodeRefsTo(functionAddr, False)               
            # Iterate over each cross-reference
            for xref in xrefs:                                                    
                if GetMnem(xref).lower() == "call": 
                    print (target_func+" xref:" +str(hex(xref)))    

附1-一些快捷键

  • 空格键:反汇编窗口切换文本跟图形
  • Esc:在反汇编窗口中使用为后退到上个操作的地址处
  • Shift +F5:打开签名窗口
  • shift+F12:自动分析出参考字符串
  • ALT+T:搜索字符串(文本搜索)
  • ALT+L:标记(Lable)
  • ALT+M:设置标签(mark)
  • ALT+G:转换局部变量为结构体
  • ALT+Enter:跳转到新的窗口
  • Alt+B:快捷键用于搜索十六进制字节序列,通常在分析过程中可以用来搜索opcode
  • CTRL+M:列举出当前已经添加的标签
  • CTRL+S列举出二进制程序的段的开始地址、结束地址、权限等信息
  • F9:动态调试程序(其实IDA主要用作静态分析用的)
  • F5:将一个函数逆向出来(生成c伪代码)
  • G:跳转到指定地址
  • A:将选择的信息转换成ASCII(转换成可读性跟强的字符串)
  • X(ctrl+X):交叉引用,类似于OD中的栈回溯操作
  • N:对符号重命名
  • :&;(冒号&分号):光标所在位置添加常规注释和可重复注释
  • P:创建函数
  • T:解析结构体偏移
  • M:转换为枚举类型常量
  • Y:设置变量类型
  • H:转换16进制
  • C:光标所在地址处的内容解析成代码
  • D:光标所在地址处的内容解析成数据
  • A:光标所在地址处的内容解析成ascll码字符串
  • U:光标所在地址处的内容解析成未定义内容。