Rus. server

02/10/2010 12:34 TBXin#1426
muzhig, да, интересные темы, я читал, но опять же, адрес вызова 0x005B7B70 отличается скорее всего от того, что в клиенте, который используется у меня, ибо просто рушится ничего не выделяя.
02/10/2010 15:17 muzhig#1427
У меня все работает и все выделяется. не знаю что у тебя за клиент- у меня уже последних обновления три адрес таргета не менялся. А паттерн вообще у всех одинаковый.

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 TBXin#1428
muzhig, 1.7.8 версия, сервер [Only registered and activated users can see links. Click Here To Register...].
Вопрос появился, подскажите, как в олли поставить бряки на все инструкции вида Х например. BPX команда вроде только по лейблу ставит...

Значит надо подставлять [BA], а не который [BA]+1C (Игровой сеанс)?
02/10/2010 15:59 muzhig#1429
Quote:
Значит надо подставлять [BA], а не который [BA]+1C (Игровой сеанс)?
Именно
02/10/2010 18:16 Kolimas#1430
не знаю нужно вам это или нет, может хоть кому нибудь поможет
[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]
02/10/2010 19:17 Sirioga#1431
Если ты прочит всю тему то точно знал бы что нам это ничем не поможет, так как мы "это" открываем каждый день) не только для d_getservertime. Можешь пойти выложить на zhyk.ru и на лолчитс...там таким скринам будут рады, даже спасибок тебе накидают...ты главное тему назови "ДЮП"...а там уж разбиратся не будут.
02/10/2010 19:44 TBXin#1432
muzhig, нашел BA - 00926fd4, но не помогает, клиент рушится, адрес вызова таргета по патернам найти не удалось =(
02/11/2010 01:20 dwar#1433
«Я вот решил собственного бота написать, только программировать не умею, поэтому у меня к вам много вопросов: а что такое BA; как искать то да это; пробовал подставлять ваши функции, все рушится, даже менял значения, но ничего не помогает…» и в том же духе на протяжении мнооогих постов.
Товарищи, прежде чем задавать такие вопросы, и тем более прежде чем начинать создавать своего мега-бота и писать инъекции, пожалуйста, хоть основы того же программирования почитайте. Разберитесь с динамическим распределением памяти, минимум знаний в ассемблере получите, прочитайте на msdn’е все касаемо используемых функций и т.п.

Ну вот, теперь по конкретным вещам: «нашел BA - 00926fd4, но не помогает»? Где нашли? И что из того, что каким-то образом найдено это число? Что вообще значит, его искать; наверное, при помощи СЕ?
«адрес вызова таргета по патернам найти не удалось», следовательно, вы подставляли в код инъекции только 00926fd4 (при условии, что это нужное значение), и ожидали, что все будет работать?

P.S. Здесь, как и на любом другом форуме не сидят ясновидицы, способные по одному сообщению «не работает», указать на ошибку.

added:
поставьте брейкпоинты в дебаггере на все инструкции [add ecx, EC]. Таких инструкций не так уж и много; сразу должны получить результат. Если пользуетесь ollyDbg, то достаточно вызвать поиск "all commands". Затем, в окне "commands found", нажатием F2 выставить bp на найденных адресах; автоматически данный дебаггер bp не расставляет
02/11/2010 08:56 TBXin#1434
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 gen-ostr#1435
Quote:
Originally Posted by dwar View Post
Товарищи, прежде чем задавать такие вопросы, и тем более прежде чем начинать создавать своего мега-бота и писать инъекции, пожалуйста, хоть основы того же программирования почитайте. Разберитесь с динамическим распределением памяти, минимум знаний в ассемблере получите, прочитайте на msdn’е все касаемо используемых функций и т.п.
+1

to TBXin: ветка как называется? . поищи на этом сайте ветку по твоему клиенту. Ну и что, что на буржуйском... если знаешь что надо-найдешь.
не знаешь- и сдесь не помогут. а если знаний только чтобы MHS подправить- искать бесполезно, даже если найдешь, или подскажут как- все-равно не получится. сам был такой ( да и в принципе таким остался :rolleyes:) . касаемо инжектов и MHS даже в этой ветке сказано не раз.. ГЕМОР.. нужно быть не хилым программером чтобы все это разрулить.) без обид..
02/11/2010 23:13 Novohyd#1436
Кто интересовался поднятием лута вот код на автоите
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 AlexGD#1437
Я вот счаз интересуюсь инжектом скиллов джина... Чота совсем не выходит каменный цветок...
02/12/2010 19:14 muzhig#1438
TBXin, Раз у тебя BA не соответствует моему, значит и адрес вызова таргета у тебя другой.

Методика поиска адресов такова: нужно зацепиться за чтонибудь. За какую то команду. Определить где ее вызов, поставить брейпойнт и осмотреться: откуда был вызов, с какими параметрами, какие методы вызывает итд.

По идее правильнее всего искать адрес трассировкой. Но я для себя выбрал изращенский метод, который работает не всегда, зато прост в использовании)))

В CE нахожу ячейку памяти, и смотрю какие функции пишут в нее/читают из нее.
В твоем случае это ячейка с мишенью.
Там будет что то вроде списка с опкодами, которые произвели запись в ячейку.
Список будет пополняться по мере выполнения команд которые производят запись.
В общем, ставишь этот отлов и ждешь пока список перестанет заполняться.
все эти адреса не нужны. выделяешь мышкой последний "ненужный" адрес, чтобы не потерять его. Потом заходишь в игру и выполняешь действие: то есть выделяешь моба. В список добавится еще несколько опкодов- после того который ты выделил.
Один из них (вероятно первый) выполняется внутри процедуры таргета, которую необходимо инжектировать. В общем у тебя в руках пяток адресов, из которых остается отфильтровать нужный и все(это можно по паттерну сделать, которыц уже тебе дали).
На извратство метода можно закрыть глаза, если обратить внимание на прелесть: все эти операции можно произвести за считанные минуты. Таким образом поиск адреса нужной функции сводится к нескольким минутам против часов нудного поиска при помощи трассировки)) Кстати, где то в этой ветке этот метод был описан)) я его переделал немного))
02/13/2010 09:58 TBXin#1439
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 muzhig#1440
TBXin, сейчас ты нашел процедуру где происходит запись- НЕ ФАКТ что это таргет. Поставь брейкпойнт на нее и убедись, что остановка происходит ТОЛЬКО при выделении моба или нпс. Если так- то это НЕ ЗНАЧИТ что именно эта процедура- та которую нужно вызывать. Скорее всего она просто внутри цепочки вызовов. Дело в том, что одна процедура вызывает другую, та- третью итд. То есть, ты нашел то место в цепочке, где произошла запись. Теперь берешь в руки хороший и удобный дизасм (я юзаю IDA Pro), находишь в нем адрес этой операции и начинаешь копать вверх по цепочке: узнай, какая процедура вызвала эту процедуру. Потом, какая ту, итд. Всякий раз смотри на вызов- одна из найденных процедур вероятно (НО НЕ ФАКТ!) окажется до боли похожей на паттерн. Лично я долго орал в форум "помогите найти адрес" блаблабла- никто не горел желанием)) потом почитал немного и решил сам найти его- первый раз долго, муторно, пока технологию освоил. А потом как орешки щелкать))) Кстати, базу в IDA можно дополнять и дополнять- чем полнее, тем легче искать новые адреса, потому что многое довольно тесно взаимосвязано. Кстати именно таргет был первым адресом который я нашел, по моему)