Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

[Руоф] Код для инжекта в память.

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 28.05.2012, 15:52   #181
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от BritishColonistПосмотреть сообщение
krukovis, слишком толсто же ;D
Лучше имитировать нажатие на предмет (инжектом, а не отправкой клавиш).
Если вопрос в том, существует ли альтернатива, то ответ я только что дал выше, а если требуется конкретная реализация, то лично мне в данный момент лень. : D

Так я и говорю про инжект нажатия горячей клавиши. Можно кстати инжект клика мышки в нужных координатах сделать. Но искать для нового клиента мне так же лень. Но если знаешь что это есть - то есть смысл искать.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 28.05.2012, 17:46   #182
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от Meg(0)Посмотреть сообщение
...

Код:
procedure TalkToNPCCall(aPParams:PParams);Stdcall;
var NPCID:DWORD;
    BaseAddress,CallAddress:Pointer;
begin
BaseAddress:=ptr($00A571E0);
NPCID:=aPParams^.Param1;
CallAddress:=ptr($00630B60);
 asm
  pushad
  mov edx, dword ptr [BaseAddress]
  mov ecx, dword ptr [edx+$20]  // тут не 34, а 20, это не PersStruct
  push NPCID
  add ecx, $EC  //тут так и есть EC
  call CallAddress
  popad
 end;
end;

Код:
procedure PacketCall(aPParams:PParams); stdcall;
  var
  CallAddress,pPacket:pointer;
  Len:DWord;
begin
  CallAddress:=Pointer($0063DB70); 
  Len:=aPParams^.Param1;
  pPacket:=@aPParams^.Packet;
  asm
    pushad
    mov ecx, dword ptr [PW_BASE_ADDRESS]
    mov ecx, dword ptr [ecx+$20]  // тут не 34, а 20, это не PersStruct
    push Len
    push pPacket
    call CallAddress
    popad
  end;
end;
Цитата:
Сообщение от Meg(0)Посмотреть сообщение
и где должно находится значение NPCID?

Код:
procedure TalkToNPC(NPCID:Cardinal); // <-сюда передаётся как параметр
var aParams:TParams;
v:HWND;
begin
aParams.Param1:=NPCID:;
InjectFunc(v,@TalkToNPCCall,@aParams,SizeOf(aParams));
end;
Добавлено через 7 минут
Цитата:
Сообщение от ktulxПосмотреть сообщение
Существует подобная альтернатива использованию итема из инвентаря? То есть, без привязки к номеру ячейки.

Создать функцию, которая получает в качестве параметра только ID, сканирует инвентарь на наличие этого ID берёт номр ячейки, в которой нашёлся данный предмет и вызывает инжект уже с указанием ID и найденным номером ячейки. У меня бот так банки пьёт, из любой ячейки, лишь бы они были в инвентаре.
________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝

Последний раз редактировалось dwa83; 29.05.2012 в 16:13. Причина: Добавлено сообщение
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
ktulx (29.05.2012), Meg(0) (29.05.2012)
Старый 29.05.2012, 11:17   #183
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

dwa83, дорогой, оформи топик по человечески, пожалуйста. Основное -
Код:
 теги code
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 29.05.2012, 13:18   #184
 Пехотинец
Аватар для Meg(0)
 
Meg(0) никому не известный тип
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Код:
procedure TalkToNPC(NPCID:Cardinal); // <-сюда передаётся как 
параметр
а от кудого передаётся?

или сюда ввести айди вместо параметра?
Код:
NPCID:=aPParams^.Param1;

Последний раз редактировалось Meg(0); 29.05.2012 в 13:21.
  Ответить с цитированием
Старый 29.05.2012, 16:12   #185
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от krukovisПосмотреть сообщение
dwa83, дорогой, оформи топик по человечески, пожалуйста. Основное -

Извиняюсь..

Добавлено через 8 минут
Цитата:
Сообщение от Meg(0)Посмотреть сообщение
а от кудого передаётся?

Ну как откудого? Либог Из переменной, в которой хранится ID нужного NPC либо напрямик писать ID. Вот пожую ещё немного:
Допустим нам нужно открыть диалоговое окно с ближайшим от нас НПС, мы проверяем массив окружающих мобов/нпс, находим среди них ближайшего НПС(по расстоянию до него) и считываем его ID. Далее вызываем функцию, параметром которой и является найденный нами ID, и при условии, что мы стоим на расстоянии, позволяющем открыть диалог, диалог откроется.
Либо если мы уже посмотрели по базе ID конкретного нужного нам NPC, то подводим бота к нему на положенное расстояние и вызываем функцию с уже заранее известным ID, например:
Код:
TalkToNPC(1234);  // здесь 1234 - это ид конкретного NPC (не путать ID с WID)
________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝

