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

Coder

Ветераны
  • Постов

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

  • Посещение

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

    13

Весь контент Coder

  1. Вы ведёте себя крайне вызывающе, я нахожу ваши слова оскорбительными. Мало того, что за вас весь код написали, так вы ещё и что-то предъявляете, не сильно ли это нагло? Знания как раз таки идут не из воздуха, а от чтения и ещё раз чтения, а потом практики. На данный момент вы не понимаете что такое dll, winapi, да и возможности языка C++. Вам нужно учить самые азы. P.S. терпение и труд всё перетрут.
  2. Очевидно же, что ты не рисуешь в перехваченной EndScene, отсюда и мерцание.
  3. Очевидно же: 1) Зачем используешь функции, которые предназначены для удалённого получения данных о процессе? (это касается всего MemoryEditor класса) * Раз уж ты пишешь DLL то будь проще, используй memcpy, memset и т.д. WinAPI тебе тут не нужен практически 2) Зависает потому что это нужно делать в отельном потоке
  4. 1) Я же предупреждал что код написал в блокноте (он не проверялся!) 2) Неужели не понятно, что функции типа void не возвращают никакое значение (самые самые азы C++) Так это же функция void, она не возвращает никакое значение, убери вообще return module;
  5. А что сложного? Как вариант можно так (код накидал в блокноте): #define MAX_ADDRLISTSIZE 255 void GetModuleInfo(MODULEENTRY32& module, char* module_name, bool main_process) //(из класса MemoryEditor), если хочешь юзать вне класса, //не забудь pID дополнительно передавать { HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID); module.dwSize = sizeof(MODULEENTRY32); if (Module32First(snapshot, &module)) { if (main_process) { CloseHandle(snapshot); return module; } while (Module32Next(snapshot, &module)) { if (_stricmp(module.szModule, module_name) == 0) { CloseHandle(snapshot); return module; } } } return module; } void findPatterns() { MODULEENTRY32 peInfo = {0}; GetModuleInfo(peInfo, "", true); // берём инфу о самом процессе int startAddress = (DWORD)info.modBaseAddr; // к примеру берём точку входа int finalAddress = startAddress + (DWORD)info.modBaseSize; // конец модуля int scanLen = (DWORD)info.modBaseSize; // размер модуля DWORD addressList[MAX_ADDRLISTSIZE] = {0}; // список адресов BYTE matches = 0; // количество совпадений int currentAddress = 0; // текущий адрес while (currentAddress < finalAddress) { currentAddress = FindPattern(startAddress + currentAddress, // откуда ищем? точка входа + последний найденный адрес scanLen - currentAddress, // сколько памяти просканируем? Длина модуля - посл. найденный адрес (PBYTE)"\0x90\0x90\0x90\0x90", // наша вставка "xxxx"); // наша маска if (currentAddress > 0) { addressList[matches] = currentAddress; // записываем в массив адресов наш адрес matches++; // увеличиваем счётчик совпадений } else break; } for (BYTE i = 0; i < matches; i++) { printf("Result #%d = 0x%X\n", addressList[i]); } } Вот второй вариант (тоже накидал в блокноте, возможно в вызове FindPattern перед matches, нужно будет поставить оператор взятия адреса): #define MAX_ADDRLISTSIZE 255 void FindPattern (DWORD* addrList, // массив адресов BYTE& matches, // кол-во совпадений DWORD start_address, // начало сканирования DWORD length, // сколько памяти просканируем BYTE* pattern, // вставка char *mask) // маска { matches = 0; // счётчик совпадений for (DWORD i = 0; i < length; i++) { if (DataCompare (ReadMemory<BYTE*>(start_address + i), pattern , mask)) // если мы нашли совпадение { addrList[matches] = (DWORD)(start_address + i); /* Записываем в наш список адресов найденный адрес (стартовый адрес + i (кол-во уже просканированных байт))*/ matches++; // увеличиваем счётчик совпадений } } } void findPatterns() { DWORD addressList[MAX_ADDRLISTSIZE] = {0}; // список адресов BYTE matches = 0; // кол-во совпадений MODULEENTRY32 peInfo = {0}; GetModuleInfo(peInfo, "", true); // берём инфу о самом процессе FindPattern(addressList, // передаём наш массив функции (в него она запишет адреса) matches, // передаём ей наш счётчик, куда функция запишет кол-во совпадений (DWORD)info.modBaseAddr, // откуда сканируем? базовый адрес приложения (DWORD)info.modBaseSize, // сколько сканируем? размер приложения (PBYTE)"\0x90\0x90\0x90\0x90", // наша вставка "xxxx"); // наша маска for (BYTE i = 0; i < matches; i++) printf("Result #%d = 0x%X\n", addressList[i]); }
  6. Всё просто проверяется. Ищешь любой параметр персонажа (патроны, здоровье, да что угодно), ставишь бряк на обращения к адресу, и если выскакивают инструкции, то дело не в игре. А ты просто вышел на левый участок кода, к которому игра не обращается.
  7. Coder

    CrackMe

    Да, то что прога на дельфях палится хорошо) Там куча дельфиновских фразочек
  8. Coder

    CrackMe

    Там под отладчиком надо бегать, код программы мало тебе поможет тем более что он весьма не очень удобно восстанавливается.
  9. Coder

    CrackMe

    Лично я не крякнул, но показав формулу, считай потратить 10 минут - и кряк готов. Да сложность тут можно было оставить предыдущую, просто формулу ты зря указал.
  10. Coder

    CrackMe

    Не такой уж и секрет (не буду писать каким образом ты делаешь ключи, но вышел на это я за минуту), а раскрыв формулу - ты дал взломать свой крэкми.
  11. Coder

    CrackMe

    А ты уверен что он точно берёт ключ из интернета?
  12. Ты меня удивляешь. Ты делаешь скрипт, так? А регистры ты проверять не пробовал? Думаю там ты и найдёшь свой злополучный id.
  13. Значит плохо ищешь)) Тем более если игра так исправно проверяет наличие отладчика, то почему бы не обмануть её? В CE есть такая вещь Try to prevent debugger detection это раз. И есть VEH Debugger с int3 инструкциями, на играх от ЕА работает 100%, думаю и здесь стоит проверить.
  14. А тебе http://forum.gamehacklab.ru/topic/216-xlive/page__view__findpost__p__2019 этот тутор не помог?
  15. Попробуй переименовать exe-шник CE во что-то безобидное, напимер kernel32.exe И сменить заголовок окна CE, для этого тебе нужно качнуть какую-нибудь прогу, ну думаю загуглить для тебя не вопрос. Если же с гуглом у тебя тяжело, то вбей в нём - "window title changer"
  16. Coder

    Dead Space 3

    Бан на два дня, за копи пасту таблицы.
  17. Я тебе скинул сурс, что тебе не нравится? Там выполнено всё, что ты просил. Бери, дописывай то что тебе нужно, и радуйся.
  18. DWORD addressList[100]; DWORD count = 0; for (int i = startRegionOFmemory; i < endRegionOFmemory; i+=4) { if (ReadMemory(i) == value) { addressList[count] = i; count++; } } while(true) { for (int i = 0; i < count; i++) WriteMemory(addressList[count], 1); Sleep(1); } Примерно так)
  19. Coder

    Отпуск

    Давай, удачно отдохнуть!
  20. Coder

    D3D Loger

    "\projects\логер тестур\логер тестур\main.cpp 245" убило)) P.S. в настройках проекта мультибайтовую кодировку выбери и всё.
  21. Отличная статья! P.S. но однако было бы проще, если бы это было в видео формате.
  22. Coder

    FAR CRY 3

    Кажется кого-то раскусили!
  23. http://curl.haxx.se/libcurl/c/visual_studio.pdf http://curl.haxx.se/libcurl/c/
  24. Используй библиотеку cURL или пиши с прогу с использованием WinSocket.
×
×
  • Создать...

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

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