dll注入基础教程.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dll注入基础教程

首先要明白什么是线程说到线程就不得不提到进程SDK文档里是这样描述的进程是一个正在运行的程序,它拥有自己的地址空间,拥有自己的代码、数据和其他系统资源。一个进程包含了一个或者多个运行在此进程内的线程。说白了,其实进程就是一个磁盘上的程序载入内存执行后的东西打开任务管理器看看,里面有好多进程...从定义上看出进程一定要有线程,线程是进程内存中的独立实体。讲了这么多废话其实就是想说程序运行后就变成了进程,你的代码由线程来执行。回到正题上,线程插入是什么呢?就是把一个线程弄到别的进程执行你也许觉得奇怪,自己不是有个进程好好的吗?其实这个作用大了,先说说开头提到的木马一来,有些比较由经验的用户有时会打开任务管理器,发现陌生进程?!想想你的木马还能活吗?那么插入Explorer等关键进程,你还想用电脑的话最好不要杀那个进程(不信试试)二来,大家现在都装防火墙了,网络连接经常会被虑掉,木马岂不是没用了?好,插入IE,防火墙想虑?除非你不想看网页当然,还有很多用处,比如插入系统级别的进程,哈哈,我们有Ring0权限了,(不要告诉我你不知道Ring0...就是连物理内存都可以写的超级权限)HookAPI也需要把代码注入别的进程知道了他的作用想知道怎么实现吧?别着急,慢慢来首先,这个应该属于系统编程,系统编程就不能不知道APIAPI是什么?简单点讲就是Windows为我们提供的一些函数,利用他们我们可以做很多事情Delphi花了很大力气用VCL还有一些乱七八糟的类把让我们可以尽量不要API所以会编程序但不了解API还是可能的API被封装在kernel32.dll、user32.dll等动态链接库里,程序使用时候把DLL映射到自己的内存了编写的时候我们通常需要从DLL导出这些函数function Beep; external kernel32.dll name Beep;这样导出一个beep函数当然,实际上不要这么麻烦Delphi已经把这些导出声明写在一些单元里面了(比如windows单元)uses windows后就可以直接用了(而且建立窗口时候默认就会引用很多单元)所以实际上我们可以直接用的这个理解一下就好了开始讲线程插入了一般来说线程插入有2种方法1.DLL注入2.直接的远程线程插入DLL注入编写的时候比较简单,方法也多,但有个缺点进程会多出个模块来,可能被发现远程线程是直接修改对方内存的方法,虽然隐蔽性好,但是不小心可能会出点问题,比如你让不能有界面的进程弹出个窗口,不能上网的进程开个端口,那就等着系统崩溃吧今天重点讲DLL注入首先要知道什么是DLL,dll就是动态链接库,大家应该知道吧?怎么编写DLL呢?和写普通程序差不多是一样的新建一个工程,选DLL Wizard发现了吧?除了program改成library剩下几乎是一样的,只是需要程序加载他的入口点我们先编写个简单的DLLlibrary TestDll;uses??Windows;{$R *.res}procedure func_a; ??begin????MessageBox(0,I love delphi,Function form Tset DLL,0);??end;procedure func_b(MSG:pchar);??begin????MessageBox(0,MSG,Function form Tset DLL,0);??end;begin?? func_a;?? func_b(I like it too!);end.就是那个testdll.dpr看得懂吧,弹出2个信息框好了保存下,F9运行..出错,哈哈,DLL是不能直接运行的那怎么办?编译下(按过F9就不用了,也会编译好)看见那个DLL了吧?我们弄个程序加载它的入口点新建一个普通程序加一个按钮按钮事件只要写一句loadlibrary(testdll.dll);MainShow.dpr运行,单击按钮,怎么养?弹出东西了吧当然DLL还可以做函数库,资源库等今天暂不讨论现在DLL懂得写了吧?就是program改成library而已你可以写自己的程序了DLL会写了,现在的问题就是怎么注入了我们目的只是让对方的程序运行一句loadlibrary(testdll.dll);而已一切就OK了通常有这么几种注入方法1.利用全局消息钩子Win32下程序一般都要用收发消息用钩子函数下全局钩子,程序收到任何消息都加载我们的DLL的入口点当然,用这种方法DLL进入后要判断自己是不是被插进目标进程是的话,执行代码不是退出这个方法很麻烦但通用性很好,只要WINDOWS都可以用(但是有的系统进程消息是勾不住的,所以注入不了)早期的DLL注入大部分是用这个原理实现的2.写注册表写HKEY_LOCAL_MAHINE\Software\Micros

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档