Здравствуйте !
Извините что прошу помощи , но знаю что тут опытные люди аутоита есть , вот прошу помочь перевести три кода одного целого из C++ в AutoIt.
По сути всё просто (должно быть) , но у меня не выходит.
Это инжект кода в процесс .
C++ :
Если можно , то хотя бы примерно какие-то куски перевести.
Если не сможете перевести всё , то подскажите хотя бы что смогли.
Спасибо.
Извините что прошу помощи , но знаю что тут опытные люди аутоита есть , вот прошу помочь перевести три кода одного целого из C++ в AutoIt.
По сути всё просто (должно быть) , но у меня не выходит.
Это инжект кода в процесс .
C++ :
Код:
char pCode[177] = {
0x9C ,0x60 ,0xA1 ,0xD5 ,0x10 ,0x00 ,0x10 ,0x05 ,0xC0 ,0x58 ,0x05 ,0x00 ,0xFF ,0xD0 ,0x8B ,0xD0 ,0x8B ,0x0D ,0xD5 ,0x10 ,0x00 ,0x10 ,0x81 ,0xC1 ,0x00 ,0xF1 ,0x01 ,0x00 ,0x8D ,0x05 ,0x39 ,0x11
,0x00 ,0x10 ,0x50 ,0x6A ,0x00 ,0x52 ,0x68 ,0x0B ,0x40 ,0x00 ,0x46 ,0x8D ,0x15 ,0x09 ,0x11 ,0x00 ,0x10 ,0x52 ,0x8D ,0x05 ,0xD9 ,0x10 ,0x00 ,0x10 ,0x50 ,0xFF ,0xD1 ,0x83 ,0xC4 ,0x18 ,0x61 ,0x9D
,0xC3 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00
,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x38 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00};
class trace_t
{
public:
Vector vStart; //0x0000
Vector vEnd; //0x000C
char unknown24[20]; //0x0018
float fraction; //0x002C
char unknown48[12]; //0x0030
};
struct shellstruct_s
{
void* pShellCode;
HANDLE process;
DWORD dwPID;
DWORD dwClientAd;
DWORD dwTrace;
DWORD dwStart;
DWORD dwEnd;
};
shellstruct_s adr;
Код:
void AllocCode()
{
static bool bInit = false;
if(!bInit)
{
adr.pShellCode = VirtualAllocEx(adr.process, 0, sizeof(pCode) + 1, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(adr.process, adr.pShellCode ,pCode,sizeof(pCode),0);
adr.dwClientAd = (DWORD)adr.pShellCode + 0x41;
WriteProcessMemory(adr.process, (void*)((DWORD)adr.pShellCode + 0x3),&adr.dwClientAd,4,0);
adr.dwClientAd = (DWORD)adr.pShellCode + 0x41;
WriteProcessMemory(adr.process, (void*)((DWORD)adr.pShellCode + 0x12),&adr.dwClientAd,4,0);
adr.dwTrace = (DWORD)adr.pShellCode + 0xA5;
WriteProcessMemory(adr.process, (void*)((DWORD)adr.pShellCode + 0x1E),&adr.dwTrace,4,0);
adr.dwEnd = (DWORD)adr.pShellCode + 0x75;
WriteProcessMemory(adr.process, (void*)((DWORD)adr.pShellCode + 0x2D),&adr.dwEnd,4,0);
adr.dwStart = (DWORD)adr.pShellCode + 0x45;
WriteProcessMemory(adr.process, (void*)((DWORD)adr.pShellCode + 0x34),&adr.dwStart,4,0);
DWORD Value = (DWORD)GetRemoteModuleHandle(adr.dwPID,"client.dll");
WriteProcessMemory(adr.process, (void*)adr.dwClientAd,&Value,4,0);
bInit = true;
}
}
Код:
void TraceRay(Vector vStart, Vector vEnd, trace_t* pTrace)
{
WriteProcessMemory(adr.process, (void*)adr.dwStart,&vStart,12,0);
WriteProcessMemory(adr.process, (void*)adr.dwEnd,&vEnd,12,0);
HANDLE hRemoteThread = CreateRemoteThread(adr.process, 0, 0, (LPTHREAD_START_ROUTINE)((DWORD)adr.pShellCode), 0, 0, 0);
WaitForSingleObject(hRemoteThread, INFINITE);
CloseHandle(hRemoteThread);
ReadProcessMemory( adr.process, (void*)adr.dwTrace, pTrace, sizeof(trace_t), NULL );
}
Если можно , то хотя бы примерно какие-то куски перевести.
Если не сможете перевести всё , то подскажите хотя бы что смогли.
Спасибо.