xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-16
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

代碼完全遠(yuǎn)程。 可以在XP WIN7 WIN764 WIN2003 等操作系統(tǒng)上成功實(shí)現(xiàn)修改進(jìn)程路徑。 已經(jīng)封裝成類,使用及其方便。 部分代碼: 頭文件: #ifndef ModifyProcessPath_h__ #define ModifyProcessPath_h__ // 結(jié)構(gòu)定義 typedef struct _PROCESS_BASIC_INFORMATION { DWORD ExitStatus; ULONG PebBaseAddress; ULONG AffinityMask; LONG BasePriority; ULONG UniqueProcessId; ULONG InheritedFromUniqueProcessId; } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; // API聲明 typedef LONG (__stdcall *PZWQUERYINFORMATIONPROCESS) ( HANDLE ProcessHandle, ULONG ProcessInformationClass, PVOID ProcessInformation, ULONG ProcessInformationLength, PULONG ReturnLength ); class CModifyProcessPath { public: CModifyProcessPath(); BOOL Create(); BOOL ModifyProcessPath(LPCTSTR szPath); BOOL CamouflageExplorerPath(); }; #endif // ModifyProcessPath_h__ CPP部分代碼: #include "StdAfx.h" #include "ModifyProcessPath.h" namespace MODIFY_PROCESS { wchar_t m_szModulePath[MAX_PATH]; DWORD dwGetModuleFileNameWAddress; DWORD dwModuleBaseAddress; //E9 (目標(biāo)地址-當(dāng)前地址 - 5) #pragma pack(1) typedef struct _JMPCODE { BYTE bJmp; DWORD dwAddr; }JMPCODE,*LPJMPCODE; #pragma pack() DWORD WINAPI MGetModuleFileNameW(HMODULE hModule,wchar_t * lpFilename,DWORD nSize); }; using namespace MODIFY_PROCESS; // 為了不影響在進(jìn)程內(nèi)使用 GetModuleFileNameW ,故hook之,返回正確的路徑。 DWORD WINAPI MODIFY_PROCESS::MGetModuleFileNameW(HMODULE hModule,wchar_t * lpFilename,DWORD nSize) { typedef DWORD(WINAPI *MGetModuleFileNameWT)(HMODULE,LPWCH,DWORD); MGetModuleFileNameWT pMGetModuleFileNameW; pMGetModuleFileNameW = (MGetModuleFileNameWT)dwGetModuleFileNameWAddress; if(hModule == NULL || hModule ==(HMODULE)MODIFY_PROCESS::dwModuleBaseAddress) { StringCbCopyW(lpFilename,nSize,m_szModulePath); return wcslen(m_szModulePath); } return pMGetModuleFileNameW(hModule,lpFilename,nSize); } CModifyProcessPath::CModifyProcessPath() { } BOOL CModifyProcessPath::Create() { ZeroMemory(MODIFY_PROCESS::m_szModulePath,sizeof(MODIFY_PROCESS::m_szModulePath)); MODIFY_PROCESS::dwGet

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“ModifyProcessPath.h“

namespace?MODIFY_PROCESS
{
wchar_t?m_szModulePath[MAX_PATH];
DWORD??dwGetModuleFileNameWAddress;
DWORD??dwModulebaseAddress;
//E9?(目標(biāo)地址-當(dāng)前地址?-?5)
#pragma?pack(1)
typedef?struct?_JMPCODE
{
BYTE?bJmp;
DWORD?dwAddr;
}JMPCODE*LPJMPCODE;
#pragma?pack()
DWORD?WINAPI?MGetModuleFileNameW(HMODULE?hModulewchar_t?*?lpFilenameDWORD?nSize);
};

using?namespace?MODIFY_PROCESS;


//?為了不影響在進(jìn)程內(nèi)使用??GetModuleFileNameW?,故hook之,返回正確的路徑。
DWORD?WINAPI?MODIFY_PROCESS::MGetModuleFileNameW(HMODULE?hModulewchar_t?*?lpFilenameDWORD?nSize)
{
typedef?DWORD(WINAPI?*MGetModuleFileNameWT)(HMODULELPWCHDWORD);
MGetModuleFileNameWT?pMGetModuleFileNameW;
pMGetModuleFileNameW?=?(MGetModuleFileNameWT)dwGetModuleFileNameWAddress;


if(hModule?==?NULL?||?hModule?==(HMODULE)MODIFY_PROCESS::dwModulebaseAddress)
{
StringCbCopyW(lpFilenamenSizem_szModulePath);
return?wcslen(m_szModulePath);
}
return?pMGetModuleFileNameW(hModulelpFilenamenSize);
}


CModifyProcessPath::CModifyProcessPath()
{

}

BOOL?CModifyProcessPath::Create()
{
ZeroMemory(MODIFY_PROCESS::m_szModulePathsizeof(MODIFY_PROCESS::m_szModulePath));
MODIFY_PROCESS::dwGetModuleFileNameWAddress=0;
MODIFY_PROCESS::dwModulebaseAddress?=(DWORD)GetModuleHandle(NULL);

GetModuleFileNameW(NULLMODIFY_PROCESS::m_szModulePathMAX_PATH);

DWORD?lpAPIName?=?(DWORD)GetProcAddress(LoadLibrary(“kernel32.dll“)“GetModuleFileNameW“);
if(lpAPIName==NULL)
return?FALSE;

dwGetModuleFileNameWAddress??=(DWORD)VirtualAllocEx(
(LPVOID)-1
NULL
sizeof(JMPCODE)+sizeof(JMPCODE)
MEM_COMMIT
PAGE_EXECUTE_READWRITE);

if(dwGetModuleFileNameWAddress?==NULL)
return?FALSE;


//去掉內(nèi)存保護(hù)?可以寫入代碼
DWORD?dwOldProtect=NULL;
if(!VirtualProtect((LPVOID)lpAPINamesizeof(JMPCODE)PAGE_EXECUTE_READWRITE&dwOldProtect))
return?FALSE;


//保存前5個(gè)字節(jié)
BYTE?szOldCode[5];
CopyMemory((LPVOID)szOldCode(LPVOID)lpAPINamesizeof(szOldCode));

//構(gòu)建代碼?
JMPCODE?JmpCode;
JmpCode.bJmp?=?0xE9;
//地址計(jì)算公式?目標(biāo)地址-當(dāng)前地址?-?5
JmpCode.dwAddr?=?(DWORD)MGetModuleFileNameW?-?lpAPIName?-5;

//寫代碼
CopyMemory((LPVOID)lpAPIName&JmpCodesizeof(JMPCODE));

//恢復(fù)內(nèi)存屬性
DWORD?dwNewProtect=NULL;
//這里就不判斷了。
VirtualProtect((LPVOID)lpAPINamesizeof(JMPCODE)dwOldProtect&dwNewProtect);

CopyMemory((LPVOID)dwGetModuleFileNameWAddressszOldCodesizeof(szOldCode));
JMPCODE?NewJmpCode;
NewJmpCode.bJmp?=?0xE9;
//地址計(jì)算公式?目標(biāo)地址-當(dāng)前地址?-?5
NewJmpCode.dwAddr?=?lpAPIName-(dwGetModuleFileNameWAddress+sizeof(szOldCode));//+5下一條指令
//寫入指令
CopyMemory((LPVOID)(dwGetModuleFileNameWAddress+sizeof(szOldCode))&NewJmpCodesizeof(JMPCODE));
return?TRUE;
}


//szPath?需要偽裝的路徑
BOOL?CModifyProcessPath::ModifyProcessPath(LPCTSTR?szPath)
{
//?獲取NTDLL.DLL的基址
/*NTDLL.DLL*/
CHAR?szNTDLL[10]={0x4E0x540x440x4C0x4C0x2E0x440x4C0x4C0x11};
szNTDLL[9]=0x00;

HMODULE?hModule?=?GetModuleHandle(

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件????????751??2012-08-18?14:41??ModifyProcessPath.h

?????文件???????5372??2012-08-18?14:41??ModifyProcessPath.cpp

-----------?---------??----------?-----??----

?????????????????6123????????????????????2


評(píng)論

共有 條評(píng)論

相關(guān)資源