Что нового

Code Inject (из C++ в AutoIt)

zerobot

Новичок
Сообщения
78
Репутация
0
Здравствуйте !
Извините что прошу помощи , но знаю что тут опытные люди аутоита есть , вот прошу помочь перевести три кода одного целого из 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 );
}

Если можно , то хотя бы примерно какие-то куски перевести.
Если не сможете перевести всё , то подскажите хотя бы что смогли.

Спасибо.
 
Верх