Логотип игрового форума RF-Cheats.ru    
Новости онлайн игр Обход античитов Чёрный рынок Реклама и привилегии Разработка читов ИИ и читы

Регистрация Бан-лист Сообщество ПОПУЛЯРНОЕ
Вернуться   RF-Cheats.ru - форум читеров и ботоводов > > >

Взлом и программирование

: Аспекты программирования при реализации различных методик взлома.
Читы и обход фроста для RF Online без хайдаБоты и читы для Perfect World бесплатно без хайдаМоды и читы для World of Tanks (WoT) бесплатно без хайдаМоды и читы для Armored Warfare бесплатно без хайдаБоты и читы для DOTA 2 бесплатно без хайдаБоты и читы для Black Desert Online бесплатно без хайдаЧиты на ArcheAge бесплатно без хайдаЧиты для Warface бесплатно без хайдаВзлом ВКонтакте и ОдноклассниковСписок разделов со всеми играмиЧиты для онлайн игр




Ответ
 
Сделать тему важной Опции темы
Старый 20.04.2014, 00:01   #1
Foreworld
Гость
Аватар для Foreworld
Сообщений: n/a
Благодарностей:
0 всего

[Помогите!]BoT Pointer


Здравствуйте, у меня вот проблема со считыванием значений.
Не знаю как написать функцию получения значения i.
Знаю что начинается с 0 и полученный индекс умножаться на 4
максимальное число i := $38
Это типа : 4*0=0,4*1=4,4*2=8 и т.д Как его считать? Помогите пожалуйста :(

PHP код:
var

    ...
    
    
begin
    
try //
    
for i := $0 to $38 do
    
begin 
     
???   
    
ReadProcessMemory (hProcess, Pointer($007E3600), @WHP, sizeof(WHP), NoB);    //BaseAdress $hex
    
ReadProcessMemory (hProcess, Pointer(WHP+$1A8), @WHP, sizeof(WHP), NoB);    //Enviroment Struct
    
ReadProcessMemory (hProcess, Pointer(WHP+(i*4)), @WHP, sizeof(WHP), NoB);    //Структура персонажа 
    
ReadProcessMemory (hProcess, Pointer(WHP+$1B4), @WHP, sizeof(WHP), NoB);    //Читаем значение HP(Жизни)    
 
...
    
    
ReadProcessMemory (hProcess, Pointer($007E3600), @WMP, sizeof(WMP), NoB);    //BaseAdress $hex
    
ReadProcessMemory (hProcess, Pointer(WMP+$1A8), @WMP, sizeof(WMP), NoB);    //Enviroment Struct
    
ReadProcessMemory (hProcess, Pointer(WMP+(i*4)), @WMP, sizeof(WMP), NoB);    //Структура персонажа 
    
ReadProcessMemory (hProcess, Pointer(WMP+$1D0), @WMP, sizeof(WMP), NoB);    //Читаем значение MP(Манны)
  
... 
 
Ответить с цитированием


Старый 21.04.2014, 16:03   #2
dark
Читодел
Аватар для dark
OFFLINE
Регистрация: 09.04.2007
Сообщений: 994
Благодарностей:
36,612 всего
Мнения: + 38031
Репутация: 116499
Отправить сообщение для dark с помощью ICQ Отправить сообщение для dark с помощью Skype™

Цитата:
Сообщение от Foreworld Посмотреть сообщение
Здравствуйте, у меня вот проблема со считыванием значений.
Не знаю как написать функцию получения значения i.
Знаю что начинается с 0 и полученный индекс умножаться на 4
максимальное число i := $38
Это типа : 4*0=0,4*1=4,4*2=8 и т.д Как его считать? Помогите пожалуйста :(
Это какой-то дельфийский слэнг?
Тебе нужно считать 38 последовательностей по 4 байта? А в чём проблема?
for(int i = 0; i < 38; i++)ReadProcessMemory (hProcess, Pointer(WHP+(i*4)), @WHP, sizeof(WHP), NoB);

Но я бы советовал дёргать память напрямую, без WinAPI.

 
Ответить с цитированием
Старый 21.04.2014, 23:38   #3
Foreworld
Гость
Аватар для Foreworld
Сообщений: n/a
Благодарностей:
0 всего

Да, это на делфи 7.
Вы привели мне пример на C++. Хм.. спасибо большое.
В делфи это выглядит так, если я точно понял ваш код)))
i : Integer; - переменная. integer - числовой диапазон
for i :=$0 to $38 do
begin
ReadProcessMemory (hProcess, Pointer(WHP+(i*4)), @WHP, sizeof(WHP), NoB);
end;