Последний раз редактировалось dwa83; 29.05.2012 в 16:22. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Meg(0) (30.05.2012)
Старый 29.05.2012, 17:14   #186
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Возможно меня не вполне правильно поняли, или я недопонял ответы ) Внесу больше конкретики:

Читаю инвентарь в массив записей с двумя полями: ID и ИМЯ. Как мне лучше/удобнее/ресурсоэкономичнее реализовать использование итема из инвентаря? Единственное, что мне пришло в голову - добавить в массив записей третье поле, куда будет записываться номер ячейки и затем подставлять этот номер и ID в пакет. Но возникает одно "но": а если вдруг итем был перемещён? Либо, скажем, у меня в инвентаре 150 микстур бодрости, 100 в первой ячейке и 50 во второй. В выпадающем списке формы я выбираю предмет по названию, а в пакет подставляется соответствующий ID и номер ячейки. Микстуры в первой/второй ячейке заканчиваются, и пакет уже будет недействителен. Следовательно, мне нужно хотя бы раз в несколько секунд перечитывать инвентарь, верно? Насколько неправильным будет такое решение? ))

Ах да, забыл добавить. Не хочу делать вызов по горячей клавише ) это несколько не труъ.

Спасибо.

Последний раз редактировалось ktulx; 29.05.2012 в 17:17.
  Ответить с цитированием
Старый 29.05.2012, 17:28   #187
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от ktulxПосмотреть сообщение
Следовательно, мне нужно хотя бы раз в несколько секунд перечитывать инвентарь, верно?

Инвентарь нужно считывать перед тем, как ты собираешься что то использовать. Перебор в 32 значения - это совершенно не ресурсоемкая задача. Да и вообще сильно не заморачивайся по поводу затрат ресурсов. Учитывая отклик от сервера в 500 мс, задержки в твоих циклах должны быть равны примерно 1000 мс (+-200 мс). А выполнение операций (циклов и прочего) занимает примерно 20 мс. Поэтому твоя программа будет работать примерно 10% времени и 90% времени будет просто находится в паузе.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Пользователь сказал cпасибо:
ktulx (29.05.2012)
Старый 29.05.2012, 17:34   #188
 Пехотинец
Аватар для ktulx
 
ktulx на правильном пути
Регистрация: 01.08.2011
Сообщений: 70
Популярность: 24
Сказал(а) спасибо: 45
Поблагодарили 7 раз(а) в 7 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от krukovisПосмотреть сообщение
Инвентарь нужно считывать перед тем, как ты собираешься что то использовать.

Это само собой. Что вообще скажешь о механизме, который я описал? "Нормально"? ) Спасибо за ответ о ресурсоёмкости. Меня слегка беспокоил этот вопрос.
  Ответить с цитированием
Старый 29.05.2012, 18:01   #189
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от ktulxПосмотреть сообщение
Что вообще скажешь о механизме, который я описал? "Нормально"?

Механизм должен быть такой, как мне кажется:
1)Ты выбираешь название предмета из списка в инвентаре, а программа запоминает его ID, без привязки к номеру ячейки.
2) Программа считывает в массив данные о предметах в инвентаре. Где ключ - № ячейки, а значение - ID.
3) Далее ты ищешь первую ячейку в которой у тебя лежит нужный предмет. Ищешь по значению (ID). Поиск по значению как раз и выдает номер ячейки. В Delphi же ключи считаются от нуля, на сколько я знаю. И у тебя ячейки идут от нуля.
4) Далее ты отправляешь пакет на использование нужного тебе предмета определив № ячейки и зная ID.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 31.05.2012, 12:14   #190
 Пехотинец
Аватар для Meg(0)
 
Meg(0) никому не известный тип
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Код:
TalkToNPC(1234);  // здесь 1234 - это ид конкретного NPC (не путать ID с WID)
так ошибку показывает
а так ничего не происходит...
Код:
procedure TalkToNPCCall(aPParams:PParams);Stdcall;
var NPCID:DWORD;
    BaseAddress,CallAddress:Pointer;
begin
BaseAddress:=ptr($00A571E0);
NPCID:=$801045de;
CallAddress:=ptr($00630B60);
 asm
  pushad
  mov edx, dword ptr [BaseAddress]
  mov ecx, dword ptr [edx+$34]
  push NPCID
  add ecx, $EC
  call CallAddress
  popad
 end;
end;

procedure TalkToNPC(NPCID:Cardinal);
var aParams:TParams;
v:HWND;
begin
aParams.Param1:=NPCID;
InjectFunc(v,@TalkToNPCCall,@aParams,SizeOf(aParams));
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
TalkToNPC($438);
end;
может не туда написал id нпс?

