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

Delphi 7 поиск значений на примере Cheat Engine


Рекомендуемые сообщения

Ребят,выручайте,при поиске определенного значения aob в памяти процесса через Cheat Engine к примеру  00 01 00 00 FF , и после замены на 00 ?? ?? 00 AA , два значения под вопросиками останутся нетронутыми, чит енжин пропускает и исправляет нужное значение,в данном примере FF на AA , но если такое реализовать в Delphi 7, делфи эти вопросики преобразует в "88" то есть значение исправленное в делфи с вопросиками имело бы такой результат  00 88 88 00 AA , вот собственно как реализовать пропуск этих двух значений в Delphi 7 , может какие то другие символы для пропуска? O-=

Ссылка на комментарий
Поделиться на другие сайты

Привет!

Покажи код, используя чудо-теги code и spoiler (у последнего должно быть имя, чтобы он нормально работал). Сканер сигнатур - это алгоритм поиска строки в подстроке, так что, скорее всего, ты просто что-то делаешь неправильно, ибо алгоритм простой и в нем довольно тяжело ошибиться.
Ссылка на комментарий
Поделиться на другие сайты

Привет!

Покажи код, используя чудо-теги code и spoiler (у последнего должно быть имя, чтобы он нормально работал). Сканер сигнатур - это алгоритм поиска строки в подстроке, так что, скорее всего, ты просто что-то делаешь неправильно, ибо алгоритм простой и в нем довольно тяжело ошибиться.

beginSearch := SearchEngine.NewSearch('01 00 FF 00');trySearch.OPT_READPAGE_EXECUTEREADWRITE := True;Search.OPT_READPAGE_READWRITE := True;Search.OPT_READPAGE_EXECUTEREAD := True;Search.OPT_READPAGE_READONLY := True;if Search.Next then beginSearchResult := Search.GetFindedAddressObject;SearchResult.WriteHEX(0, '01 ?? AA 00');
Изменено пользователем Inforcer
Ссылка на комментарий
Поделиться на другие сайты

С такой же хренью я сталкивался , там находилось 3 сигнатуры , а из-за модуля сканирования менялась только первая сигнатура а нужна была вторая ( Пришлось 2 кнопки создавать и на них кидать код замены)

у меня находится 1 значение какое и нужно, но пробела не в этом , в том что при замене ?? меняется на 88 а не пропускает значение под вопросом

Ссылка на комментарий
Поделиться на другие сайты

Это не совсем то. Нужен исходник SearchEngine, где и происходит поиск.

Всмысле исходник, вот это стоит

public  SearchEngine: TMemorySearchEngine;  SearchResult: TMSE_FindedAddress; 

и далее сразу на кнопку прописан поиск,больше ничего 

Ссылка на комментарий
Поделиться на другие сайты

Дык TMemorySearchEngine - это явно не стандартный компонент Delphi. У него тоже должен быть исходник, на который мне и хочется взглянуть. Я могу и ошибаться, само собой.
Ссылка на комментарий
Поделиться на другие сайты

Дык TMemorySearchEngine - это явно не стандартный компонент Delphi. У него тоже должен быть исходник, на который мне и хочется взглянуть. Я могу и ошибаться, само собой.

Нету )

Ссылка на комментарий
Поделиться на другие сайты

1. Нужен код Функции WriteHEX

SearchResult.WriteHEX(0, '01 ?? AA 00');

 
2. Попробуй вместо вопросов поставить "XX"

 

 

3. Если хочешь помощи, то пиши код функции WriteHEX 

 

Если у тебя его тоже нет, тогда как ты себе представляешь помощь от нас? Мы не можем ни определить ошибок кода, ни поддержку пропуска байтов, ни поддерживаем символы для пропуска байт. Можно было бы exe поковырять в дизассемблере, но это вряд ли кто делать будет.

Ссылка на комментарий
Поделиться на другие сайты

Народ ну что вы с этим uMSE! у вас же dcu! что мешает создать цикл для замены всех сигнатур? к тому же деактивация на байты ?? не осуществляется!

 

SearchEngine - это класс!

 

a2nvxnrw.ano_55364420e3036.png

Изменено пользователем MasterGH
Большие картинки прячем под спойлеры
Ссылка на комментарий
Поделиться на другие сайты

1. Нужен код Функции WriteHEX

SearchResult.WriteHEX(0, '01 ?? AA 00');

 

2. Попробуй вместо вопросов поставить "XX"

 

 

3. Если хочешь помощи, то пиши код функции WriteHEX 

 

Если у тебя его тоже нет, тогда как ты себе представляешь помощь от нас? Мы не можем ни определить ошибок кода, ни поддержку пропуска байтов, ни поддерживаем символы для пропуска байт. Можно было бы exe поковырять в дизассемблере, но это вряд ли кто делать будет.

function TMSE_FindedAddress.WriteHEX(const From: Integer; const Data: string; const AddrID: Integer): Boolean;var  Buffer: array of Byte;  i: Integer;  Len: Integer;  Size: Integer;  TmpByte: Byte;begin                                            Len := Length(Data);  SetLength(Buffer, Len shr 1);  try    i := 1;    Size := 0;    while i <= Len do      begin        if Data[i] <> ' ' then          begin            TmpByte := HEXToInt(Data[i]);            Inc(i);            Buffer[Size] := (TmpByte * 16) + HEXToInt(Data[i]);            Inc(Size);          end;        Inc(i);      end;    Result := Write(From, @Buffer[0], Size, AddrID);  finally    SetLength(Buffer, 0);  end;end;
Изменено пользователем ∟DarkPan
Ссылка на комментарий
Поделиться на другие сайты

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

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

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