chips777 Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Здравствуйте! Подскажите, кто знает, как на делфи реализовать чтение, запись строки в памяти,если известен ее адрес в игре. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Привет! http://msdn.microsoft.com/en-us/library/windows/desktop/ms681674(v=vs.85).aspx Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Это я и без вас знал, мне нужна реализация, как записывается строка в память, когда я читаю получаются кракозябры, а когда записываю вылеты игры, Покажите рабочий пример на делфи, если кто то в этом соображает! Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Это я и без вас знал, мне нужна реализация, как записывается строка в память, когда я читаю получаются кракозябры, а когда записываю вылеты игры,Покажите рабочий пример на делфи, если кто то в этом соображает!Точно также как и любой другой тип данных она записывается. Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Ничего не получается, сидел 6 часов, опух, флоат и 4 байта легко записываются, строки не хотят.... Пишите рабочие примеры, кто знает, либо кидайте ссылки кто это делал на делфи и у кого получилось.Строка юникод. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Ничего не получается, сидел 6 часов, опух, флоат и 4 байта легко записываются, строки не хотят....Пишите рабочие примеры, кто знает, либо кидайте ссылки кто это делал на делфи и у кого получилось.Строка юникод.Если строка юникод, то 1 символ это 2 байта. Ссылка на комментарий Поделиться на другие сайты Поделиться
DenkA003 Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 просто )) переводишь хек кодировку в дек кодировку и с дек кодировки переводишь в текст .. в делфи если следовать такому методу текст получаеться задом на перед ... тогда тебе нада юзнуть функцию реверса текста .... и вуала все работает .... делал так когда ломал КС выводил хп и ники игроков на форму Ответ Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Поподробнее опиши перевод из дек кодировки в текст и желательно пример, чтения, записи строки в адрес Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Поподробнее опиши перевод из дек кодировки в текст и желательно пример, чтения, записи строки в адресНе слушай эту ерунду.Смотри у тебя есть строка в юникоде. Всё что тебе нужно это передать функции WriteProcessMemory указатель на неё и указать размер равный - длина строка * 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Coder, пробовал как ты говоришь, у меня не получилось, что то я не то делаю.Нужен рабочий пример. Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Coder, пробовал как ты говоришь, у меня не получилось, что то я не то делаю.Нужен рабочий пример.Думаю перевести это в дельфи как два пальца об асфальт.std::wstring str(L"test");HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, ид_процесса);WriteProcessMemory(hProc, (void*)адрес_куда_пишем, str.c_str(), str.length() * 2, 0);CloseHandle(hProc); Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Тоесть должно получиться вот так?Пробовал не читает.var str:ansistring; str:=''; lenstr:=5; ReadProcessMemory(hProc, ptr(adress), @str, lenstr*2, numRead); TntEdit1.text:=Ansistring(str); Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Хэндл процесса должен быть валидным и как минимум с правами VM_READ, а также ansi string не есть unicode string. и как я смотрю память под строку ты нифига не выделяешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 (изменено) Замечания справедливые, но это был лишь кусок кода....Вот немного исправил:procedure TForm1.Button25Click(Sender: TObject);varhProc: THandle;prilID,AdressCh,numRead,write:DWORD;Buffer:PWideChar;Strwrite:WideString;addll:integer;beginStrwrite:='test';hProc :=0;prilID:=GetProcess('a.exe');hProc := OpenProcess(Process_All_Access, False, prilID);if hProc <> 0 thentryaddll:=Ulong(GetBaseAddressEXE(prilID,'b.dll'))+$101E03;ReadProcessMemory(hProc, ptr(addll), @AdressCh, 8, numRead);label42.Caption:=Inttohex(AdressCh,0);Buffer:= AllocMem(5);ReadProcessMemory(hProc, ptr(AdressCh), Buffer, 5, numRead);TntEdit1.text:=WideCharToString(Buffer);StringToWideChar(Strwrite, Buffer, 4);WriteProcessMemory(hProc, ptr(AdressCh), Buffer, 4, write);finallyCloseHandle(hProc);FreeMem(Buffer); end;end;Код не работает, что я не так делаю? Изменено 19 декабря, 2013 пользователем Coder Код нужно вставлять с соответсвующим тэгом Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Какое значение в AdressCh?Почему в переменную DWORD ты читаешь QWORD (DWORD64)? Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 ReadProcessMemory возвращает вопросы . Все провел, адрес совпадает с адресом найденным в чит енжине. код GetLastError() = 18 Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 ReadProcessMemory возвращает вопросы . Все провел, адрес совпадает с адресом найденным в чит енжине. код GetLastError() = 18http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspxReadProcessMemory возвращает int (BOOL = int, bool = bool).http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx ищи свой код здесь (если это 0x18, то ошибка очевидно - Error bad length, то о чём я тебе и говорил, ты в DWORD читаешь QWORD (8 Байт). Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 в AdressCh адресс, в котором находится строкаИзменил на 4 байта, изменений нет.Когда первый раз нажимаю кнопку ошибка 1447, второй раз 18.Вот так сделал,осталась ошибка 18 ReadProcessMemory(hProc, ptr(addll), @AdressCh, {8}4, numberRead); label43.Caption:=inttostr(GetLastError()); Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 А ничего, что в указанном куске кода чтение идет не из процесса, а из какого-то теоретического модуля? Может, стоит подумать над кодом, прежде чем пытаться на его основе делать свой чит? Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 .Чтение как раз должно идти из библиотеки!Я поэтому и спрашиваю.Что не правильно тут.Это не чей то чит это просто инфа взятая из инета, не все как ты пишут по чужим читам.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 .Чтение как раз должно идти из библиотеки!Я поэтому и спрашиваю.Что не правильно тут.Это не чей то чит это просто инфа взятая из инета, не все как ты пишут по чужим читам....Error bad length, то о чём я тебе и говорил, ты в DWORD читаешь QWORD (8 Байт). Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 не все как ты пишут по чужим читам...За словами своими последи немного, дружок. Ссылка на комментарий Поделиться на другие сайты Поделиться
chips777 Опубликовано 19 декабря, 2013 Автор Поделиться Опубликовано 19 декабря, 2013 Ты вникай в вопросы а потом пиши!Или тебе пофиг лишь бы что то вставить?Кота поставил все можно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Ты вникай в вопросы а потом пиши!Или тебе пофиг лишь бы что то вставить?Кота поставил все можно?Ещё раз говорю - ошибка в том, что длина буфера меньше, чем ты читаешь!У тебя буфер 4 байта, а ты пытаешься читать 8 байт! Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 декабря, 2013 Поделиться Опубликовано 19 декабря, 2013 Кота поставил все можно? Дружок, дерзить прекрати, и гормоны свои успокой. Это раз. Прежде чем что-то голословно утверждать - трижды подумай. Это два. Про три и четыре я даже говорить ничего не стану, если кому из нашей команды будет интересно, скажут за меня, ибо я не привык хвастаться. На этом оффтоп закончим. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения