Вернуться   CoderX :: Forums > Основные форумы > Полезности
Войти через OpenID

Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 28.01.2010, 09:32   #51
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Maxno, список экспортируемых функций у дампа и у оригинальной длл одинаковый
UNetworkHandler::AddNetworkQueue - название функции как оно выглядит до компиляции внутри исходников
?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPa cket@@@Z - название функции как оно выглядит в экспорте длл, открываешь длл любым РЕ вьювером и смотришь экспорт...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 29.01.2010, 12:30   #52
Новичок
 
Регистрация: 29.01.2010
Сообщений: 7
Сказал Спасибо: 1
Имеет 3 спасибок в 2 сообщенях
ra1n0 пока неопределено
По умолчанию

чтобы перевести ?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPa cket@@@Z в более читабельный вид(прим. UNetworkHandler::AddNetworkQueue) ,можно воспользоваться undname.exe
поставляемой в комплексе с VS.
ra1n0 вне форума   Ответить с цитированием
За это сообщение ra1n0 нажился спасибкой от:
Старый 05.02.2010, 19:46   #53
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 50
Сказал Спасибо: 10
Имеет 10 спасибок в 1 сообщении
murc пока неопределено
По умолчанию

Продолжая тему про AddNetworkQueue, хочу поделится своими наработками, может кому-нибуть будут полезными ...

Что бы добавить свой пакет в массив, нужно выделить память, но просто выделить мало, нужно выделить где-то внутри ла2. Для выделения памяти я юзал ф-ию "L2MemoryAlloc", ее можно легко найти, она находится рядом с AddNetworkQueue. Выглядит она следующим образом:
Код:
L2MemoryAlloc(cmd: PWideChar; Len: integer): Pointer;
В качестве параметров используются строки "NetCmd", "NetPacket" и размер. Строки указывают для чего резервируется память и выделяется в соответствующем месте. Вообще выделение памяти здесь звучит довольно не корректно, т.к выделения памяти по сути происходит не всегда и зависит от аргументов. Стоит еще отметить то, что вызывать нужно поразному для конкретного аргумента(cmd), не знаю с чем это связано, но при вызове ф-ии в регистрах должно быть то, что должно быть, иначе будет ошибка. Для выделения памяти под сам пакет и под структуру NetworkPacket, которую в дальнейшем мы будем добавлять, я юзал такие ф-ии:
Код:
function L2MemoryAllocNetCmd(len: integer): Pointer; stdcall;
asm
  push NetCmd
  push len
  mov edx, [$01E6D6A4]
  mov ecx, [edx]
  mov edx, [ecx]
  mov eax, [edx]
  call eax
end;

function L2MemoryAllocNetPacket: Pointer; stdcall;
asm
  push NetPacket
  push $0C
  mov edx, [$01E6D6A4]
  mov ecx, [edx]
  mov eax, [ecx]
  mov edx, [eax]
  call edx
end;
Вообще это копипаст из клиента и адресс 01E6D6A4 будет действителен только для конкретных хроник - ИТ, найти в другом клиенте не должно вызвать проблем.
В первом случае мы выделяем память, куда положим свой пакет без его длинны, ID и если есть то и SubID. Во втором под структуру NetworkPacket. Заполняем и вызываем примерно таким образом:
Код:
procedure AddNetworkQueue(NetworkPacket: PNetworkPacket); stdcall;
asm
  mov ecx, [$00BFF558] - UNetworkHandler
  mov edx, [ecx]
  mov eax, [edx+$84]
  push NetworkPacket
  call eax
end;
Проверялось на Интерлюдии, должно работать везде впринципе. Самое главное выделить память без ошибок.

Последний раз редактировалось murc, 20.02.2010 в 13:49.
murc вне форума   Ответить с цитированием
За это сообщение murc нажился 10 спасибками от:
Старый 05.02.2010, 22:22   #54
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

murc, думаю клиенту при вызве этих функций важно лишь содержимое ecx, ибо по соглашению thiscall там должен быть указатель на объект которому принадлежит метод, а остальные регистры по идее не обязаны содержать то что содержат)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 10.05.2010, 15:03   #55
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Товарищи, вы получив какие то данные из процесса l2 оперируете ими прямо в рамках внедренной dll или какимто макаром шлете основной программе (через sendmessage или по сети)? Ведь на внедряемый код наложено очень много ограничений. Вот цитата из статье с WASMа:

"Компилятор Delphi обычно генерирует в процедурах короткие переходы (JMP SHORT), но при большом размере процедуры могут появиться переходы по абсолютным адресам, поэтому внедряемый код желательно писать используя короткие процедуры, используя как можно меньше условий и циклов."

Как можно быть уверенным что что все переходы делфи сделала "короткими".
Так же как отлаживать внедренную dll? Как хотябы ее выгрузить из памяти процесса что бы я ее мог перекомпилировать и внедритль наново?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 10.05.2010, 15:09   #56
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 60
Сказал Спасибо: 3
Имеет 107 спасибок в 21 сообщенях
GoldFinch пока неопределено
По умолчанию

Yegor, эта цитата относится только к тем длл которые были внедрены в чужой процесс своим кривым загрузчиком. Если загружать длл через LoadLibrary или нормальным загрузчиком таких проблем нет.
Отлаживать - так же как и клиент =)
Чтобы выгрузить - пиши код который выгрузит %)
GoldFinch вне форума   Ответить с цитированием
За это сообщение GoldFinch нажился спасибкой от:
Старый 10.05.2010, 17:21   #57
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от GoldFinch Посмотреть сообщение
Если загружать длл через LoadLibrary или нормальным загрузчиком таких проблем нет.
кстати, не встречал нормального PE загрузчика в исходниках или хотяб в obj файле чтоб в свою прогу можно было норм внедрить? я чтот не смог найти чтоб работало и на XP и на висте с 7кой(
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 10.05.2010, 21:29   #58
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 60
Сказал Спасибо: 3
Имеет 107 спасибок в 21 сообщенях
GoldFinch пока неопределено
По умолчанию

xkor, на wasm.ru/forum периодически проскакивает, вот этот например (выглядит правда страшно)
http://wasm.ru/forum/viewtopic.php?id=36993

А чем LoadLibrary плоха? Особенно если инжектить длл при создании процесса.

Вообще если дллка простенькая, без наворотов, (без TLS, импортов, file align = 0x1000) то ей надо только релоки настроить, а это несложно.
GoldFinch вне форума   Ответить с цитированием
За это сообщение GoldFinch нажился спасибкой от:
Старый 10.05.2010, 23:19   #59
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от GoldFinch Посмотреть сообщение
А чем LoadLibrary плоха? Особенно если инжектить длл при создании процесса.
да мне не для инжектов а для кое каких других извращений)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 11.05.2010, 10:07   #60
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

GoldFinch, непойму все таки как отлаживать мою dll. Сейчас пишу тв Delphi. Точнее как запустить отладку нашгел, но каждый раз после перекомпиляции dll получается прийдется перезагружать l2?
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Полезности



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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!