"Но я бы советовал дёргать память напрямую, без WinAPI." - можно поподробней пожалуйста?
 
Ответить с цитированием
Старый 23.04.2014, 09:37   #4
Foreworld
Гость
Аватар для Foreworld
Сообщений: n/a
Благодарностей:
0 всего

Попробую более внятно разъяснить)))
Когда я смотрю в ассемблерскую вкладку в программе "Cheating Engine", причем при поиске структуры персонажа, он мне показывает несколько видов кодов структуры, вот один из них:

Код:
FF 15 54E67400 - call dword ptr imp___invalid_parameter_noinfo]
8B 86 A8010000 ->>> mov eax,[esi+000001A8]<<<
8B 0C B8 - mov ecx,[eax+edi*4]
8B 11 - mov edx,[ecx]
eax = [BA]+1A8]] BA - BaseAdress
edi - это итератор цикла, оно меняется от 0 до значения eax с шагом в единицу.
Я хочу узнать чему будет равно edi программно, не прибегаю к cheating engine.

edi - от 0 до 9 hex и от A до E. Потом я умножаю на 4. И програ работает.
В своем коде я не много ошибся. Надо написать:
38 - это уже 38=4*9 в hex.

Как мне объяснили некоторые: "Ты попал на цепочку данных, если тебе надо прочитать всю цепочку, то читай в цикле с итератором i, если конкретный элемент, то напиши его индекс в i."
Вот собственно на что я и попал:
007E3600+1A8+(i*4)+1B8.
Я вообще понятие не имею в Delphi что такое итератор.(один чувак назвал его указателем)
Привели мне пример 3 циклов:
Код:
Код:
var
  i: integer;
  { ... }
begin
  i := 0;
    while i < $100 do  //TODO: insert correct value
      begin
        //TODO: Read value from process memory
        inc(i);
      end;
  i := 0;
    repeat
      //TODO: Read value from process memory
      inc(i);
    until
      i = $100;  //TODO: insert correct value
    for i := 0 to $100 do  //TODO: insert correct value
      begin
        //TODO: Read value from process
      end;
end;
Попробовал с этим кодом, выводит мне одно огромное значения причем оно меняется, тогда когда я дергую окно программы. Ладно приду попробую еще раз во всем разобраться, если не смогу разобраться, придется к вам за помощью обращаться.
Спасибо за внимание.

И да ваш код Dark:
он значит for i = 0; если i < 38 то действие верно, i++ - как я понял инкремент, начал и C++ немного подучивать
практически тоже самое и на Delphi
Код:
begin
  i := 0;
    while i < $100 do  //TODO: insert correct value
      begin
        //TODO: Read value from process memory
        inc(i);
      end;
Ток что, приду и буду думать че как по чем
Если есть догадки поделитесь)))
 
Ответить с цитированием
Старый 23.04.2014, 10:17   #5
dark
Читодел
Аватар для dark
OFFLINE
Регистрация: 09.04.2007
Сообщений: 994
Благодарностей:
36,612 всего
Мнения: + 38031
Репутация: 116499
Отправить сообщение для dark с помощью ICQ Отправить сообщение для dark с помощью Skype™

Цитата:
Сообщение от Foreworld Посмотреть сообщение
Попробую более внятно разъяснить)))
Когда я смотрю в ассемблерскую вкладку в программе "Cheating Engine", причем при поиске структуры персонажа, он мне показывает несколько видов кодов структуры, вот один из них:

Код:
FF 15 54E67400 - call dword ptr imp___invalid_parameter_noinfo]
8B 86 A8010000 ->>> mov eax,[esi+000001A8]<<<
8B 0C B8 - mov ecx,[eax+edi*4]
8B 11 - mov edx,[ecx]
eax = [BA]+1A8]] BA - BaseAdress
edi - это итератор цикла, оно меняется от 0 до значения eax с шагом в единицу.
Я хочу узнать чему будет равно edi программно, не прибегаю к cheating engine.

edi - от 0 до 9 hex и от A до E. Потом я умножаю на 4. И програ работает.
В своем коде я не много ошибся. Надо написать:
38 - это уже 38=4*9 в hex.
38=4*9? Это может быть в другой вселенной, в нашей же 36=4*9, а если в хексе, то 38=4*0e
По твоему ASM коду всё получается по-другому, объясняю на пальцах:
BaseAddress + 0x1A8 - по этому адресу лежит первый указатель
далее к этому указателю прибавляется (i * 4) и по получившемся адресу расположен ещё один указатель
считываем его и он собственно будет указывать на искомую величину.



