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

∟DarkPan

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

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

  • Посещение

Сообщения, опубликованные ∟DarkPan

  1. 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;
  2. Народ ну что вы с этим uMSE! у вас же dcu! что мешает создать цикл для замены всех сигнатур? к тому же деактивация на байты ?? не осуществляется!

     

    SearchEngine - это класс!

     

    a2nvxnrw.ano_55364420e3036.png

  3. 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
  4.  

    Никто не помешает взломщику посмотреть код дизассемблером, а не во время работы
     трейнера. Автор, тебе зачем это все? Есть такой парень - Lingon, насколько я 
     помню, долго зависал на cheathappens. Он на свои трейнеры навешивал протектор 
     Themida (бывший X-Protector). Сказать "навороченный" - это ничего не сказать. 
     Но даже этот прот можно снять, вот и лингона это не спасло - в какой-то момент
      его темные дела все равно вскрылись. Я советую лишний раз не быть параноиком,
       потому что на сколько-нибудь вменяемую защиту придется потратить или много 
       времени или много денег.

     

    Ты прав, нет идеальной защиты, всё зависит от сил, времени, и затрат

  5. Он хочет анти шпион, и имеет ввиду, что если какой там нибудь paper Clip Trainer Spy подключиться к тренеру, и активировать чит в тренере, то шпион покажет адрес и сигнатуру, вообщем во то что тебе нужно!

    https://www.dropbox.com/s/9sv89xn2e95gwv8/CheatsHolder.dcu?dl=0

    просто создаёшь таймер, подключаешь модуль, и в таймер пишешь:

    AntiSpy;

    И всё, и когда шпион попытается перехватить сигнатуру (WriteProcessMemory), твой тренер тупо закроется!

    :-D это же нужно, да?

     

  6. 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

    ============

    ВСЁ, спасибо всем, и владу, извините те, кому вынес мозг сегодня, прошу удалить тему

  7. Я вообще нифига не понимаю, выводит тип 4 байта, что делать - хз
    вот функция:

     

    function Debugger(GameHandle: THandle; const Address: Pointer): DWORD;
    var
     ReadValue: SIZE_T;
     ViewValue: DWORD;
    begin
     ReadProcessMemory(GameHandle, Address, @ViewValue, SizeOf(ViewValue), ReadValue);
     Result := ViewValue;
    end;
     
    Вот как формаляю код в прогрмме
    var
      Address: Double;
    begin
      GHandle := OpenProcess($001FFFFF, False, pID);
      Address := BlackScanner.Debugger(GHandle, Pointer($003E9468));
      SpinEdit1.Text := FloatToStr(Address);

    выводит поганых 4 байта
     
  8. Я все понять не могу. В новых версиях Delphi есть тип Double. Если ты пишешь на новой XE, то зачем тебе преобразования? Сразу читай в Double, и преобразований не надо будет делать. Это в Delphi 7 приходится колдовать.

    Так как организовать в Double

    я с таким дел не имел, а сейчас понадобилось! так что я незнаю как и чо сделать

  9.  

    Я в псевдокоде напишу, т.к. не пишу на дельфях:

     

    У тебя три переменные - 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 вообще не понимаю никак

  10. Я так понимаю, что ты прочитал 8 байт (потому что тип - double), но они у тебя прочитаны в 16-ричной системе счисления, т.е. hexademical. Так что сначала тебе нужно преобразовать эти байты в нужный тебе тип (double), а уже затем - double в строку, воспользовавшись FloatToString (она работает и для float и для double). Возможно, в hex-double поможет PInt64(hex_num), но я не уверен, что эта функция есть в delphi xe7. Можешь написать байты, которые читаются из памяти? 16-ричные.

    плин, я не понял то ничего, я просто хочу решить вопрос с отображением именно типа Double, а тут всё так запутанно

    я пишу трейнера на ХЕ5 =/

    есть такая функция:

    qky2gopi.qo0_54b23f70ab2d2.png

  11. Но согласись: зато теперь функция точно работает, и значение точно выводится верное? Осталось только его вывести в нужном формате. Можешь попробовать использовать ту же StrToFloat, ссылку на ее описание тебе скинул товарищ keng.

    Вот теперь показывает это:

    2,0047476E0009

    А не это

    1.62500044514339

    ===================

    Код написал вот так:

    [code/]

    procedure TForm2.Button1Click(Sender: TObject);
    var
      Address: DWORD;
    begin
      GHandle := OpenProcess($001FFFFF, False, pID);
      Address := BlackScanner.Debugger(GHandle, Pointer($003E9468));
      Edit1.Text := FloatToStrF(Address, ffNumber, 8, 4);
    end;
    [code\]
  12. Значение отображается в HEX системе, все верно.

     

    Просто типы измени, в остальном - отличий быть не должно.

    Всёравно не то!

    тебе показывает в типе: 4 байта!, а нужно Double

    hxa1ijoi.20l_54b23986a89ac.png

  13. Не, это не то,

    должно отображаться как на скриншоте, а не как в Edit, конечно спасибо что помогаете, но это не то/

    dp20djjx.ipt_54b2340585bcc.png

    Да, и пишу на XE, так что очень большое пожалуйста, не поправляйте код под 7

  14. Кенг, ты не понял наверн, FloatToStr. я взял чтобы просто попробовать, я не профи, просто как можно вывести в Edit, значение определённого аддресса в типе Double

    я привёл функцию, которая возможно не пашет, даже проверить никак

  15. С чего ты взял? Вообще-то она сканирует виртуальную память. VirtualQueryEx тебе ни о чем не говорит?

    Извини, но поэтому коду, я написал модуль

    Который действительно сканирует и меняет!

    НО меняет первый найденный аддрес и выходит из цикла, нужно создавать tstringlist..

    PS извиняюсь, не так прочитал, ксипо.

  16. Delphi

    Помогите мне сделать отображение указанного аддресса, в типе Double, 

    Типо указал аддресс, и оно тебе из него значение пишет в ShowMessage;

    вот код напилил, но всёравно не катит, 

    [code/]

    function Debugger(GameHandle: THandle; const Address: Pointer; ViewValue: Double): Integer;
    var
      ReadValue: SIZE_T;
    begin
      ReadProcessMemory(GameHandle, Address, @ViewValue, SizeOf(ViewValue), ReadValue);
    end;
     
     
  17. Код в порядке, вроде.

    Вот по поводу маски - сомневаюсь. Попробуй выставить (в обработчике OnClick sCheckBox1) не 'xxxxxxxxxx', а примерно такую: 'x????x????x????xx????xx'.

    Можешь дать скайп, у меня есть вопрос приватный =), да и код всёравно не сканирует, возможно сканирует, но не заменяет!

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

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

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