本文最后更新于:星期三, 一月 2日 2019, 4:25 下午

  • IDA-python的使用:常用的api
    get_bytes(address,count)从address处读取count个字节的内容
    patch_bytes(address,buf),将adress地址处patch成buf的内容
    Xrefsto(address,flags=0) 找到所有引用了adress的地址
    byte(address) 获取address地址的一个字节的内容
    

一些IDA常用的快捷键:

  • 跳转到特定地址 : G
  • 查询交叉引用: X
  • 查找字符串: alt + t
  • 拍摄快照:ctrl+shift+w
  • 重新定义变量数据类型 : y
  • undefine一个 函数: u
  • create 一个函数:p

ida反编译的一些技巧:

  • 如果它函数反编译出来的变量很奇怪,可以将这个函数undefine掉然后再define,这样看的变量就会正常很多
  • 如果反编译函数显示sp指针有问题,可以通过快捷键alt+k 在报错的地址修复sp指针
  • 如果函数的结束地址正常,可以通过快捷键alt+p修改函数结束地址
  • 可以变量转换数组,通过快捷键 y 将数据类型修改为 对应的类型的指针 例如 char *a1
    • ida远程调试linux上的程序
      先将ida文件夹下的linux_server64或者linux_server32拷到虚拟机去
      然后给它执行权限,同时将要调试的文件和它放在同意文件夹,然后设置ida使用remote debugger 设置相关的路径,就可以开始调试了

ida 之定义一个结构体
在 edit 中选择 Add struct type 快捷键 是ins

image.png

设置struct的name,想要向结构体添加成员的话,点击 struct ends ,然后按D,就可以添加成员,再通过 N修改成员的名字,Y修改成员的类型

00000000 ; Ins/Del : create/delete structure
00000000 ; D/A/*   : create structure member (data/ascii/array)
00000000 ; N       : rename structure or structure member
00000000 ; U       : delete structure member
00000000 ; [00000018 BYTES. COLLAPSED STRUCT Elf64_Sym. PRESS CTRL-NUMPAD+ TO EXPAND]
00000000 ; [00000018 BYTES. COLLAPSED STRUCT Elf64_Rela. PRESS CTRL-NUMPAD+ TO EXPAND]
00000000 ; [00000010 BYTES. COLLAPSED STRUCT Elf64_Dyn. PRESS CTRL-NUMPAD+ TO EXPAND]
00000000 ; ---------------------------------------------------------------------------
00000000
00000000 struc_1         struc ; (sizeof=0x128, mappedto_6)
00000000 name            dq ?                    ; offset
00000008 age             dq ?
00000010 description     db 256 dup(?)
00000110 align           dq ?
00000118 friends         dq ?                    ; offset
00000120 flags           dq ?
00000128 struc_1         ends
00000128

如果想修改变量为struct的类型 ,就用 Y快捷键修改


TOOL      pwn

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!