∟DarkPan
-
Постов
42 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные ∟DarkPan
-
-
Народ ну что вы с этим uMSE! у вас же dcu! что мешает создать цикл для замены всех сигнатур? к тому же деактивация на байты ?? не осуществляется!
SearchEngine - это класс!
-
function readInteger(GHandle: THandle; Address: Pointer): Integer;var read: SIZE_T;begin ReadProcessMemory(GHandle, Pointer(Address), @Result, SizeOf(Result), read);end;
procedure onTest;var value: integer; begin value := readInteger(Gamehandle, Pointer($FFFFFFFF)); ShowMessage(inttostr(value)); end;
- 1
-
Всмысле, ах, блин, я на Хе компилировал позже сделаю под D7
-
Никто не помешает взломщику посмотреть код дизассемблером, а не во время работытрейнера. Автор, тебе зачем это все? Есть такой парень - Lingon, насколько япомню, долго зависал на cheathappens. Он на свои трейнеры навешивал протекторThemida (бывший X-Protector). Сказать "навороченный" - это ничего не сказать.Но даже этот прот можно снять, вот и лингона это не спасло - в какой-то моментего темные дела все равно вскрылись. Я советую лишний раз не быть параноиком,потому что на сколько-нибудь вменяемую защиту придется потратить или многовремени или много денег.
Ты прав, нет идеальной защиты, всё зависит от сил, времени, и затрат
-
Он хочет анти шпион, и имеет ввиду, что если какой там нибудь paper Clip Trainer Spy подключиться к тренеру, и активировать чит в тренере, то шпион покажет адрес и сигнатуру, вообщем во то что тебе нужно!
https://www.dropbox.com/s/9sv89xn2e95gwv8/CheatsHolder.dcu?dl=0
просто создаёшь таймер, подключаешь модуль, и в таймер пишешь:
AntiSpy;
И всё, и когда шпион попытается перехватить сигнатуру (WriteProcessMemory), твой тренер тупо закроется!
это же нужно, да?
-
В твоей задаче это так принципиально?)
Я уже всё сделал
-
function ReadFloat(Address: Cardinal): Single;varReaden: Cardinal;Data: Double;begin ReadProcessMemory(PidHandle, Pointer(Address), @Data, SizeOf(Data), Readen); result:=Data;end;
Вывод : Edit1.Text := FloatToStr(readFloat(Adress));
Во! у тебя единственный норм вариант, и то:
есть погрешность
--
Оригинал: 1.62500044514339
в едит выводит так: 1,62500047683716
============
ВСЁ, спасибо всем, и владу, извините те, кому вынес мозг сегодня, прошу удалить тему
-
Я вообще нифига не понимаю, выводит тип 4 байта, что делать - хз
вот функция:function Debugger(GameHandle: THandle; const Address: Pointer): DWORD;varReadValue: SIZE_T;ViewValue: DWORD;beginReadProcessMemory(GameHandle, Address, @ViewValue, SizeOf(ViewValue), ReadValue);Result := ViewValue;end;Вот как формаляю код в прогрммеvarAddress: Double;beginGHandle := OpenProcess($001FFFFF, False, pID);Address := BlackScanner.Debugger(GHandle, Pointer($003E9468));SpinEdit1.Text := FloatToStr(Address);
выводит поганых 4 байта -
да ё маё, я уже замучался пля, сделайте мне пример
-
Я все понять не могу. В новых версиях Delphi есть тип Double. Если ты пишешь на новой XE, то зачем тебе преобразования? Сразу читай в Double, и преобразований не надо будет делать. Это в Delphi 7 приходится колдовать.
Так как организовать в Double
я с таким дел не имел, а сейчас понадобилось! так что я незнаю как и чо сделать
-
Я в псевдокоде напишу, т.к. не пишу на дельфях:
У тебя три переменные - 8 байт (long word), double и string. Делаешь так:
hex_bytes;double;string; hex_bytes = ReadProcessMemory - читаешь 8 байт из нужного адреса памяти в переменную hex_bytesdouble = PInt64(hex_bytes) - используешь функцию PInt64, чтобы сконвертировать массив байт в тип doublestring = FloatToStr(double, 8, 4) - конвертируешь double в string при помощи FloatToStr
Напиши пожалуйста на дельфи, а то я C вообще не понимаю никак
-
Читай:
Как перегнать
-
Я так понимаю, что ты прочитал 8 байт (потому что тип - double), но они у тебя прочитаны в 16-ричной системе счисления, т.е. hexademical. Так что сначала тебе нужно преобразовать эти байты в нужный тебе тип (double), а уже затем - double в строку, воспользовавшись FloatToString (она работает и для float и для double). Возможно, в hex-double поможет PInt64(hex_num), но я не уверен, что эта функция есть в delphi xe7. Можешь написать байты, которые читаются из памяти? 16-ричные.
плин, я не понял то ничего, я просто хочу решить вопрос с отображением именно типа Double, а тут всё так запутанно
я пишу трейнера на ХЕ5 =/
есть такая функция:
-
Но согласись: зато теперь функция точно работает, и значение точно выводится верное? Осталось только его вывести в нужном формате. Можешь попробовать использовать ту же StrToFloat, ссылку на ее описание тебе скинул товарищ keng.
Вот теперь показывает это:
2,0047476E0009
А не это
1.62500044514339
===================
Код написал вот так:
[code/]
procedure TForm2.Button1Click(Sender: TObject);varAddress: DWORD;beginGHandle := OpenProcess($001FFFFF, False, pID);Address := BlackScanner.Debugger(GHandle, Pointer($003E9468));Edit1.Text := FloatToStrF(Address, ffNumber, 8, 4);end;[code\] -
Значение отображается в HEX системе, все верно.
Просто типы измени, в остальном - отличий быть не должно.
Всёравно не то!
тебе показывает в типе: 4 байта!, а нужно Double
-
Не, это не то,
должно отображаться как на скриншоте, а не как в Edit, конечно спасибо что помогаете, но это не то/
Да, и пишу на XE, так что очень большое пожалуйста, не поправляйте код под 7
-
Кенг, ты не понял наверн, FloatToStr. я взял чтобы просто попробовать, я не профи, просто как можно вывести в Edit, значение определённого аддресса в типе Double
я привёл функцию, которая возможно не пашет, даже проверить никак
-
Edit1.text := FloatToStr(BlackScanner.Debugger(GameHandle, Pointer($0004000), а тут хз что писать);
Ребятоки, ну помогите же вы!
-
Покажи сигнатуру, я помогу
-
Извини, но поэтому коду, я написал модульС чего ты взял? Вообще-то она сканирует виртуальную память. VirtualQueryEx тебе ни о чем не говорит?
Который действительно сканирует и меняет!
НО меняет первый найденный аддрес и выходит из цикла, нужно создавать tstringlist..
PS извиняюсь, не так прочитал, ксипо.
-
Не получается вывестиПривет!
"Не катит" - в смысле, ничего не читает, или не получается потом на экран вывести полученное значение?
-
Delphi
Помогите мне сделать отображение указанного аддресса, в типе Double,
Типо указал аддресс, и оно тебе из него значение пишет в ShowMessage;
вот код напилил, но всёравно не катит,
[code/]
function Debugger(GameHandle: THandle; const Address: Pointer; ViewValue: Double): Integer;varReadValue: SIZE_T;beginReadProcessMemory(GameHandle, Address, @ViewValue, SizeOf(ViewValue), ReadValue);end; -
Спасиб, яуже разобрался
-
Код в порядке, вроде.
Вот по поводу маски - сомневаюсь. Попробуй выставить (в обработчике OnClick sCheckBox1) не 'xxxxxxxxxx', а примерно такую: 'x????x????x????xx????xx'.
Можешь дать скайп, у меня есть вопрос приватный =), да и код всёравно не сканирует, возможно сканирует, но не заменяет!
Delphi 7 поиск значений на примере Cheat Engine
in Высокоуровневое программирование
Опубликовано · Изменено пользователем ∟DarkPan