2008年2月5日星期二

凉宫春日的忧郁12话中长门友希写的程序

今天一不小心在网上看到的,代码如下:
==================================分割线==================================

#include
#include
#include

void InjectHook(PROCESSENTRY32 pe32)
{
printf("テストデバッグ プロセスID:%d プロセス名:[%s]\n",pe32.th32ProcessID,pe32.szExeFile);
}
#define _TEXT(a) (a)

BOOL CheckProcessModule(DWORD dwPID)
{
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL,dwPID);
if (hModuleSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot(of modules)");
return ( FALSE );
}
CloseHandle(hModuleSnap);
// (ここから先は読みとれず)
return (TRUE);
}

BOOL GetProcessList()
{
HANDLE hProcessSnapshot;
HANDLE hProcess;
PROCESSENTRY32 pe32;
hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
if (hProcessSnapshot == INVALID_HANDLE_VALUE)
{
MessageBox(NULL,_TEXT("CreateToolhelp32Snapshot"),_TEXT("ERROR"),MB_OK);
return( FALSE );
}
pe32.dwSize = sizeof( PROCESSENTRY32 );
if ( Process32First(hProcessSnapshot,&pe32) == NULL)
{
MessageBox(NULL,_TEXT("Process32First"),_TEXT("ERROR"),MB_OK);
CloseHandle(hProcessSnapshot);
return ( FALSE );
}

do
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
if (hProcess != NULL)
{
if(CheckProcessModule(pe32.th32ProcessID))
{
InjectHook(pe32);
}
}
CloseHandle(hProcess);
}
while( Process32Next(hProcessSnapshot,&pe32));
CloseHandle(hProcessSnapshot);
return ( TRUE );
}

int main()
{
MessageBox(NULL,_TEXT("Start simurator and hit return key!!"),_TEXT("Simulator Injector"),MB_OK);
GetProcessList();
return 0;
}

==================================分割线==================================
假如懂一点英文和编程的话不难发现其实就是枚举进程而已,囧rz,这就是长门大神写的外挂么~~PS:据说这一集的脚本是——贺东招二 -_-# 好像记得在FMP的动画里也见过代码的样子,看上去像是Basic之类的东西,具体在哪里忘掉了……运行起来大概是酱紫: