|
You last visited: Today at 08:17
Advertisement
Rus. server
Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.
02/10/2010, 12:34
|
#1426
|
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
|
muzhig, да, интересные темы, я читал, но опять же, адрес вызова 0x005B7B70 отличается скорее всего от того, что в клиенте, который используется у меня, ибо просто рушится ничего не выделяя.
|
|
|
02/10/2010, 15:17
|
#1427
|
elite*gold: 0
Join Date: Sep 2009
Posts: 85
Received Thanks: 27
|
У меня все работает и все выделяется. не знаю что у тебя за клиент- у меня уже последних обновления три адрес таргета не менялся. А паттерн вообще у всех одинаковый.
Quote:
asm
pushad
mov ecx,dword ptr [PW_BASE_ADDRESS]
mov ecx,dword ptr[ecx+$20]
add ecx,$ec
mov eax, P1
push eax
mov edx, $5B7B70
call edx
popad
end;
|
Я так подозреваю что ты взял этот код и подставляешь не тот BA.
Скорее всего ты сюда подставляешь адрес BA+1C. Но PW_BASE_ADDRESS+20 это не указатель на структуру игрока!
const PW_BASE_ADDRESS = $98ADDC;
|
|
|
02/10/2010, 15:19
|
#1428
|
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
|
muzhig, 1.7.8 версия, сервер  .
Вопрос появился, подскажите, как в олли поставить бряки на все инструкции вида Х например. BPX команда вроде только по лейблу ставит...
Значит надо подставлять [BA], а не который [BA]+1C (Игровой сеанс)?
|
|
|
02/10/2010, 15:59
|
#1429
|
elite*gold: 0
Join Date: Sep 2009
Posts: 85
Received Thanks: 27
|
Quote:
|
Значит надо подставлять [BA], а не который [BA]+1C (Игровой сеанс)?
|
Именно
|
|
|
02/10/2010, 18:16
|
#1430
|
elite*gold: 0
Join Date: Aug 2009
Posts: 5
Received Thanks: 0
|
|
|
|
02/10/2010, 19:17
|
#1431
|
elite*gold: 0
Join Date: Oct 2009
Posts: 5
Received Thanks: 0
|
Если ты прочит всю тему то точно знал бы что нам это ничем не поможет, так как мы "это" открываем каждый день) не только для d_getservertime. Можешь пойти выложить на zhyk.ru и на лолчитс...там таким скринам будут рады, даже спасибок тебе накидают...ты главное тему назови "ДЮП"...а там уж разбиратся не будут.
|
|
|
02/10/2010, 19:44
|
#1432
|
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
|
muzhig, нашел BA - 00926fd4, но не помогает, клиент рушится, адрес вызова таргета по патернам найти не удалось =(
|
|
|
02/11/2010, 01:20
|
#1433
|
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
|
«Я вот решил собственного бота написать, только программировать не умею, поэтому у меня к вам много вопросов: а что такое BA; как искать то да это; пробовал подставлять ваши функции, все рушится, даже менял значения, но ничего не помогает…» и в том же духе на протяжении мнооогих постов.
Товарищи, прежде чем задавать такие вопросы, и тем более прежде чем начинать создавать своего мега-бота и писать инъекции, пожалуйста, хоть основы того же программирования почитайте. Разберитесь с динамическим распределением памяти, минимум знаний в ассемблере получите, прочитайте на msdn’е все касаемо используемых функций и т.п.
Ну вот, теперь по конкретным вещам: «нашел BA - 00926fd4, но не помогает»? Где нашли? И что из того, что каким-то образом найдено это число? Что вообще значит, его искать; наверное, при помощи СЕ?
«адрес вызова таргета по патернам найти не удалось», следовательно, вы подставляли в код инъекции только 00926fd4 (при условии, что это нужное значение), и ожидали, что все будет работать?
P.S. Здесь, как и на любом другом форуме не сидят ясновидицы, способные по одному сообщению «не работает», указать на ошибку.
added:
поставьте брейкпоинты в дебаггере на все инструкции [add ecx, EC]. Таких инструкций не так уж и много; сразу должны получить результат. Если пользуетесь ollyDbg, то достаточно вызвать поиск "all commands". Затем, в окне "commands found", нажатием F2 выставить bp на найденных адресах; автоматически данный дебаггер bp не расставляет
|
|
|
02/11/2010, 08:56
|
#1434
|
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
|
dwar, я конечно понимаю, что вы уже тут завсегдатый и успели зазнаться немного, но прошу вас проявлять уважение. Мы все когда-то с чего-то начинали, да я не буду скрывать, у меня нет опыта работы с низкоуровневыми языками такими как asm и опыта отладки при помощи х86 дизасемблера. По спицифике моей работы, нет надобности применять это все. И мне не надо писать своего мега-бота, достаточно только поправить MHS, чтобы он мог выделять цель полностью. Играю в свободное от работы время в основном вечером несколько часов, но тратить своё свободное время на задротство и убийство мобов не хочется, поэтому и есть надобность поправить бота уже существующего.
BA - нашел при помощи CE, проверил - это правильный BA, ибо BA+1C дал мне адрес, тот, который подходит допустим к MHS.
Да, попытка не пытка, попробовал заменить только BA в инъекции, как результат - неудача.
Пришел к выводу, что в моем клиенте используются другие регистры, но по скольку нет опыта работы в отладчике, я не смог найти адрес вызова метода выделения и соответственно посмотреть как он выглядит.
Подскажите пожалуйста, как можно поставить бряки на все инструкции вида ADD ECX, 0EC. Я использую OllyDbg 1.10. Пробовал в консоли написать BPX ADD ECX, 0EC, но выделялись, только CALL других модулей.
added:
Спасибо за помощь!
|
|
|
02/11/2010, 15:39
|
#1435
|
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
|
Quote:
Originally Posted by dwar
Товарищи, прежде чем задавать такие вопросы, и тем более прежде чем начинать создавать своего мега-бота и писать инъекции, пожалуйста, хоть основы того же программирования почитайте. Разберитесь с динамическим распределением памяти, минимум знаний в ассемблере получите, прочитайте на msdn’е все касаемо используемых функций и т.п.
|
+1
to TBXin: ветка как называется? . поищи на этом сайте ветку по твоему клиенту. Ну и что, что на буржуйском... если знаешь что надо-найдешь.
не знаешь- и сдесь не помогут. а если знаний только чтобы MHS подправить- искать бесполезно, даже если найдешь, или подскажут как- все-равно не получится. сам был такой ( да и в принципе таким остался  ) . касаемо инжектов и MHS даже в этой ветке сказано не раз.. ГЕМОР.. нужно быть не хилым программером чтобы все это разрулить.) без обид..
|
|
|
02/11/2010, 23:13
|
#1436
|
elite*gold: 0
Join Date: Nov 2009
Posts: 69
Received Thanks: 5
|
Кто интересовался поднятием лута вот код на автоите
Quote:
Func InjectPickLoot($LootI)
$OPCODE = ""
PUSHAD()
MOV_EAX(Dec("0098ADDC"))
PUSH(Lytinfo_SN($LootI)) ; SN лута +110
PUSH(Lytinfo_ID($LootI)) ; ID лута +10С
MOV_EAX_DWORD_PTR_EAX()
MOV_ECX_DWORD_PTR_EAX_ADD(32)
ADD_ECX(Dec("EC"))
MOV_EDX(Dec("005B7B00"))
CALL_EDX()
POPAD()
RET()
INJECTCODE($PROCESS_ID)
EndFunc
|
стоять непосредственно над лутом. в функцию передается I лута
|
|
|
02/12/2010, 13:55
|
#1437
|
elite*gold: 0
Join Date: Jan 2009
Posts: 137
Received Thanks: 19
|
Я вот счаз интересуюсь инжектом скиллов джина... Чота совсем не выходит каменный цветок...
|
|
|
02/12/2010, 19:14
|
#1438
|
elite*gold: 0
Join Date: Sep 2009
Posts: 85
Received Thanks: 27
|
TBXin, Раз у тебя BA не соответствует моему, значит и адрес вызова таргета у тебя другой.
Методика поиска адресов такова: нужно зацепиться за чтонибудь. За какую то команду. Определить где ее вызов, поставить брейпойнт и осмотреться: откуда был вызов, с какими параметрами, какие методы вызывает итд.
По идее правильнее всего искать адрес трассировкой. Но я для себя выбрал изращенский метод, который работает не всегда, зато прост в использовании)))
В CE нахожу ячейку памяти, и смотрю какие функции пишут в нее/читают из нее.
В твоем случае это ячейка с мишенью.
Там будет что то вроде списка с опкодами, которые произвели запись в ячейку.
Список будет пополняться по мере выполнения команд которые производят запись.
В общем, ставишь этот отлов и ждешь пока список перестанет заполняться.
все эти адреса не нужны. выделяешь мышкой последний "ненужный" адрес, чтобы не потерять его. Потом заходишь в игру и выполняешь действие: то есть выделяешь моба. В список добавится еще несколько опкодов- после того который ты выделил.
Один из них (вероятно первый) выполняется внутри процедуры таргета, которую необходимо инжектировать. В общем у тебя в руках пяток адресов, из которых остается отфильтровать нужный и все(это можно по паттерну сделать, которыц уже тебе дали).
На извратство метода можно закрыть глаза, если обратить внимание на прелесть: все эти операции можно произвести за считанные минуты. Таким образом поиск адреса нужной функции сводится к нескольким минутам против часов нудного поиска при помощи трассировки)) Кстати, где то в этой ветке этот метод был описан)) я его переделал немного))
|
|
|
02/13/2010, 09:58
|
#1439
|
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
|
muzhig, спасибо, благодаря идеи отловить, что пишет в указанный адрес, я таки выловил нужный код, осталось только разобратся и перевести его в инжект.
Quote:
На момент записи в ячейку регистры EAX и EDX хранят ID Моба. Запись идет тут mov [ecx+00000a18],edx, значит картинка следующая получается:
ecx - адрес игровой сессии
jne 0044d320 // взял на всякий случай, думаю эта строчка не нужна нам
mov eax,[edx+0c] // ???
mov edx,[eax] // ???
mov [ecx+00000a1c],00000000 // ba + target offset + 4 ??? запись ID моба
mov eax,edx // переносим в eax ID моба
mov [ecx+00000a18],edx // ba+target_offset, пишем в память ID моба
mov ecx,[00926fd4] // true base address
push eax // пропихиваем ID моба
push 008d0da8 // ???
push ffffff00 // ???
push ecx // пропихиваем true base
call 0042c8f0 // вызываем метод таргета
|
Если я где то ошибся, поправьте меня пожалуйста. И пришел к выводу, что если это нужный мне код для инжекта, то он на патерн не очень похож. Помогите пожалуйста сформировать из этого нужный для инжекта код. Заранее благодарен.
|
|
|
02/13/2010, 10:18
|
#1440
|
elite*gold: 0
Join Date: Sep 2009
Posts: 85
Received Thanks: 27
|
TBXin, сейчас ты нашел процедуру где происходит запись- НЕ ФАКТ что это таргет. Поставь брейкпойнт на нее и убедись, что остановка происходит ТОЛЬКО при выделении моба или нпс. Если так- то это НЕ ЗНАЧИТ что именно эта процедура- та которую нужно вызывать. Скорее всего она просто внутри цепочки вызовов. Дело в том, что одна процедура вызывает другую, та- третью итд. То есть, ты нашел то место в цепочке, где произошла запись. Теперь берешь в руки хороший и удобный дизасм (я юзаю IDA Pro), находишь в нем адрес этой операции и начинаешь копать вверх по цепочке: узнай, какая процедура вызвала эту процедуру. Потом, какая ту, итд. Всякий раз смотри на вызов- одна из найденных процедур вероятно (НО НЕ ФАКТ!) окажется до боли похожей на паттерн. Лично я долго орал в форум "помогите найти адрес" блаблабла- никто не горел желанием)) потом почитал немного и решил сам найти его- первый раз долго, муторно, пока технологию освоил. А потом как орешки щелкать))) Кстати, базу в IDA можно дополнять и дополнять- чем полнее, тем легче искать новые адреса, потому что многое довольно тесно взаимосвязано. Кстати именно таргет был первым адресом который я нашел, по моему)
|
|
|
All times are GMT +1. The time now is 08:19.
|
|