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

Synapsehome

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

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

  • Посещение

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

    2

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

  1. Не ну конешн спасибо за разъяснение Ошибка была в GetLogFilePath, даже скорее не ошибка не недочёт. я переписал и сделал немного проще. Народ, пользуйте: ofstream LogFile; BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved) { if(dwReason == DLL_PROCESS_ATTACH) { CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Log, 0, 0, 0); } else if(dwReason == DLL_PROCESS_DETACH) { } return TRUE; } void Log(){ LogFile.open("c:\\D3DTest.txt"); LogFile.clear(); DWORD XP = FindPattern((DWORD)IW5SPbase, 0x005E5000, (BYTE*)"\xA1\x00\x00\x00\x00\x85\xC0\x74\x06\x05", "x????xxxxx"); LogFile << "XP Address: " << XP; } XP Address: 1521881249 главное, что работает!
  2. Всем привет! Задача такова: не искать каждый раз адрес с жизнями, решил сделать автологгер(используя findpattern), в который должны заноситься новые адреса (к примеру - адреса опыта для кооперативного режима, статичные). Так вот, сам логер работает как присоединяемая к игровому процессу dll. Покажу, как именно я пытаюсь писать (ударение на 2-й слог) в файл: #include <windows.h> #include <fstream> #include <stdio.h> #define LOGFILE "logfile.txt" using namespace std; char logFilePath[260]; void getLogFilePath( HINSTANCE hinstDLL ) { if (GetModuleFileNameA(hinstDLL, logFilePath, sizeof(logFilePath))) { for (int i = strlen(logFilePath) - 1; i >= 0; i--) { if (logFilePath[i] == '\\'){ logFilePath[i+1] = 0; strcat(logFilePath,LOGFILE); break; } } } } void add_log(const char *fmt, ...) { va_list va_alist; ofstream ofile; char logbuf[256] = {0}; if(!fmt) { return; } ofile.open(logFilePath, ios::app); va_start (va_alist, fmt); _vsnprintf(logbuf, sizeof(logbuf) - sizeof(char), fmt, va_alist); va_end (va_alist); ofile << logbuf << endl; ofile.close(); } void MyLogThread() { add_log("TEXT"); } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,LPVOID lpReserved ) { switch( fdwReason ) { case DLL_PROCESS_ATTACH: getLogFilePath(hinstDLL); CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MyLogThread, NULL, NULL, NULL); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } В директории с dll лежит файл logfile.txt. Но строчка TETX в файл не записывается
  3. Как знакомо, но я перестал этой камастурой заниматься и перешел на PABC : ) Никогда не любил паскаль и никогда не использовал "досовскую" версию, есть намного лучше - http://pascalabc.net/ssyilki-dlya-skachivaniya.html, сейчас там 4 фреймворк поддерживается и конструктор форм.
  4. MasterGH, необязательно, эта функция лишь копирует данные. Я ошибся , вставив 10-тичное число 4553935, это я экспериментировал, и указал не тот размер, не 2 а 3 )) Добавил VirtualProtect, вроде всё заработало, тьфу тьфу unsigned long Protection; VirtualProtect((void*)0x00425FC7 2, PAGE_READWRITE, &Protection); memcpy((LPVOID)0x00425FC7, "\x75\x12", 2); VirtualProtect((void*)0x00425FC7, 2, Protection, 0);
  5. Я хочу вместо WiriteProcessMemory использовать memcpy, ведь dll аттачится к процессу, значит, необходимости в WPM. Следующий код даёт возможность убрать туман войны и видеть, где строится компьютер в Galactic Battlegrounds: BYTE NoFogOfWar[] = {0x75, 0x12}; WriteProcessMemory(BATTLEGROUNDS, (void*)0x00425FC7, &NoFogOfWar, 2, 0); Для memcpy: memcpy((LPVOID)0x00425FC7, "\x75\x12", 2); Для примеры с WriteProcessMemory всё работает, для memcpy - игры вылетает сразу же после инжекта. Полный код: #include <windows.h> void __stdcall FogOfWar(void) { for(;; Sleep(200)){ if(GetAsyncKeyState(VK_NUMPAD1)){ memcpy((void*)00425FC7, "\x75\x12", 3); } } } int __stdcall WINAPI DllMain(HINSTANCE hModule, DWORD dwAttached, LPVOID lpvReserved) { if(dwAttached == DLL_PROCESS_ATTACH) CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)FogOfWar, NULL, NULL, NULL); return 1; } В чем проблема?
  6. Не буду создавать дополнительную тему, так что продолжу эту. Проект представляет собой DLL, которая инжектится любым инжектором. Польза - получение адреса d3d9.dll Ошибка сотоит в том, что ругается: DWORD D3DADDRESS = NULL; while(D3DADDRESS == NULL) { D3DADDRESS = (DWORD)GetModuleHandle("d3d9.dll"); } Изменено: Забыл про GetModuleHandleA
  7. Izmalkoff, может я не понял вопрос, но объяви в глобалах переменную, например, ClickCounter: Dim ClickCounter As Integer = 0 Перед Catch ex As Exception присвоить ей значение 1: ClickCounter = 1 А после MsgBox("Login failed", MsgBoxStyle.Critical, "Error") присвоить ей 0: ClickCounter = 0 А для кнопки2 сделать так: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If ClickCounter = 0 then MsgBox("You must be logged in!", MsgBoxStyle.Critical, "Error") else MsgBox("Hack successful", VbOkOnly, "Hack successful") End If End Sub
  8. Самая гениальная ошибка, с которой я бился несколько дней, нужно сохранять трейнер в директорию без кирилических символов, например на C:\
  9. У меня есть ник - Synapse, это из фильма, а приставка home - если первый занят, тут она вставилась случайно =)

  10. MasterGH, разобрался: Const PAGE_READWRITE = &H4& Const PROCESS_ALL_ACCESS = &H1F0FFF Private Declare Function GetWindowThreadProcessId Lib "User32" (ByVal hwnd As Integer, ByRef lpdwProcessId As Integer) As Integer Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Integer Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer Private Declare Function VirtualProtectEx Lib "kernel32" (ByVal hProcess As Integer, ByRef lpAddress As Object, ByVal dwSize As Integer, ByVal flNewProtect As Integer, ByRef lpflOldProtect As Integer) As Integer Dim Address(0 To 1) As Integer Dim vBuffer(0 To 1) As Long Dim convert(0 To 1) As Integer Dim byte_array0 As Byte() = Nothing Все работает. Сейчас выложу полный сурс UPD Вот, качайте, смотрите, код можно ужать раз в 10, но этим займусь на досуге. Халва пиратка, так что работать у вас вряд-ли будет, но за пример сгодится/ НО - осталась малюсенька проблемка с записью float. Если объявить массив: Dim sBuffer(0 To 1) As Double И записать 0,03 - ничего не записывается: Dim myProcesses As Process() = Process.GetProcessesByName("hl2") Dim processHandle As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, myProcesses(0).Id) Address(0) = Address byte_array0 = BitConverter.GetBytes(vBuffer(0)) convert(0) = BitConverter.ToInt32(byte_array0, 0) vBuffer(0) = "0,03" VirtualProtectEx(processHandle, Address(0), 4, PAGE_READWRITE, 0) WriteProcessMemory(processHandle, Address(0), vBuffer(0), 4, 0) Всё! Разобрался!
  11. Нет, теперь ругается на все: Тот адрес (AddressWith0X) уже имеет вид 0xXXXXXXX, может я не понял, ты хотел из 10-ного в 16-ный конвертировать? Или нет... я запутался. У кого стоит HL2, попробуйте сделать - для активации в найденный адрес AddressWith0X записать 1, для деактивации 0.
  12. Опять ругается на IntPtr: PS. Прикрутил проект сверху.
  13. MasterGH, собаку съел пытаясь использовать CreateToolhelp32Snapshot, но потом нашел более лучшее решение. Вот на VB: Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Object, ByVal lpBuffer As Object, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long Public Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As Byte(), ByVal nSize As UIntPtr, ByRef lpNumberOfBytesWritten As IntPtr) As Boolean End Function Код на нажатие кнопки: Dim HL2WriteProcess As Process = Process.GetProcessesByName("hl2")(0) Dim ValueToWrite As Integer = 1 Dim pBytes As Byte() = BitConverter.GetBytes(ValueToWrite) WriteProcessMemory(HL2WriteProcess.Handle, AddressWith0X.Text, pBytes, pBytes.Length, 0) При записи выдаёт ошибку - Приведение строки 0x01B0250 к типу Long недопустимо.
  14. Да, все что написано выше я знаю Как я понял, нужно найти адрес DLL и к нему прибавить оффсет - правильно?
  15. Одну тему я вроде создавал, но черт с ней. Побаловался, намулевал простенький трейнер для (спасибо MasterGH, что разрулил мои проблемы с чекбоксами) HL2: Хотя после обновы перестали работать беск хп Я хочу перенести его хотя бы в VS, не всё же время на CE сидеть, нужно что-то менять. Туторы, которые я нашел, мне малость неонятны - например, автор находит адрес с хп, пишет программку за полминуты, и вставляет туда этот адрес (DMA! ), и, мол, готово. Адрес изменится после перезапуска в любом случае. Так вот, это на первое. На второе - пончик у меня адрес с освещением (все вокруг подсвечивается равномерно, т.е. нет теней и пр. темных и страшных закоулков) статичен и имеет вид типа materialsystem.dll+ED5A8 Как правильно сделать инжектор к нему? Лучше, если на C++ CLI, неуправлялку я знаю, но использовать не хочу, т.к. люблю повозиться с интерфесом
  16. local te_health = getTableEntry("health") function CECheckbox1Change(sender) if ( checkbox_getState(sender) ) then memoryrecord_freeze(te_health, 0) else memoryrecord_unfreeze(te_health) end end Подправил добавив then. Работает но наоборот, т.е. когда чекбокс неактивен - замораживается, как активен - размораживается, а если поменять код местами, у меня не рабоатет Я не буду использовать .CETRAINER, а хочу скомпилировать в экзешник, пусть хоть 3 мб, чтобы тот, кто будет использовать, не заботился о скачивании СЕ и пр. Мне нужно лишь чтобы значение 100 записывалось при активации, а значение 99 при деактивации без холодильника (заморозки). Так что вышеописанный вариант с таблицей как я понял мне не подходит. Помогите уж
  17. MasterGH, а в адрес как записывать (адрес с хп обозвал как health)?
  18. Стал замечать, что по СЕ 6.1 да и по его проблемах появляются одинаковые темы, с одинаковым названием, и проблемами, кстати тоже. Посему, делаю одну тему, что все писали по проблемам с этой версией только сюда, и не создавали клонов в диких количествах. При том, что в оригиналах уже давно даны ответы. //Kvazimado В последнее время надоело делать использовать хотклавиши для активации функций. Приглянулись чекбоксы, но событий типа checked и unchecked я не нашел. Спрошу на примере: у меня есть игрушка, в ней статичное значение жизней, при активации чекбокса (с галочкой) - в адресс ZZZ (это хп) должно записаываться 100, а при деактивации - 99 (смысл не в 100% жизнях, а в их восстановлении (да да, вот так тупо, но мне так нужно )). Весь вопрос в том - как черт возми это сделать?
×
×
  • Создать...

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

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