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

Vlad2

Ветераны
  • Постов

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

  • Посещение

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

    13

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

  1. unction ScanSignature(base: Cardinal; size: Cardinal; sign: PByte; mask: PAnsiChar): integer;var  mbi: MEMORY_BASIC_INFORMATION;  offset: Cardinal;  buffer: PByte;  BytesRead: Cardinal;  i: integer;begin  offset := 0;  while (offset < size) do  begin    VirtualQueryEx(m_hProc, Pointer(base + offset), mbi, sizeof(MEMORY_BASIC_INFORMATION));    if (mbi.State <> MEM_FREE) then    begin      GetMem(buffer, mbi.RegionSize);      ReadProcessMemory(m_hProc, mbi.BaseAddress, buffer, mbi.RegionSize, BytesRead);      for i := 0 to mbi.RegionSize do      begin        if (DataCompare(PByte(Integer(buffer) + i), sign, mask)) then        begin          FreeMem(buffer);          result := integer(mbi.BaseAddress) + i;          exit;        end;      end;      FreeMem(buffer);    end;    offset := offset + mbi.RegionSize;  end;  result := 0;                          end;

    Вот функция сканирования, которая ток статические сканирует.

  2. Всем привет!)
    Столкнулся с нуждой сделать произвольную форму в Delphi 7 с максимально четкой границей.
    Полез в гугл и нашел такое видео:


    Здесь показано, как сделать форму по заготовленной маске. И конечный результат вроде неплохой.
    Но моя Дельфи отказывается устанавливать компонент shapedform, пишет: Could not create output file ...'FormsChanging.bpl'

    Ну так вот, подскажите, как сделать сложную произвольную форму, чтоб ее окантовка не казалась пиксельной? Повторяю, форма сложная и сделать ее через такие программы типа "Регионы 7.0" не получится.

    • Плюс 1
  3. lamalamaz, .С наступающим!
    У меня была похожая проблема в одной игре. Долго мучился, искал, ничего не помогало. Потом психонул и в СЕ сделал такой поиск:
    Допустим адрес здоровья 805E6840. Искал диапазон 4 байта в  Hex, от 805E0000 до 805EFFFF (можно диапазон сделать побольше).

    Среди найденных адресов был один статический. Я его определил, как указатель, а смещение до жизней подвел вручную.
    Попробуй, может получится :)

  4. Отладчик -> Инструменты -> Автоассемблер.
    Туда вставляешь это:

    [ENABLE]{$LUA}writeInteger('[08B60780]+4', 1)[DISABLE]{$LUA}writeInteger('[08B60780]+4', 257)

    [08B60780]+4 - это указатель. Вместо его вставь свой адрес.
    Далее, Файл -> Добавить скрипт в таблицу.
    Потом просто делаешь HotKey на переключения скрипта нужной кнопкой.

    • Плюс 1
  5. Всем привет!

    Объясните пожалуйста, как работать с компонентом HotKey в Delphi.
    И как с помощью этого компонента сделать горячие клавиши для трейнера, чтоб можно было не сворачивая игру пользоваться функционалом трейнера?


    Нашел пример, но он не подходит, потому что если в программе зарегистрировать клавишу, то она кроме программы нигде не сработает.

    unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;type  TForm1 = class(TForm)  procedure FormCreate(Sender: TObject);  private   procedure WMHOTKEY(var Msg: TMessage); message WM_HOTKEY;    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin  RegisterHotKey(Handle, 1, 0, VK_DOWN);  RegisterHotKey(Handle, 2, 0, VK_UP);end;procedure TForm1.WMHOTKEY(var Msg: TMessage);begin  case Msg.WParam of    1: MessageBox(Handle, 'Down', 'WMHOTKEY', MB_OK or MB_SYSTEMMODAL);    2: MessageBox(Handle, 'Up', 'WMHOTKEY', MB_OK or MB_SYSTEMMODAL);  end;end;end.
  6. Привет форумчане!
    Стоит задача обезопасить трейнер написаный на Delphi.
    А конкретно, предотвратить перехват читаемых и записываемых параметров и 
    не дать сканером памяти подключатся к процессу трейнера.
    Как можно это реализовать?

  7. Насколько я помню, это должно было выглядеть бы так:
    1. Выделяешь Edit1 (поле для ввода текста).
    2. Переходишь в Events.
    3. Тыкаешь на OnChange.
    4. Создастся процедура, туда вставишь этот код:

    double Q, E, S;Q = Edit1->Text.ToDouble;E = Edit2->Text.ToDouble;S = Q*E + 320;Edit3->Text = FloatToStr(S);

    5. Выделишь Edit2 и перейдешь в Events.
    6. В OnChange выберешь Edit1Change.

    Если что ни так, камнями не кидайтесь, Последний раз в Borland С++ 6 работал, пишу по памяти.

  8. Coder, A1t0r, Спасибо. С функцией вызова dllки разобрался, но вот возникла проблемма с написанием dllлок на Delphi.

    library Project2; uses  SysUtils,  Classes; {$R *.res} function Symma(a,b:integer):Integer;stdcall;begin  Result :=a+b;end; exports Symma; beginend.

    Вот код dllки, функция вычисляет сумму 2 чисел, передаваемых ей и возвращает результат.

     

    Использование в СЕ.

    Symma = package.loadlib("D:\\Program Files (x86)\\Cheat Engine 6.4\\Project2.dll", "Symma")res = Symma(1, 2)print(res)

    Программа сообщает о неопределенной ошибке.

     

    Поясните, что нетак!

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

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

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