关于DLL注入的理解

关于DLL注入的理解DLL注入方式较多,包括API拦截与替换、消息钩子、远程进程。这些注入都是针对第三方程序(下面简称目标程序)的操作。目标程序主要分为两种,解释型和编译型。解析型可以在解释权解释之前做很多事情,比较简单,也比较可行。编译型则无法在编译前做任何事情,因为目标程序一般是第三方编译完成之后发布出来的。编译完成后就是二进制代码(即使能反汇编),就不存在变量名、函数名等标识符,因为这些标识符已经转换成响应的地址。这种情况下,如果拿不到真正的地址,则即使注入到主线程(UI线程)中,依然没有任何作用。除非程序调用的dll包

大家好,又见面了,我是你们的朋友全栈君。

DLL注入方式较多,包括API拦截与替换、消息钩子、远程进程注入。通常这些注入都是针对第三方程序(下面简称目标程序)的操作。

目标程序主要分为两种,解释型和编译型

解析型可以在解释权解释之前做很多事情,解释之前的代码不是二进制代码,而是解释器可以看懂的代码,比较简单,也比较可行。

编译型则无法在编译前做任何事情,因为目标程序一般是第三方编译完成之后发布出来的。编译完成后就是二进制代码(即使能反汇编),就不存在变量名、函数名等标识符,因为这些标识符已经转换成相应的地址。这种情况下,如果拿不到真正的地址,则即使注入到主线程(UI线程)中,依然没有任何作用。除非程序调用的dll包含导出函数,我们可以实现函数地址的替换。

即使采用MFC框架提供的方式,也是对编译后的程序无能为力的,因为MFC框架也只是一段普通代码,并不是WIN API,无法获取OS执行过程中的任何消息或者改变OS执行过程中的任何操作。

Windows API中使用的是句柄,C/C++中使用的是指针。两者并没有什么关系。MFC中的对象既有指针,又有句柄,是因为这个对象留出了一个成员变量来存放WIndows窗体句柄(注意:windows窗体对象本身的指针是无法获取的,因为windows api只能获取窗体句柄)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145710.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Web Proxy Auto-Discovery Service[通俗易懂]

    Web Proxy Auto-Discovery Service[通俗易懂]WinHTTPWebProxyAuto-DiscoveryService服务处于正在运行状态。但是有一天早上来发现全部电脑都无法上网。PINGISA都不通。重新启动后正常。我检查系统日志里面有3条关于WEB代理的日志:1。TheWinHTTPWebProxyAuto-DiscoveryServicehasbeenidlefor15minutes,i

    2022年6月21日
    104
  • cmd查看端口被占用并关闭「建议收藏」

    cmd查看端口被占用并关闭「建议收藏」1、netstat-nao|findstr”8000″2、tasklist|findstr”157468″3、taskkill/f/t/imCLodopPrint64.exe

    2022年5月12日
    44
  • pycharm中debug的使用[通俗易懂]

    pycharm中debug的使用[通俗易懂]1.未打断点运程序,输出全部结果2.打断点后,点击debug,代码执行到断点前停止(断点所在行不执行)3.stepover,是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步4.stepinto,是单步执行,遇到子函数就进入并且继续单步执行5.stepout,当单步执行到子函数内时,用StepOut就可以执行完子函数余下部分,并返回到上一层函数如点击下图中stepout,会直接跳转到test(

    2022年8月28日
    4
  • hibernate的hql语句批量删除

    hibernate的hql语句批量删除hibernate使用hql语句,根据条件进行批量删除操作;比如:1.给方法传递一个参数,我传递的是userid2.hql语句编写,根据userid进行删除(我使用了拼接userid的方式进行条件拼接)3.通过createQuery(hql),先到数据库查询满足条件的数据。然后通过executeUpdata()方法进行了批量更新删除操作;具体的代码如下:publicvoidemptycartItm(Integeruserid){//根据条件批量删除Stringhql=“delete

    2022年6月16日
    51
  • IE浏览器报错出现stack overflow at line 0的解决办法

    IE浏览器报错出现stack overflow at line 0的解决办法出现的原因就是你的网页中某个IMG标签加载了一个错误的路径,比如images/pic.jpg但实际却没有这个图片。解决的办法就是补回图片,或者去掉路径。。。即可转载于:https://www.cnblogs.com/xdoudou/archive/2013/04/19/3030834.html…

    2022年7月15日
    16
  • 各种进位制转换_二进位制与十进位制之间的转换

    各种进位制转换_二进位制与十进位制之间的转换在数字后面加上不同的字母来表示不同的进位制。B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制。例如:(1010

    2022年8月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号