进程保护(带源码)
来源:互联网 发布:淘宝衣服直播主播招聘 编辑:程序博客网 时间:2024/06/14 17:59
标 题: 【原创】进程保护(带源码)
作 者: winnip
时 间: 2010-04-28,09:34:48
链 接: http://bbs.pediy.com/showthread.php?t=111885
标 题: 【原创】进程保护(带源码)
作 者: winnip
时 间: 2010-04-30,15:30:58
链 接: http://bbs.pediy.com/showthread.php?t=111885
来了看雪很久,基本上是学到不少东西。但是自己还是不能写好的程序!!
今天我就把自己写的一个程序发出来,给大家看看!
该程序利用进程注入的方式来保护自己,代码里写了个线程,利用遍历进程的方式来达到反复启动的效果!
我知道这代码拿不出手,但是为了向普通会员跨一步,我也要尽力而为!希望大家多指点,多批评!
下面贴出核心代码:(第一次发原创帖子)
555.exe里在资源里的文件!这是一个Win32链接库工程!资源释放文件后启动释放文件,下面附上工程文件,和测试文件!里面1.exe是一个资源里的文件,嗯,还有一个就是加载DLL的文件!可以根据Pid注入到指定进程,这个DLL竟然呗杀毒报毒!希望大家明鉴!
作 者: winnip
时 间: 2010-04-28,09:34:48
链 接: http://bbs.pediy.com/showthread.php?t=111885
标 题: 【原创】进程保护(带源码)
作 者: winnip
时 间: 2010-04-30,15:30:58
链 接: http://bbs.pediy.com/showthread.php?t=111885
来了看雪很久,基本上是学到不少东西。但是自己还是不能写好的程序!!
今天我就把自己写的一个程序发出来,给大家看看!
该程序利用进程注入的方式来保护自己,代码里写了个线程,利用遍历进程的方式来达到反复启动的效果!
我知道这代码拿不出手,但是为了向普通会员跨一步,我也要尽力而为!希望大家多指点,多批评!
下面贴出核心代码:(第一次发原创帖子)
代码:
#include "windows.h"#include <process.h> #include <tlhelp32.h>#include <stdio.h>#include "Shellapi.h"#include "resource.h"#include <conio.h>BOOL ListenProcess();HINSTANCE g_hDllInst = NULL;BOOL ReleaseRes(char strFileName[200],WORD wResID,char strFileType[200]);void MyTime();void CallRealese();void CheckKey( void * dummy );VOID CALLBACK TimerProc( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime); WIN32_FIND_DATA FileInfo1; char rs1[]="C:\\555.exe"; char rs2[]="EXE";BOOL repeat = TRUE; bool ControlLisson=false;int index=0; BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) { switch( ul_reason_for_call ) { case DLL_PROCESS_ATTACH: g_hDllInst=(HINSTANCE)hModule; _beginthread(CheckKey, 0, NULL ); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: ; case DLL_PROCESS_DETACH: ; } return TRUE; }BOOL ListenProcess(){ BOOL bRet = FALSE; HANDLE hProcessSnap = NULL; HANDLE hProcess =NULL; BOOL reg=false; int i =0; int j=0; char ll[]="555.exe"; char kk[30]; PROCESSENTRY32 pe32 = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe32.dwSize = sizeof(PROCESSENTRY32); Process32First(hProcessSnap, &pe32); do { strcpy(kk,pe32.szExeFile); while(kk[j]!='\0') j++; if(strcmp(kk,ll)!=0) { i=i+1; }else { reg=true; break; } } while (Process32Next(hProcessSnap, &pe32)); if(reg==false && Process32Next(hProcessSnap, &pe32)==false) { CallRealese(); } printf("Count process is%d\n",i); CloseHandle (hProcessSnap); return (bRet); } BOOL ReleaseRes(char * strFileName,WORD wResID,char * strFileType){ // 资源大小 DWORD dwWrite=0; // 创建文件 HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if ( hFile == INVALID_HANDLE_VALUE ) { return FALSE; } // 查找资源文件中、加载资源到内存、得到资源大小 HRSRC hrsc = FindResource(g_hDllInst, MAKEINTRESOURCE(wResID), strFileType); HGLOBAL hG = LoadResource(g_hDllInst, hrsc); DWORD dwSize = SizeofResource( g_hDllInst, hrsc); // 写入文件 WriteFile(hFile,hG,dwSize,&dwWrite,NULL); CloseHandle( hFile ); return TRUE;}void CallRealese(){ if(FindFirstFile("C:\\555.exe",&FileInfo1)==INVALID_HANDLE_VALUE) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); DWORD dwWaitResult; ReleaseRes(rs1,(WORD)IDR_EXE2,"EXE"); if( CreateProcess( NULL, // No module name (use command line). "C:\\555.exe", // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi )) { // Wait until child process exits. dwWaitResult=WaitForSingleObject( pi.hProcess, INFINITE ); if(dwWaitResult==WAIT_OBJECT_0){ CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); } } index=0; //循环控制现成 } else { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); DWORD dwWaitResult; CreateProcess( NULL, // No module name (use command line). "C:\\555.exe", // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ); // Wait until child process exits. dwWaitResult=WaitForSingleObject( pi.hProcess, INFINITE ); if(dwWaitResult==WAIT_OBJECT_0){ CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); index=0; //循环控制现成 } };}void CheckKey( void *dummy ){ while(index++<1000) ListenProcess();}
0 0
- 进程保护(带源码)
- 进程保护(一)
- 进程保护(二)
- 进程保护
- 进程保护
- 进程隐藏与进程保护(SSDT Hook 实现)
- 进程隐藏与进程保护(SSDT Hook 实现)
- 页面源码保护Javascript代码(转贴)
- 进程处理之进程保护
- VB双进程保护
- hook api 保护进程
- 双进程保护
- Anti 进程内存保护
- DLL注入、进程保护
- java 多线程 进程保护
- 驱动级别 进程保护
- Android service进程保护
- Android service进程保护
- 【LeetCode with Python】 Longest Common Prefix
- 关于raw_input( )和sys.stdin.readline( )的区别
- ZOJ3080 ChiBi(SPFA)
- Lua学习笔记之元表元方法
- 编程练习:MP3播放器
- 进程保护(带源码)
- ACM1568
- 【LeetCode with Python】 Longest Consecutive Sequence
- jQuery ScrollPagination 自动增加分页及重复加载问题
- Python 面向对象编程
- Linq 先进行分组,在进行排序(选取某一个人的最新的一条记录)
- Adapter - 适配器模式
- [指针四] 通过函数进行动态内存申请---二级指针、函数返回值
- 在Notepad++中搭配Python开发环境