Последний раз редактировалось Meg(0); 31.05.2012 в 12:18.
  Ответить с цитированием
Старый 31.05.2012, 15:44   #191
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от Meg(0)Посмотреть сообщение
NPCID:=$801045de;

Не ВИД а ИД, было всё правильно - $438 приходило сюда из параметра PParams.
Цитата:
Сообщение от Meg(0)Посмотреть сообщение
mov ecx, dword ptr [edx+$34]

ну не 34 тут а 20, я ведь писал
Цитата:
Сообщение от Meg(0)Посмотреть сообщение
TalkToNPC($438);

всё правильно, но почему здесь именно значение $438 и почему именно в шестнадцатиричной форме? Перевожу в десятичное, получаю 1080, лезу в базу ПВ, нахожу непонятно какого НПС без имени и без толкового описания([Ссылки могут видеть только зарегистрированные пользователи. ]). Это чей ИД?

Добавлено через 41 минуту
ktulx, а откуда вы хотите вообще брать ID? Считать из списка предметов, которые в данный момент находятся в инвентаре или знать ID-ы предметов заранее?

Я себе сделал без заморочек.

В проге сделал массив такого типа

ID банок для 0 левела
ID банок для 5 левела
ID банок для 12 левела
ID банок для 20 левела
...

Разместил на форме заранее заполненный комбо-бокс, в котором выбирается левел используемых банок.
Уровень банок 0
Уровень банок 5
Уровень банок 12
Уровень банок 20
...

Далее в зависимости от того какая строка в комбо-боксе выбрана, берётся из массива нужный ID и ищется ячейка в которой лежит предмет с таким ID, смотрится её номер, и вызывается инжект с известным номером и известным ID. Если нужного предмета не нашлось, бот летит покупать банки.

Раньше было так: бралось первое значение из массива, сканировался инвентарь от конца до начала(чтобы использовались сначала последние ячейки и банки наименьшего левела) на наличие первого ID, если находили, использовался этот предмет. Если не находили, то брали второй ID из массива и опять сканировали инвентарь от конца к началу, если вообще нет ни одной банки ни для какого левела, то летели закупаться.
________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝

Последний раз редактировалось dwa83; 31.05.2012 в 16:28. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Meg(0) (31.05.2012)
Старый 31.05.2012, 23:37   #192
 Пехотинец
Аватар для Meg(0)
 
Meg(0) никому не известный тип
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

