主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

编程语言
程序代码
WIN/*NIX编程
其他类别
JAVA专区

 
RHU阅读排行
·JDBC连接数据库经验集萃
·格式化字符串攻击笔记
·谈谈Unicode编码 简要解释UCS/UTF/BMP/BOM
·使用getauthcookie改进认证cookie
·Jboss的JDBC数据源配置步骤详解大全
·数据库设计范式深入浅出
·ASP+简单的存储过程实现的ASP插入功能
·Webmin 暴力破解+ 执行命令
·StarSuite 6.0和SDK安装以及配置指南
·Delphi编程禁止用户关闭操作系统

 
 
RHU最新文章
·Win32汇编实现DLL的远程注入及卸载
·一个截获用户输入的编程例子
·vbscript错误代码及对应解释大全(代码)解释
·Serv-U远程溢出最新程序源代码
·一段隐藏注册表项的代码
·隐藏Webshell的一段代码
·利用BCB写病毒专杀
·“流光种植者”的编程实现
·扭曲变换加密(目前防止软件被破解最好的方法)
·脚本注入工具的原理和开发

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 程序设计 -> 其他类别
Win32汇编实现DLL的远程注入及卸载

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2008-1-27 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


所谓DLL远程注入,就是强迫DLL程序运行在其他进程中,这样做的目的无非有两种:第一是伪装自身,第二是控制宿主。前者常见于病毒或木马,后者则一般用于正规之场合,比如常见的输入法、外挂等等,有时Hook(钩子)也用到该技术。由此可见,技术是把双刃剑,区别在于使用技术的人。

DLL远程注入的方法一般有如下几种:
1.修改注册表,系统启动时自动加载。当然,如果卸载就要关闭系统了,或者使用本文的卸载功能。
2.使用SetWindowsHookEx进行注入,该参数最后一个参数值决定注入的全局与否。
3.BHO,这个没什么可说的,仅局限与浏览器。
4.使用CreateRemoteThread进行注入,也就是本文的主要内容。
注入过程大致是:
1.打开目标进程。
2.在目标进程中申请一块内存,用来存放要注入的dll名称。
3.将dll名称写入该内存。
4.获得LoadLibraryA函数的地址,该函数在任何进程中的地址都相同。
5.创建远程线程,也就是执行LoadLibraryA函数了。当然LoadLibraryA的参数就是上面保存的dll名称。
6.等待线程返回
        到此为止,dll已经被成功在远程进程中运行了,至于运行后该如何工作,那就发挥你无穷的想像力吧。卸载过程与注入过程雷同,只是区别于后面使用了FreeLibrary函数进行卸载。注意,FreeLibrary函数只能传入模块的句柄,可使用GetModuleHandleA函数获得。

源码奉上:


 ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ; Win32汇编实现DLL的远程注入及卸载 
 ; Programmed by 魏滔序                 
 ; WebSite: http://www.chenoe.com       
 ; Blog: http://blog.csdn.net/Modest        
 ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


    .486            ;   create   32   bit   code
    .model    flat,    stdcall    ;   32   bit   memory   model
    option    casemap    :none    ;   case   sensitive
   
    include    windows.inc
    include    kernel32.inc
    includelib kernel32.lib
   
    RemoteInjectModule    PROTO :DWORD,:DWORD
    RemoteUnloadModule    PROTO :DWORD,:DWORD
.data
    szKernel32     db 'Kernel32',0
    szGetModuleHandleA db 'GetModuleHandleA',0
    szLoadLibraryA    db 'LoadLibraryA',0
    szFreeLibrary    db 'FreeLibrary',0
.code

Start:
   
RemoteInjectModule proc dwProcID,pszModule
    LOCAL    hProcess, hThread, dwExitCode
    LOCAL    pszBuffer,pdwAddress
   
    Invoke    OpenProcess,PROCESS_QUERY_INFORMATION Or PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, 0, dwProcID
    MOV    hProcess,EAX
    .If     hProcess == 0
        JMP ErrHandle
    .Endif
   
    Invoke    VirtualAllocEx,hProcess, 0, MAX_PATH, MEM_COMMIT, PAGE_READWRITE
    MOV    pszBuffer,EAX
    .If     pszBuffer == 0
        JMP ErrHandle
    .Endif
   
    Invoke    WriteProcessMemory,hProcess, pszBuffer, pszModule, MAX_PATH, 0
    .If     EAX == 0
        JMP ErrHandle
    .Endif
   
    Invoke    GetModuleHandle,addr szKernel32
    Invoke    GetProcAddress,EAX, addr szLoadLibraryA
    MOV    pdwAddress,EAX
    .If     pdwAddress == 0
        JMP ErrHandle
    .Endif
   
    Invoke    CreateRemoteThread,hProcess, 0,0, pdwAddress, pszBuffer, 0, 0
    MOV    hThread,EAX
    .If     hThread == 0
        JMP ErrHandle
    .Endif
   
    Invoke    WaitForSingleObject,hThread, INFINITE
    Invoke    GetExitCodeThread,hThread,addr dwExitCode
    .If     dwExitCode != 0
        MOV    EAX,1
    .else
        MOV    EAX,0
    .endif
   
    RET
   
ErrHandle:
    .If     pszBuffer != 0
        Invoke    VirtualFreeEx, hProcess, pszBuffer, 0, MEM_RELEASE
    .Endif
   
    .If     hThread != 0
        Invoke    CloseHandle, hThread
    .Endif
   
    .If     hProcess != 0
        Invoke    CloseHandle,hProcess
    .Endif
   
    MOV    EAX,0
    RET
RemoteInjectModule endp
   
RemoteUnloadModule proc dwProcID,pszModule
    LOCAL    hProcess, hThread, dwExitCode
    LOCAL    pszBuffer,pdwAddress
   
    Invoke    OpenProcess,PROCESS_QUERY_INFORMATION Or PROCESS_CREATE_THREAD Or PROCESS_VM_OPERATION Or PROCESS_VM_WRITE, 0, dwProcID
    MOV    hProcess,EAX
    .If     hProcess == 0
        JMP ErrHandle
    .Endif
   
    Invoke    VirtualAllocEx,hProcess, 0, MAX_PATH, MEM_COMMIT, PAGE_READWRITE
    MOV    pszBuffer,EAX
    .If     pszBuffer == 0
        JMP ErrHandle
    .Endif
   
    Invoke    WriteProcessMemory,hProcess, pszBuffer, pszModule, MAX_PATH, 0
    .If     EAX==0
        JMP ErrHandle
    .Endif
   
    Invoke    GetModuleHandle,addr szKernel32
    Invoke    GetProcAddress,EAX, addr szGetModuleHandleA
    MOV    pdwAddress,EAX
    .If     pdwAddress == 0
        JMP ErrHandle
    .Endif
   
    Invoke    CreateRemoteThread,hProcess, 0, 0, pdwAddress, pszBuffer, 0,0
    MOV    hThread,EAX
    .If     hThread == 0
        JMP ErrHandle
    .Endif
   
    Invoke    WaitForSingleObject,hThread, INFINITE
    Invoke    GetExitCodeThread, hThread, addr dwExitCode
   

   
    Invoke    VirtualFreeEx, hProcess, pszBuffer, 0, MEM_RELEASE
    Invoke    CloseHandle, hThread
   
    Invoke    GetModuleHandle,addr szKernel32
    Invoke    GetProcAddress,EAX, addr szFreeLibrary
    MOV    pdwAddress,EAX
    .If     pdwAddress == 0
        JMP ErrHandle
    .Endif
   
    Invoke    CreateRemoteThread,hProcess, 0, 0, pdwAddress, dwExitCode, 0,0
    MOV    hThread,EAX
    .If     hThread == 0
        JMP ErrHandle
    .Endif
   
    Invoke    WaitForSingleObject,hThread, INFINITE
    Invoke    GetExitCodeThread, hThread, addr dwExitCode
    .If     dwExitCode != 0
        MOV    EAX,1
    .else
        MOV    EAX,0
    .endif
   
    RET
   
ErrHandle:
    .If     pszBuffer != 0
        Invoke    VirtualFreeEx, hProcess, pszBuffer, 0, MEM_RELEASE
    .Endif
   
    .If     hThread != 0
        Invoke    CloseHandle, hThread
    .Endif
   
    .If     hProcess != 0
        Invoke    CloseHandle,hProcess
    .Endif
   
    MOV    EAX,0
    RET
RemoteUnloadModule endp

End   Start

OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • 一个截获用户输入的编程例子
  • 青云服务器安全设置器1.9.4源码发布
  • MD5算法汇编代码[着重优化]
  • 无钩子的键盘记录例子代码
  • vbscript错误代码及对应解释大全(代码)解释
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com