я полагаю кнопку открытия инвентаря разрабы упразднили. всмысле не сам инвентарь - а движение пакетов. в С4 все было просто - кнопка инвентаря, и каждый раз приходил боооооооооооольшой пакет с описанием всего содержимого - айди по базе, айди по серверу, количество, какие-то условности типа заточки, и тому подобное. пакет довольно таки большой. в теории, если сто человек устроят флеш моб, открывая инвентарь на раз-два-три могут устроить кратковременный лаг
поэтому видимо содержимое инвентаря приходит при входе в мир, а после отслеживаются лишь его модификации - типа соска потратилась, адена прибавилась при поднятии дропа, и тому подобное. и уже сам клиент ведет бухгалтерию что пришло\ушло, а после уже по тыканию инвентаря - показывает внутреннюю бухгалтерию визуально. в интерлюде помница чтобы рефрешнуть инвентарь - то есть заставить сервер послать тебе полностью пакет инвентаря - надо было тыкнуть Таб по моему... причем еще раза два. видимо аналогичная фигня используется и в новых хрониках.
Всем спасибо, кто тут отвечает
Но вот проблема все это бесполезно против защиты, которая смотрит чек сумму файлов.
Но это еще решаемая проблема, пишем самый простой инжектор НО! при создание своего потока игра ждет секунды 3-4 и закрывается, при этом не посылается ни одного пакета.
Возможно защита сканирует все потоки и при появление нового закрывается
Мои предположения:
в файлах есть GG закриптованый WinLicense - думаю что это он
Мои предложения:
так как для создания ДиалогБокса нужен поток, можно приатачится к чужому, только вот не знаю какая Api функция может показать мне список активных потоков, кто знает напишите сюда
Кто сталкивался с этим?
Когда в процессе создается новый поток, система просматривает все DLL, спроецированные в данный момент на адресное пространство этого процесса, и в каждой из таких DLL вызывает DllMain со значением DLL_THREAD_ATTACH. Тем самым она уведомляет DLL-модули о необходимости инициализации, связанной с данным потоком. Только что созданный поток отвечает за выполнение кода в функциях DllMain всех
это про то как могут отслеживать создание потока, + в этот момент могут и хукать CreateThread и отслеживать адресс нового потока - и как то думать - все ок или чит
__________________
каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
Проблема 100% в том, что защита палит новый созданный поток, я это определил так:
1. Создал инжектор на основе глобального хука WH_KEYBOARD
2. Первый раз в процедуру обработки хука я написал вызов МеседжБокса
3. Спровоцировал вызов хук процедуры в игре, нажатим клавиши
4. Мне выдало месседжбокс и после нажатия кнопки ОК все работала успешно
Второй раз я написал в процедуру обработки хука вызов апи функции LoadLibraryA, которая загружала другую dll с ДиалогБоксом
Но на этот раз у меня окно с линейкой вылетало
;------------------------------------------------------------------------
нашел код на дельфи, который считывает потоки процесса, кто может его разобрать и сказать схему разбора 9 в дельфи не силен ;(
St1mul, как ты собрался аттачится к уже существующему потоку? Ты получил список потоков - ты собираешься как то переключить поток и заставить использовать его свой код? (впервые слышу о такой идеи, хотя возможность и не исключена)
Я бы предположил такой вариант обхода - найти длл которая отслеживает потоки и отключить для нее уведомления (что то типа DisableThreadLibraryCalls) и проверить нету ли хуков на CreateThread и его производные и если есть то снять их
__________________
каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
служба поддержки 4gay - ICQ 642274822
Последний раз редактировалось Morfik, 03.02.2013 в 18:16.
Суть такая: Устанавливаешь хук например на клавиатуру( как в примере ), и если пользователь нажал клавишу, например Enter, то к программе будет приатаченна длл с твоей процедурой обработки. Она будет автоматически отатачена когда процедура обработки закончится. В процедуру обработки вписываешь LoadLibrary и вот он успех: длл будет приатачена к приложению
FASM (.exe)
Код:
format pe gui 4.0
entry start
include 'win32a.inc'
section '.data' data readable writeable
Dll_Name db 'Hook.dll',0
msg db 'good',0
section '.code' code readable executable
start:
invoke GetModuleHandleA,Dll_Name
invoke SetWindowsHookExA,WH_KEYBOARD,Hooking,eax,0
invoke MessageBoxA,0,msg,msg,MB_OK
invoke ExitProcess,0
Fasm (.dll)
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
section '.data' data readable writeable
msg db 'Hook Works!',0
msg1 db 'Nice',0
section '.code' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
invoke DisableThreadLibraryCalls,[hinstDLL]
invoke MessageBox,0,msg,msg1,MB_OK
mov eax,1
ret
endp
proc Hooking
ret
endp
В атаче добавил скомпилинные исходники
Как использовать
1 Запустить 1.exe
2 Нажать 1 раз Ок
3 В любом приложении нажать кнопку клавиатуры.
4 Посмотреть через PETool что к этому приложению будет приатачена Hook.dll
5 Нажать остальные кнопки Ок
P.S. Щас попробую присвоить создаваемый поток engine.dll с помощью GetModuleHandleA
Отключить уведомления к сожалению не вариант, т к в этой dll еще и шифрация вроде бы
Вопрос: а как проверить есть ли хуки на CreateThread
Последний раз редактировалось St1mul, 03.02.2013 в 18:40.
St1mul, как ты собрался аттачится к уже существующему потоку? Ты получил список потоков - ты собираешься как то переключить поток и заставить использовать его свой код? (впервые слышу о такой идеи, хотя возможность и не исключена)
Как раз таки таким способом и обходил большинство фришных защит, когда последний раз занимался ла2. Заставить чужой поток выполнять свой код вполне возможно, исходники к сожалению навряд ли найду сейчас.
Если память не изменяет, то можно воплотить это с помощью SetThreadContext и изменение EIP (instruction pointer) регистра потока.
Последний раз редактировалось Demion, 03.02.2013 в 22:25.
Demion, Пожалуйста чуть чуть поподробней напиши, я попытался сделать так
1. Длл с хук процедурой загружается
2. Получаем хэндл engine.dll (GetModuleHandleA)
3. Создаем поток с параметром из пункта 2 (CreateThread )
4. Длл с хук процедурой выгружается
и приложение критует( и так любое приложение критует