То есть если взять твой код выше, получается:
Код:
    ReadProcessMemory (hProcess, Pointer((BASEADDRESS + 0x1A8), @WHP, sizeof(WHP), NoB);    //BaseAdress $hex 
    ReadProcessMemory (hProcess, Pointer(WHP+(i*4)), @WHP, sizeof(WHP), NoB); 
    ReadProcessMemory (hProcess, Pointer(WHP), @WHP, sizeof(WHP), NoB);
Если я всё правильно понял.
Ну и гоняй это дело в цикле.

Добавлено через 17 минут
Цитата:
Сообщение от Foreworld Посмотреть сообщение
"Но я бы советовал дёргать память напрямую, без WinAPI." - можно поподробней пожалуйста?
Я на дельфях не писал никогда, поэтому не могу сказать как у вас. В си к памяти можно обращаться напрямую через указатели, типа:
Код:
	int *ptr = (int *)0x12345678;

	*ptr = 666;
А можно и стандартными сишными api:
Код:
int toWrite = 666;
memcpy((void *)0x12345678, &toWrite, 4);

Последний раз редактировалось dark; 23.04.2014 в 10:36. Причина: Добавлено сообщение

 
Ответить с цитированием
Старый 23.04.2014, 18:21   #6
Foreworld
Гость
Аватар для Foreworld
Сообщений: n/a
Благодарностей:
0 всего

Значит мне надо указывать от 0 до $0e???
так как 38=4*$0e

i - это числовой диапазон или DWORD???

Добавлено через 1 час 52 минуты
Стал проверять... Мозг вынесло только так...

Решил использовать 2 цикла, чтоб проверить быстрей.

var // объявленные переменные
HP, MP : Integer;
WHP, WMP : DWORD;
NoB : DWORD;
i : Integer;

---------------------------
1 цикл:

Код:
begin //начало тела 

i:= $0; // i = 0x0 в hex
while i < $0e do
begin 

ReadProcessMemory (hProcess, Pointer($007E3600 + $1A8), @WHP, sizeof(WHP), NoB);
  ReadProcessMemory (hProcess, Pointer(WHP + (i*4)),@WHP, sizeof(WHP), NoB);
  ReadProcessMemory (hProcess, Pointer(WHP), @WHP, sizeof(WHP), NoB);
  inc(i); - если это убрать то програ зависнет.

  HP := Integer(WHP);
  Label2.Caption := IntToStr(WHP)
выводит мне все время 0, я специально убирал 4, менял i от и до.
Результат 0.

Сделал так:

Код:
  i := $0;
  while i < $0e do
  begin
  ReadProcessMemory (hProcess, Pointer($007E3600 + $1A8), @base, sizeof(base), NoB);
  ReadProcessMemory (hProcess, Pointer(base + (i*4)),@WHP, sizeof(WHP), NoB);
  ReadProcessMemory (hProcess, Pointer(WHP), @WHP, sizeof(WHP), NoB);
  inc(i);
  ReadProcessMemory (hProcess, Pointer(WHP+$1B4),@AWP, sizeof(AWP),NoB);
  end;
  HP := Integer(AWP);
  Label2.Caption := IntToStr(AWP);
Результат - 1.
Я уже запарился и самый прикол, даже если I * другие числа результат не измениться что в первом примере что и во втором.
Я вообще не врубаюсь

Одно я знаю точно, что если я бы знал чему равно i*4 и добавил в код как результат, например:

Код:
ReadProcessMemory (hProcess, Pointer($C38B6C), @WHP, sizeof(WHP), NoB); //BaseAdress
    ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+$4A8), @WHP, sizeof(WHP), NoB); //Читаем значение HP(Жизни)
    HP := Integer(WHP); //Переводим Integer
    Label2.Caption := IntToStr(WHP); //Вывести знанчение ХП

то все отлично показывало бы. Я уже не понимаю... Просто вынос мозга

Добавлено через 12 часов 54 минуты
Методом подбора я смог показать хп... И то надо проверить лучше.
Здесь я сам нашел i.
Код:
ReadProcessMemory (hProcess, Pointer($007E3600), @WHP, sizeof(WHP), NoB); 
ReadProcessMemory (hProcess, Pointer(WHP+$1A8), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$4), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$1B4), @WHP, sizeof(WHP), NoB
);

