Перейти к содержанию

doc9009

Пользователи+
  • Постов

    105
  • Зарегистрирован

  • Посещение

  • Победитель дней

    8

Сообщения, опубликованные doc9009

  1. Режим бога:


    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)
    label(hack_1)
    label(hack)
    label(unhack)
    aobscan(aob_hack_1,f30f58c8f30f118ec0780000f30f108fcc0b0000f30f58c8f30f118fcc0b0000d9442418)
    registersymbol(hack_1)

    newmem:
    cmp dword ptr [esi+10],3E8
    je hack
    jmp unhack

    hack:
    jmp returnhere

    unhack:
    addss xmm1,xmm0
    movss [esi+000078C0],xmm1
    jmp returnhere

    aob_hack_1:
    hack_1:
    jmp newmem
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    returnhere:



    [DISABLE]
    hack_1:
    addss xmm1,xmm0
    movss [esi+000078C0],xmm1
    dealloc(newmem)
    unregistersymbol(hack_1)

    смещение 10 указывает на id игрока. ID игрока в формате DWORD. Так же ID первого игрока = 3E8; ID второго игрока = 3E9.

    Таймер раунда вообще статический, днем отредактирую тему и добавлю onehitkill и ноп таймера.

    Скрипт выложил тут потому как в нужном разделе мне нельзя создавать темы.

    Вот ссылка на готовую таблицу со скриптом http://rghost.ru/47341576

    • Плюс 2
  2. блин я уже мозг себе сломал... уже свой инжектор написал с привилегиями дебагера все равно нулевой результат... вот сурс dll http://rghost.ru/47338694 вот сурс инжектора http://rghost.ru/47338840 все писал в 2012 студии. инжектор писал в попыхах так, что не судите строго за косяки типа восстановления обычных прав приложения (debug disable)

  3. по ходу не проходит инжект... пробовал втыкать мессэдж бокс, но при инжекте не вылезло мое сообщение...


    BOOL WINAPI Dllmain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
    {
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
    //CreateThread(NULL, NULL, FarCry_thread, NULL, NULL, NULL);
    MessageBox(NULL, "test", "ds", MB_OK);
    return true;
    }
    return false;
    }

    что мне делать, есть советы?

    far cry у меня издательства от буки 1.04 версия крякнутая... ну думаю на такой старой игре навряли будет какая-либо защита от ижекта

  4. делаю инжект dll через инжектор winject, а ноль эмоций... по идее должна выскочить консоль с надписью hello, инжектор не ругается говорит мол все нормально.

    вот исходник, делал по уроку кодера:


    #include <Windows.h>
    #include <fcntl.h>
    #include <stdio.h>
    #include <io.h>

    DWORD WINAPI FarCry_thread(LPVOID);

    BOOL WINAPI Dllmain(HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)
    {
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
    CreateThread(NULL, NULL, FarCry_thread, NULL, NULL, NULL);
    return true;
    }
    return false;
    }

    void CreateConsole()
    {
    int hConHandle = 0;
    HANDLE lStdHandle = 0;
    FILE *fp = 0;
    AllocConsole();
    lStdHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    hConHandle = _open_osfhandle(PtrToUlong(lStdHandle), _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stdout = *fp;
    setvbuf(stdout, NULL, _IONBF, 0);
    }

    DWORD WINAPI FarCry_thread(LPVOID)
    {
    CreateConsole();
    printf("HELLO!");
    Sleep(10000);
    FreeConsole();
    FreeLibraryAndExitThread(GetModuleHandle("farcry_inject.dll"), 0);
    }

  5. мне использование AOBscan-a тоже больше по душе, но уж очень долго бывает он ищет адрес по сигнатуре. Ладно буду думать и курить форумы о том как можно быстрее сканировать память.

  6. ну во - первых отсев адресов ты не правильно делаешь , во-вторых в СЕ 6.2 есть такая штука - называется "Найти указатель на этот адрес"(в русской версии) - это автоматический поиск указателей , используй её , а в-третьих чем тебе статически адрес не нравится , найди статику , зачем тебе динамический адрес и еще и с кучей офсетов , что ты хочешь сделать?

    таким образом в процессе отсеивания остаются 3 оффсета, которые успешно не работают на другом pc...

    ну во - первых отсев адресов ты не правильно делаешь , во-вторых в СЕ 6.2 есть такая штука - называется "Найти указатель на этот адрес"(в русской версии) - это автоматический поиск указателей , используй её , а в-третьих чем тебе статически адрес не нравится , найди статику , зачем тебе динамический адрес и еще и с кучей офсетов , что ты хочешь сделать?

    статический адрес у меня есть(нашел его). от него желательно бы найти цепочку оффсетов к деньгам, зачем она мне нужна? чтобы можно было быстро записать данные из программы на с++. Поиск сигнатур не хочу делать так как это отнимает время секунд 30 до того как найдется нужный адрес.

    искать путь к статичесскому адресу решил от ячейки с деньгами, потому как по определению вроде у каждого адреса есть последовательность смещений, которая приводит к статическому адресу. пробовал искать наоборот от статического к динамическому с деньгами, но там уйма мусора на бряке появляется, как собственно я и предполагал.

  7. Пытаюсь найти цепочку оффсетов для адреса, в котором содержатся кредиты, вот алгоритм моего поиска:

    1) нашел адрес со значением кредитов и поставил бряк на запись 1.jpeg Если наш адрес = 27C7BD60, то получается следующий адрес нам надо искать со значением 27C7BD00 = (27C7BD60 -60)

    2) нашлось несколько адресов я взял тот, что ближе находится к тому, что я искал и поставил бряк на доступ 2.jpeg получил (269D58EC - 3EC)=269D5500

    3) ищу адрес со значением 269D5500 находится целая куча адресов, я опять же выбираю те, что ближе всего находятся... Беру первый, что ближе ставлю бряк получаю это 3.1.jpeg далее если вбиваю адрес, то ничего не находит, думаю ну ок беру следующий, что ближе и ставлю бряк 3.2.jpeg вижу смещение 28 получаю (24A4DC28 - 28)=24A4DC00

    4)вбиваю в поиск 24A4DC00 нахожу адреса и ставлю бряки и тут впадаю в ступор, что дальше? 4.jpeg

  8. проблема кроется я думаю потому что в этой функции с нужного процесса ничего не считывается


    DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
    {
    for(DWORD i=0; i<dwLen; i++)
    if (bCompare((BYTE*)(dwAddress+i),bMask,szMask))
    return (DWORD)(dwAddress+i);
    return 0;
    }

    не долго думав мне пришло в голову, что по идее можно использовать readprocessmemory, но тут же я поймал ступор, как пользуясь этой функцией можно прочитать всю последовательность байт по нужному адресу, а не только значение, которое там лежит?

  9. возникает ошибка нарушение прав доступа на моменте поиска по сигнатуре, уже весь мозг себе поломал, вот мой код:


    void Button1Click(HWND hWnd)
    {
    HWND hWndGame = NULL;
    DWORD pid = 0;
    HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
    MODULEENTRY32 me32;
    DWORD BA = NULL;
    hWndGame = FindWindow(NULL, TEXT("Mass Effect"));
    GetWindowThreadProcessId(hWndGame,&pid); // запоминаем номер в переменную pid
    hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, pid );

    me32.dwSize = sizeof( MODULEENTRY32 );
    Module32First(hModuleSnap, &me32);
    BA = (DWORD)me32.modBaseAddr;
    //80 93 73 00 06 00 00 00 00 00 E0 40 00 00 C8 42
    DWORD address1 = FindPattern(BA, 0xFFFFFFFF, (PBYTE)"\x80\x93\x73\x00\x06\x00\x00\x00\x00\x00\xE0\x40\x00\x00\xC8\x42", "????xxxxxxxxxxxx");
    }
    bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
    {
    for(;*szMask;++szMask,++pData,++bMask)
    if(*szMask=='x' && *pData!=*bMask)
    return 0;
    return (*szMask) == NULL;
    }
    DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
    {
    for(DWORD i=0; i<dwLen; i++)
    if (bCompare((BYTE*)(dwAddress+i),bMask,szMask))
    return (DWORD)(dwAddress+i);
    return 0;
    }

    AOBscan-ом пытаюсь отыскать адрес денег по составленной сигнатуре, есть подозрение, что я не правильно составил сигнатуру, сейчас опишу как я её составлял:

    1) в CE нашел адрес с деньгами

    2) нажал просмотреть этот регион памяти

    3) там был код вида (80 93 73 00 06 00 00 00 00 00 E0 40 00 00 C8 42), сделал эксперимент с деньгами меняя их значение и этим я выяснил, что первый байт отвечает за кол-во денег(80 93 73 00), остальные 3 байта вроде статичны

    4) составил сигнатуру и маску: (80 93 73 00 06 00 00 00 00 00 E0 40 00 00 C8 42); (????xxxxxxxxxxxx)

    все понял код для инжекта dll же... может кто подсказать как то же самое осуществить без инжекта?

    и я буду очень благодарен тому кто объяснит мне работу сканера сигнатур(его подробный алгоритм)

  10. мне нужно получить адрес модуля, но функция почему-то не видит данный модуль в чем проблема?

    вот код который я использую:


    void Button1Click(HWND hWnd)
    {
    DWORD Radar = (DWORD)GetModuleHandleA("MassEffect.exe");
    DWORD error = GetLastError();
    }

    после выполнения GetModuleHandle возвращается ошибка 126... Есть подозрение, что нельзя таким образом узнать адрес MassEffect.exe.

    были мысли получить его открытием процесса функцией openprocess, которая возвращает HANDLE процесса, но как из хэнда получить адрес процесса?

  11. Можно использовать Lua плагин. Положить файлы в папку автозапуска CE. 1) Запустить CE 2) Найти адрес 3) Поставить бряк, перейти в игру, выбрать инструкцию 4) Перейти в дизассемблер по инструкции 5) Вызывать контекстное меню на инструкции *Creare AA AOBScan 6) Найти в главной таблице созданный скрипт, проверить или исправить

    просмотрел работу плагина, меня впечатлило даже очень) на счет aobscan как я понял ему всегда надо просто передавать последовательность байт нескольких соседних инструкций?

  12. Кури форум..... на форуме есть подробная тема про аобскан....

    я уже весь форум облазил за весь день, так и не нашел тутор по aobscan только проблемы связанные с ним видел....

    P.S.: Но есть и положительные стороны моих неудачных поисков, а именно я наткнулся на уроки кодера, очень интересно рассказывает все)

    P.p.s: Можно подсказку в каком разделе форума лежит тутор по aobscan?

  13. привет всем, у меня вопрос вот вы привели пример скрипта с aobscan в целом все понятно, но возникает вопрос откуда и каким образом вы брали набор байт внутри функции aobscan?


    aobscan(aob_god_1,"D8 AB 04 01 00 00 D9 9B 04 01 00 00 8B 95 F0 F8 FF FF B9")

    в тему с видео по использованию aobscan в mafia 2 не посылайте там ссылка мертвая на видео.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.