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

doc9009

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

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

  • Посещение

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

    8

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

  1. я ж уже говорил, что искать цепочки оффсетов и использовать их в трейнерах для современных игр трудоемко... Теперь по поводу адреса, этот самый адрес который ты не знаешь как достать называется базовым, для начала попробуй его увидеть через ollydbg, а потом уже программно доставай) Как его в ольке увидеть скажешь ты? Открываешь ольку, подключаешься к игре, идешь в обозреватель всех подключенных модулей(в гугле найдешь как попасть туда), там ищешь свою dll из цепочки оффсетов и смотришь на столбик BaseAddr вот там то и адрес твоей dll. В итоге у тебя уже такая цепочка получается BaseAddr + 15AC34 + 264 + 0 + 20.

    Теперь по поводу того как прочитать данные из адреса по цепочке:


    ReadProcessMemory(hProcess, (LPVOID)baseAddr + 0x15AC34, (LPVOID)baseAddr, 4, NULL);
    ReadProcessMemory(hProcess, (LPVOID)baseAddr + 0x264, (LPVOID)baseAddr, 4, NULL);
    ReadProcessMemory(hProcess, (LPVOID)baseAddr + 0x0, (LPVOID)baseAddr, 4, NULL);
    ReadProcessMemory(hProcess, (LPVOID)baseAddr + 0x20, (LPVOID)baseAddr, 4, NULL);

  2. есть предложение сделать опцию продолжить просмотр, то есть открыл прогу, выбрал анимэ, нажал на кнопку продолжить просмотр и прога открывает браузер или свой встроенный плеер с серией, на которой ты остановился.

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

  3. Трейнеры могут запускаться и без CE (зависит от настроек) ;) Это говорит о том, что в CE не ковырялся.

    Наверно, все сводится к тому, что тебе нравится программировать на С++. Использовать свое время на реализацию идей на С++, видеть результат и как это работает. Обычное хобби.

    Моя же точка зрения это побыстрее сделать. Чтобы это работало без ошибок. Хотя я уже давно по читам ничего не делал, мне просто лень. Для меня реализация на С++ как и на другом языке это скучная рутина. На CE сделать гораздо интереснее. Необходимые готовые функции под рукой, Автоассемблер удобно инжектит, Lua Engine прекрасно выполняет сценарии. Формат .cetrainer хранит все мои наработки, которые я могу поправить и исправить. Мне не нужно лазить между CE и средой разработки C++ и копипистить сигны или байт код новой инъекции. CE сам все генерит. __asm вставки на C++ мне не понравилось использовать, это не Автоассемблер....

    Как ни странно даже большие трейнеры сделанные на CE скачивают и продолжают скачивать. Для игрока главное чтобы работало, а потом он просто удалит трейнер в корзину. Стараться сделать все идеально... не стоит оно того.

    В общем это было мое, может быть, унылое мнение. Если кому оно было противно, не интересно... не принимайте близко к сердцу :)

    я CE почти не пользуюсь, для копания в ассемблерном коде мне больше нравится олька, еще один пример, что на вкус и цвет товарища нет. На С++ можно написать движок трейнера с нужным функционалом и не париться... В asm вставках код взятый из ольки минутное дело поправить... И вообще тема в бесконечный флуд и спор превратилась.

  4. Вот одна из тестовых работ (функционал доделаю)

    3cc59e5e7ab9.png

    где же по твоему серьезно?

    на С++ ? где нужно писать движок просто для того, чтобы нарисовать что то внутри формы. и еще для того, чтобы работать с памятью процесса...

    сделано на плюсах без особых усилий, была только трудность в рисовании дизайна... Движок почти доделан скоро пущу в свет трейнеры с этим дизайном... Короче каждому свое, но мое предпочтение всегда останется на плюсах.

    post-10227-0-74160100-1384774241_thumb.p

  5. на сколько я знаю хрюша не может быть с net 4.5 максимум 4.0... А не работает может быть из-за того, что программа написана в 2012 студии и в параметрах проекта не стоит данная опция

    опция эта появляется в 12 студии, кстати, начиная со 2 обновления. В 13 студии сомневаюсь, что оставят поддержку хрюши

    post-10227-0-85462500-1384372079_thumb.p

  6. Я так тоже пробовал. Если DWORD value; сделать глобальной, то метка value исчезает совсем, вместо него появляется call в никуда...

    Жалко что никто не знает решение. Остается только написать функцию с запросом и возвратом значения...

    наверно потому, что надо делать так:


    mov [value], edx

    тогда все прокатит

  7. SCugDYrs.png

    Трейнер пока работает только на Windows Vista, Windows 7, Windows 8

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

    P.S.: довольно интересный движок унреал оказывается) 1 функция выполняет кучу задач, в зависимости от содержимого регистров

    Batman Arkham Origins v1.0 +2 Trainer.rar

    • Плюс 3
  8. можно value сделать глобальной переменной и вывести её значение MessageBox'ом


    char buff[4];
    wsprintf(buff, "value = 0x%X", value);
    MessageBox(NULL, buff, "", MB_OK);

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

  9. mgZyTWca.png

    Трейнер работает вроде стабильно, хотя для 4 обновления были некоторые проблемы, убрал строительство за 1 ход, для следующего обновления попытаюсь вернуть...

    TotalWar Rome2 v.140-7573 +14 Trainer.rar

    • Плюс 1
  10. слушай это тебе в первую очередь надо, а тут тебе у человека нудный голос, другой по английски говорит, давай меньше капризов... ты зачем тему создавал то? чтоб как красна девица носом воротить?

    Это код поиска сигнатур, когда твоя dll находится в памяти процесса:


    bool DataCompare(const BYTE* pData, const BYTE* pattern, const char* mask)
    {
    for(; *mask; ++mask, ++pData, ++pattern)
    if (*mask == 'x' && *pData != *pattern)
    return false;
    return (*mask) == NULL;
    }
    DWORD FindPattern(DWORD start_address, DWORD length, BYTE* pattern, char *mask)
    {
    for(DWORD i = 0; i < length; i++)
    if(DataCompare((BYTE*)(start_address + i), pattern, mask))
    return (DWORD)(start_address + i);
    return NULL;
    }

    По аналогии делай из exe файла, как это сделать подумай сам...

    P.S.: этот код можно было найти на этом форуме, это раз и найти в гугле, два.

    • Плюс 1
  11. а тебе, что подавай все сразу и на блюдечке? если по ходу урока вдумываться, а не просто переписывать код с экрана, то очень даже не нудный... ну, а если тебе нужен код, чтобы просто скопипастить увы огорчу тебя, у тебя ничего не выйдет.

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

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

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