а здесь в цикле программно.
Код:
	i := 0;
	while i < $2 do
	begin
    ReadProcessMemory (hProcess, Pointer($007E3600), @WMPMax, sizeof(WMPMax), NoB); //BaseAdress
    ReadProcessMemory (hProcess, Pointer(WMPMax+$1A8), @WMPMax, sizeof(WMPMax), NoB);
    ReadProcessMemory (hProcess, Pointer(WMPMax+(i*4)), @WMPMax, sizeof(WMPMax), NoB);
    ReadProcessMemory (hProcess, Pointer(WMPMax+$1B4), @WMPMax, sizeof(WMPMax), NoB); //Читаем значение HPMaX
    inc(i);
	end;
Одно я не могу понять почему i < 2. если менять эту цифру на больше, то какие то сумасшедшие цифры получаются. А при вашем коде, обычно или 0 показывает или 1. А если еще что то добавить в код, то это может повеять на результат а может и нет. Фиг поймешь....

Последний раз редактировалось Foreworld; 24.04.2014 в 07:15. Причина: Добавлено сообщение
 
Ответить с цитированием
Старый 24.04.2014, 12:43   #7
dark
Читодел
Аватар для dark
OFFLINE
Регистрация: 09.04.2007
Сообщений: 994
Благодарностей:
36,612 всего
Мнения: + 38031
Репутация: 116499
Отправить сообщение для dark с помощью ICQ Отправить сообщение для dark с помощью Skype™

Цитата:
inc(i); - если это убрать то програ зависнет.

сразу бы сказал, что не шаришь. Как тебе это объяснить, если ты пытаешься кодить методом подбора? Тут понимать надо, а не наугад кнопки клацать.
Удаляюсь с темы.

 
Ответить с цитированием
Старый 05.12.2014, 19:51   #8
RenatPro
Гость
Аватар для RenatPro
Сообщений: n/a
Благодарностей:
0 всего

ReadProcessMemory (hProcess, Pointer(WMPMax+i*$4), @WMPMax, sizeof(WMPMax), NoB);
Возможно так)
 
Ответить с цитированием
Старый 06.12.2014, 20:15   #9
Тигрь
Крестный отец всех читеров
Аватар для Тигрь
OFFLINE
Регистрация: 02.04.2008
Сообщений: 4,059
Благодарностей:
37,857 всего
Мнения: + 32525
Репутация: 106940

Цитата:
Сообщение от RenatPro Посмотреть сообщение
ReadProcessMemory (hProcess, Pointer(WMPMax+i*$4), @WMPMax, sizeof(WMPMax), NoB);
Возможно так)
еще одна ванга-тыкалка? это наверно ахуенно апать старые темы при том что сам не знаешь ответа. а ничего что 4 в шестнадцатиричной системе равно четырем в десятичной и хоть ты 4 напишешь хоть $4 это одно и тоже.


Никогда нет причин для печали.



 
Ответить с цитированием
Сказали спасибо:
Недоступно (07.12.2014)
Старый 07.12.2014, 08:58   #10
RenatPro
Гость
Аватар для RenatPro
Сообщений: n/a
Благодарностей:
0 всего

Цитата:
Сообщение от Тигрь Посмотреть сообщение
еще одна ванга-тыкалка? это наверно ахуенно апать старые темы при том что сам не знаешь ответа. а ничего что 4 в шестнадцатиричной системе равно четырем в десятичной и хоть ты 4 напишешь хоть $4 это одно и тоже.
Я вот понимаю а вот Delphi может неправильно выводить результат я так и написал чтобы он указал $ возможно в этом проблема!
 
Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!]BoT Pointer Foreworld Общие вопросы по PW 0 18.04.2014 22:52
[NFS World] GPWA Bot-Group Pursuit Bot SI1M Need For Speed читы 0 24.04.2013 23:16
[NFS World]GPWA Bot - Group Pursuit Bot ActionForce Need For Speed читы 1 17.01.2013 15:58

Мир танков | Проект "Армата" | ArcheAge | Black Desert | РФ Онлайн | Айон | Майнкрафт | Браузерные игры
Элдер скролс | Р2 Онлайн | Реквием Онлайн | ПУБГ | Роял Квест | ГТА Санадреас | Контра | Дота 2
Мир кораблей | Лост Арк | Arma2 DayZ mod | The War Z | Карос: Начало | Tera Online
Читы для всех Онлайн-игр