C++ Q

Posts 1–5 of 5 · Page 1 of 1
C++ Q
i have question im looking in all site but havent found anything. how can i update a running processor/waiting to be activated.
for example my code hasnt found a processor but it will be waiting for it to be run once it runs my screen updates and says the program is running.
A processor? Do you mean a preprocessor? Can you please elaborate your problem?
It would obviously be impossible for a process to update itself if it is not running. You would need a secondary process to maybe run in the background to update your main, But if you could be more specific I could know what your talking about.
like when they run the hack but not the game and the hack waits untill the game run to be activated like ive seen injector do that they automatically inject the dll as soon as you run the game there has to be update processor list.
Oh. That's what I thought you meant. All the program does is wait until the process it is looking for comes up and then it injects the .dll into the running process... lol since I'm looking through old source today let me find something...


Azorbix's titanium injector... you can see in the code it does exactly what you want. In fact most injectors I would bet are based off of this code... =/
[php]
/***********************************************\
* Program : Tatnium Injector *
* Author : Matthew L (Azorbix) *
* Date : December 22nd, 2003 *
* Credits: Y0DA, OGC guys, RetarT, Mstr *
* LanceVorgin, P47R!CK, VisPrfn *
\***********************************************/
/ will need VC++ .net or VC++6.0 w/ service packs

#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <winbase.h>
#include "forcelib\forcelib.h"
#define WIN32_LEAN_AND_MEAN

#define APP_EXE "target_application.exe" //change this!!!

bool GetProcessOf(char exename[], PROCESSENTRY32 *process)
{
HANDLE handle ;
process->dwSize = sizeof(PROCESSENTRY32);
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if(Process32First(handle, process))
{
do
{
if(strcmpi(process->szExeFile, exename) == 0)
{
CloseHandle(handle);
return true;
}
}while(Process32Next(handle, process));
}

CloseHandle(handle);
return false;
}

bool GetThreadOf(DWORD ProcessID, THREADENTRY32 *thread)
{
HANDLE handle;
thread->dwSize = sizeof(THREADENTRY32);
handle = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);

if(Thread32First(handle, thread))
{
do
{
if(thread->th32OwnerProcessID == ProcessID)
{
CloseHandle(handle);
return true;
}
}while(Thread32Next(handle, thread));
}

CloseHandle(handle);
return false;
}

bool fileExists(const char filename[])
{
WIN32_FIND_DATA finddata;
HANDLE handle = FindFirstFile(filename,&finddata);
return (handle!=INVALID_HANDLE_VALUE);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
PROCESSENTRY32 pe32;
THREADENTRY32 te32;

HANDLE handle = CreateMutex(NULL, true, "ttn5loader");
if(GetLastError() != ERROR_SUCCESS)
{
MessageBox(0, "Process is already running", "Tatnium Warning", MB_ICONWARNING);
return 0;
}

char dllname[MAX_PATH];
GetModuleFileName(0, dllname, MAX_PATH);
dllname[strlen(dllname)-3] = 0;
strcat(dllname, "dll");

if(!fileExists(dllname))
{
MessageBox(0, "Could not find dll", "Tatnium Error", MB_ICONERROR);
return 0;
}

MessageBox(0, "\tTatnium Injector\n Press \'END\' to exit without injection ", "Tatnium Injector", 0);

while(!GetProcessOf(APP_EXE, &pe32))
{
if(GetAsyncKeyState(VK_END))
return 0;
Sleep(10);
}

while(!GetThreadOf(pe32.th32ProcessID, &te32))
{
Sleep(2);
}

PROCESS_INFORMATION PI;
PI.dwProcessId = pe32.th32ProcessID;
PI.dwThreadId = te32.th32ThreadID;
PI.hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pe32.th32ProcessID);

if(!ForceLibrary(dllname, &PI))
{
TerminateProcess(PI.hProcess, 0);
MessageBox(0, "Could not inject dll", "Tatnium Error", MB_ICONERROR);
}

CloseHandle(PI.hProcess);

return 0;
}
[/php]

Pay special attention to this line:
Code:
    while(!GetProcessOf(APP_EXE, &pe32))
    {
        if(GetAsyncKeyState(VK_END))
            return 0;
        Sleep(10);
    }
Posts 1–5 of 5 · Page 1 of 1
This thread is closed for replies.

Tags for this Thread

None

Need help?