美文网首页
补丁与插件

补丁与插件

作者: MagicalGuy | 来源:发表于2018-10-10 00:49 被阅读0次
  1. DLL怎么导出函数?
    1.1 使用关键字_decslpec(dllexport)
    1.2 使用def文件导出

  2. 在函数前加extern "C" 起到什么作用?
    2.1 禁用c++的名称粉碎机制

  3. 一个软件,在不修改已有代码的前提下,如何加载新的DLL?
    3.1 软件在启动时, 遍历指定文件夹找到所有的dll,并加载它们。

  1. 一个软件,在不修改已有代码的前提下,扩展新的功能
    4.1 以插件的形式扩展新功能
    4.1.1 调用软件带有的功能
    4.1.2 提供导出函数供软件调用
    4.2 以补丁的形式。
    4.3 软件加载DLL时,如何识别DLL是为本软件编写的插件?
    4.3.1 先加载DLL(不进行判断)
    4.3.2 获取DLL指定的导出函数(如果获取失败,就可以说明dll不是本软件的插件)
    4.3.3 调用dll的导出函数, 判断导出函数的返回值是否符合要求(要求可以是一个版本号,或者是TRUE和FALSE)。
    4.4 当软件想要在特定场景下调用DLL的导出函数时,也会动态获取dll的导出函数,如果能获取到就调用,获取不到就不调用来的.
    4.4.1 当软件希望它的一个功能能够被插件所扩展的时候,就可以在实现这个功能的时候调用dll的特定导出函数。
  1. 当一个加载DLL的exe不是自己编写的,但DLL是自己编写的,怎么调试DLL?
    5.1 不直接调试dll,而是调试加载dll的exe
    5.2 在vs的项目属性->调试->命令->设置为exe的路径
    5.3 在vs的项目属性->调试->工作目录->设置为exe所在目录

OD插件的编写:

  1. 导入头文件和库文件
  2. 导出一个必选的函数: ODBG2_Pluginquery

OD的反调试插件:

  1. 导出一个必选的函数: ODBG2_Pluginquery
  2. 在被调试进程被加载到OD的时候,获取被调试进程的PEB的地址
    然后将PEB.BeginDebug字段设置为0

x32dbg命令行显示peb/teb数据的插件:

  1. 导出3个必选的函数
  2. 在插件初始化函数中注册2个命令("pebaddr","tebaddr")
  3. 在命令的回调函数中获取peb和teb的地址,并调用x32dbg的api将将内存窗口转到peb/teb所在的地址。

相关文章

网友评论

      本文标题:补丁与插件

      本文链接:https://www.haomeiwen.com/subject/vdlraftx.html