dwa83, не заметил,что не исправил 34 на 20,вот сейчас так сделал
Код:
TalkToNPC($4445);
тоже никакой реакции,добавил сюда поиск окна,вдруг он ранее нахождение окна не считывает,поставил так,тоже ничего не происходит..(
Код:
procedure TalkToNPC(NPCID:Cardinal);
var aParams:TParams;
v:HWND;
begin
v:=FindWindow(nil,Pchar('Perfect World));
if v <> 0
 then
  begin
aParams.Param1:=NPCID;
InjectFunc(v,@TalkToNPCCall,@aParams,1);
end;
end;
Код:
NPCID:=aPParams^.Param1;

Последний раз редактировалось Meg(0); 31.05.2012 в 23:41.
  Ответить с цитированием
Старый 01.06.2012, 17:36   #193
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от Meg(0)Посмотреть сообщение
TalkToNPC($4445);

Откуда вы берёте 4445? если из базы то этому ID соответствует торговец ЕСЛИ ЧИСЛО В ДЕСЯТИЧНОМ ВИДЕ, в шестнадцатиричном соответствует опять же непонятному НПС. Уберите знак "$".

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer; aParamsSize: DWord);

А вы туда хэндл окна суёте, да и процесс не открыли перед инжектом.

Добавлено через 4 часа 0 минут
Цитата:
Сообщение от krukovisПосмотреть сообщение
Написал функцию закрытия любого окна:
Функция на VB.Net с использованием ASM'а. Ниже на Delphi.

Код:
 ''' <summary> Закрытие окна </summary> актуально на 01.02.2012
    Public Sub CloseWindow(ByVal windowOffset As Integer)
        Dim intProcID As Integer = PW_WINDOW.ProcessId
        Dim CallAddress As Integer = &H616EA0
        Dim asm As New ASM()

        asm.Pushad()

        asm.Mov_EAX(BaseAddress)
        asm.Mov_EAX_DWORD_Ptr_EAX()
        asm.Mov_EAX_DWORD_Ptr_EAX_Add(&H1C)
        asm.Mov_EAX_DWORD_Ptr_EAX_Add(&H18)
        asm.Mov_EAX_DWORD_Ptr_EAX_Add(&H8)
        asm.Mov_EAX_DWORD_Ptr_EAX_Add(windowOffset)
        asm.Push_EAX()

        asm.Push68(&HACC3BC) 'Btn_Close 

        asm.Mov_EBP(CallAddress)
        asm.Call_EBP()

        asm.Popad()
        asm.Ret()
        asm.RunAsm(intProcID, 0)

    End Sub
Принимает в качестве параметра смещение окна
Код:
0x2B8 Действия
0x2C0 Игроки и группы
0x2C4 Служба поддержки
0x314 Характеристики персонажа
0x32C Ремонт
0x36C Призыв духа
0x3E8 Помощь
0x40C Инвентарь и Окно Торговли и Ремонта
0x428 Диалог с NPC
0x438 Домашние животные
0x458 Окно алхимика
0x468 Панель 1-9
0x470 Горячие клавиши
0x4B0 Настройки
0x4C4 Умения
0x50C Системная панель
0x51C Задания
Добавлено через 25 минут
Вот на Delphi - если найдете синтаксические ошибки - скажите - поправлю. Delphi не установлен, писал в блокноте.

Код:
procedure WinClose(WinOffset: PParams); stdcall;
var
PW_Call: Pointer;
const
PW_BASE_ADDR=$B27A04;
PW_BTN_CLOSE=$ACC3BC;

begin
PW_Call := Pointer($616EA0);
WIN_OFFSET := WinOffset^.Param1;

asm
pushad

mov eax, PW_BASE_ADDR
mov eax, dword ptr [eax]
mov eax, dword ptr [eax+$1C]                            
mov eax, dword ptr [eax+$18]
mov eax, dword ptr [eax+$8]
mov eax, dword ptr [eax+WIN_OFFSET]
push eax

push PW_BTN_CLOSE

call PW_Call

popad
end;
end;

procedure CloseWindow(windowOffset:dword);
begin
  aParams.Param1 := windowOffset; 
  InjectFunc(aHandle,@WinClose,@aParams,SizeOf(aParams));
end;

Очень прошу указать актуальные адреса и смещения для данной функции. Или может кто-нибудь поделиться рабочим инжектом закрытия окна диалога?
________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝

Последний раз редактировалось dwa83; 01.06.2012 в 21:36. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Meg(0) (13.06.2012)
Старый 01.06.2012, 22:21   #194
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от dwa83Посмотреть сообщение
Очень прошу указать актуальные адреса и смещения для данной функции. Или может кто-нибудь поделиться рабочим инжектом закрытия окна диалога?

Вот тут и функция и исходники для 1.4.5
http://zhyk.ru/forum/showpost.php?p=...&postcount=164
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Пользователь сказал cпасибо:
dwa83 (01.06.2012)
Старый 13.06.2012, 09:55   #195
 Пехотинец
Аватар для Meg(0)
 
Meg(0) никому не известный тип
Регистрация: 29.05.2010
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 80
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от dwa83Посмотреть сообщение
Откуда вы берёте 4445? если из базы то этому ID соответствует торговец ЕСЛИ ЧИСЛО В ДЕСЯТИЧНОМ ВИДЕ, в шестнадцатиричном соответствует опять же непонятному НПС.

да,это ID из базы,торговец...перевожу в шестнадцатиричный,получается 115D,без $ не работает,ошибку показывает

сделал вот так...но тоже ничего не происходит

Код:
procedure TalkToNPCCall(aPParams:PParams);Stdcall;
var NPCID:DWORD;
    BaseAddress,CallAddress:Pointer;
begin
BaseAddress:=ptr($00A571E0);
NPCID:=aPParams^.Param1;//$801044b2;  //aPParams^.Param1;//$801045de;
CallAddress:=ptr($00630B60);
 asm
  pushad
  mov edx, dword ptr [BaseAddress]
  mov ecx, dword ptr [edx+$20]
  push NPCID
  add ecx, $EC
  call CallAddress
  popad
 end;
end;

procedure TalkToNPC(NPCID:Cardinal);
var aParams:TParams;
v:HWND;
Pid,hProcess:DWord;
begin
v:=FindWindow(nil,Pchar('Perfect World'));
if v <> 0
 then
  begin
  GetWindowThreadProcessId(v,@PId);
 hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,PId);
aParams.Param1:=NPCID;
InjectFunc(PId,@TalkToNPCCall,@aParams,1);
end;
end;



procedure TForm1.Button6Click(Sender: TObject);
begin
TalkToNPC($115D);
end;

end.

Последний раз редактировалось Meg(0); 13.06.2012 в 10:13.
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Читерим в CrossFire или методы инжекта Hummel Cross Fire 6 10.11.2010 20:36
[Программа] Память о базе Chipito Базы серверов и брут 2 30.08.2010 17:23
Оперативная память для ПВ. NikelR Общение и обсуждение Perfect World 4 25.05.2010 22:30

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:33.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net