IDA Rewrite

大类
Util
技术标签
原理研究-IDA
逆向-Windows
优先级
Medium
状态
Abandon
开始日期
Jan 12, 2022
最后更新
Jan 24, 2022
Public
Public

前提

  • 重写只针对win和mac
  • 手上有多份同版本IDA(目前确实有)

目前发现的需要重写的点

  • 每个procs/目录下面的processor,在LPH导出符号后面都有一串binary:
    • notion image
    • mac上相同位置处的内容是_ident_tag,内容为NO SUCH TAG,似乎就是IDA的身份证
  • 链接顺序调整:针对于pc.dll、pc64.dll、ida.dll、ida64.dll、ida.exe、ida64.exe做了特殊处理
  • hexrays中带有license信息:每个dll文件中自带license id、license name信息
    • notion image
  • 文件时间戳
  • (mac) build uuid

思路

  • 观察:
    • 导入表:需要换
    • 代码段:天生自带可重定位的属性
      • 问题:IDA把rdata段合到了text里面
      • 代码段的分布:导入表结构和导入函数名 - 函数 - Unwind信息 - 字符串/常量数据表 - RTTI信息 - ExceptionDir
      • win和mac上均有重定位表,因此text段中的所有指针均是已知的
      • data段:未明
    • 变量数据段:思考应如何变异
  • 主思路:通过数据段进行对象文件分割
      1. 比对:忽略重定位的数据,则其他数据可进行对应
      1. 重写数据段:按照比对得到的边界进行随机顺序变换
      1. 重写代码段