• IDAWindbg调试


    IDA静态反汇编技巧

    一、通过添加类型库

    二、添加结构

      在Structures窗口中显示当前可用结构信息,可手工添加结构,也可导入结构,有二种方法导入:

      A、通过定义一个c语言的头文件,将结构定义写在头文件中,然后通过菜单Load File->Parse c header file导入文件中定义的结构

      B、在Structures窗口中,按INS键添加结构,这时弹出对话框底部有个按钮Add stndard structure,点此按钮,在弹出的类型库中选择结构导入

    IDAWindbg动态调试

    一、查看模块信息

    kd>lm  //查看当前已加载模块信息,包括起始地址及长度

    kd>lvDvm+模块名  //查看指定模块信息 

    kd>x modulename!functionname   //查看模块内函数地址信息,函数名可使用通配符* x:examine,

    kd>u  modulename!functionname  //查看函数汇编

    kd>uf  modulename!functionname  //查看函数全部汇编代码

     二、根据模块信息及函数来设备断点

    kd>bp 函数地址/函数符号名

    一、内存查看:d (db,dd,dw,dq分别以不同字节数来查看内存)

    kd>dd memoryaddress

     二、k命令:

     .reload -f强制加载符号

    如何在驱动入口函数(DriverEntry)中断点:

    kd>sxe ld:hookport.sys

    kd>g

    重新启动电脑或程序,当模块hookport.sys被加载时,就会触发了一个异常而中断,此时可获取hookport模块的基地址

    kd>lmvm hookport

    再接合IDA查看DriverEntry函数的偏移量,可得到DriverEntry函数的加载地址:

      funaddress=base+offset

    kd>bp funaddress

    IDA调试

    IDA中集成Python,在Out Window窗口的底部,选择Python按钮,即使用相关对象,注意:Python中命令是大小写敏感的

    查询Python函数:

    Python>dir()  //列出相关函数对象

    列出太多的函数,可通过Alt+T查找关键字筛选,Ctrl+T查询下一个

    Python>SendDbgCommand('')  //通过Windbg获取信息

    Python>SendDbgCommand('idtr')  //获取idt信息,信息为字符串,需要转换为整数

    kd>r idtr          //直接通过WinDbg获取idtr信息

    IDAPYTHON

    很多函数的用法可利用下面的网址:

    https://www.programcreek.com/python/example/102513/idc.MakeFunction中查看相关函数的用法,查询用google+site来做,因为该网站查询不管用

    IDC:

    MakeFunction(EA):在EA地址创建函数

    MakeFunction(EA,flags):在EA地址创建函数,并加上标签

    调试:

    add_bpt(EA):在EA处设置断点

    del_bpt(EA):删除EA外断点

    我的IDAPYTHON脚本:

    一个在指定模块相对偏移位置创建函数的示例:

    1 base=get_first_module()    #idc函数获取全局中第一个模块地址
    2 while get_module_name(base)!='SystemRootsystem32DRIVERSmutenx.sys':    #递归查找mutenx.sys模块名,这里使用全路径,系统刚启动时为短名
    3     base=get_next_module(base)
    4     
    5 base+=0x3308  #指定函数相对模块起始地址的偏移,具体可静态分析模块文件得到
    6 MakeFunction(base)  #创建函数
    7 print(hex(base))
  • 相关阅读:
    给大家来一波免费电影福利~~~
    SpringBoot第二十四篇:应用监控之Admin
    影响世界的100个经典管理定律
    SpringBoot第二十三篇:安全性之Spring Security
    20年研发管理经验谈(十六)(终结)
    Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
    js创建post请求
    Java截取视频首帧并旋转正向
    jquery 禁用/启用滚动条
    Jquery表单序列化和json操作
  • 原文地址:https://www.cnblogs.com/jiaping/p/9865180.html
Copyright © 2020-2023  润新知