Программинг Форум для тем связанных с программированием
21.04.2011, 09:39
#21
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Movzx eax,[eax+пакет.id]
оо?
Добавлено через 8 минут
Movzx eax, [eax] это будет точно ид =)
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 21.04.2011 в 09:39 .
Причина: Добавлено сообщение
24.04.2011, 19:27
#22
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Код:
AddMetworkQueue(p : pNetworkPacket)
203C6090: 55 push ebp
203C6091: 8BEC mov ebp, esp
203C6093: 6AFF push FFFFFFFFh //какието константы (переменные)
203C6095: 68ACF84120push 2041F8ACh //какието константы (переменные)
//тут ставитса обработчик исключения типа try-except
203C609A: 64A100000000mov eax, fs:[00h]
203C60A0: 50 push eax
203C60A1: 64892500000000mov fs:[00000000h], esp
203C60A8: 83EC0C sub esp, 0000000Ch
203C60AB: 53 push ebx
203C60AC: 56 push esi
203C60AD: 57 push edi
203C60AE: 8965F0 mov [ebp-10h], esp
203C60B1: 8BF9 mov edi, ecx
203C60B3: C745FC00000000mov [ebp-04h], 00000000h
203C60BA: 8DB76C010000lea esi, [edi+0000016Ch]
//entercriticalsection
203C60C0: 56 push esi
203C60C1: 90 nop
203C60C2: E839AF535C call 7C901000h (ntdll.dll rtlentercriticalsection)
//какаято функция core возвращающая свободный индекс массива
203C60C7: 83C73C add edi, 0000003Ch
203C60CA: 6A04 push 00000004h
203C60CC: 6A01 push 00000001h
203C60CE: 8BCF mov ecx, edi
203C60D0: 90 nop
203C60D1: E84AB4C3F4call 15001520h
//ложим в массив пакет
203C60D6: 8BD8 mov ebx, eax
203C60D8: 8B07 mov eax, [edi]
203C60DA: 8B4D08 mov ecx, [ebp+08h]
203C60DD: 890C98 mov [eax+ebx*4], ecx
//LeaveCriticalSection
203C60E0: 56 push esi
203C60E1: E8FAAF535Ccall 7C9010E0h (ntdll.dll rtlLeaveCriticalSection)
203C60E6: 90 nop
//восстанавливаем обработчик исключений и спасаем регистры
203C60E7: 8BC3 mov eax, ebx
203C60E9: 8B4DF4 mov ecx, [ebp-0Ch]
203C60EC: 64890D00000000mov fs:[00000000h], ecx
203C60F3: 5F pop edi
203C60F4: 5E pop esi
203C60F5: 5B pop ebx
203C60F6: 8BE5 mov esp, ebp
203C60F8: 5D pop ebp
203C60F9: C20400 retn 0004h
никаму ничего странным тут не кажетса?)
__________________
читернуть бы ништяг
25.04.2011, 00:41
#23
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
хз...
Кстати
у нас же
DispatchNetworkQueue(struct NetworkPacket * *)
Звёздочка обозначает операцию взятия адреса. Т.к. звёздочки две, то в функцию передаётся указатель на указатель на структуру.
вызываю PaketDump вот так
stdcall PaketDump,[ebp+08h]
Код:
proc PaketDump uses ebx, ppnp:DWORD
mov ebx, [ppnp] ; NetworkPacket **
mov ebx, [eax] ; NetworkPacket *
movzx eax, [ebx+NetrowkPacket.id]
...
endp
Но в итоге у меня рисуется все равно адрес... Пробовал не только сплайсингом хукать.... Но и подменой адреса (ну то есть сначало вызывается моя, потом я вызываю оригинал)
Пробовал перед
movzx eax, [ebx+NetrowkPacket.id]
дописать
mov ebx, [ebx]
В итоге клиент критует...
__________________
Все относительно...
Последний раз редактировалось ALF, 25.04.2011 в 00:45 .
25.04.2011, 01:09
#24
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
я тебе давал же пример как работает у меня..
нада вызывать вперед оригинал, и еще раз учите ассемблер)
__________________
читернуть бы ништяг
25.04.2011, 02:19
#25
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
//какаято функция core возвращающая свободный индекс массива
?Add@FArray@@QAEHHH@Z
__________________
Н а ч а л о .
25.04.2011, 09:32
#26
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Ну ее название мне стало искать лень среди тонны экспортов коре. Достаточно что я понял ее смысл)
__________________
читернуть бы ништяг
Последний раз редактировалось mira, 25.04.2011 в 11:14 .
25.04.2011, 10:41
#27
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
пусть фрост ставят на серв, хоть весело будет, а то сср ппц какой-то непродвинутый)
и не доказать ниче)
__________________
Н а ч а л о .
25.04.2011, 11:25
#28
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
Да не в этом дело
где бы инфу взять по хроникам памагите!
__________________
читернуть бы ништяг
25.04.2011, 13:05
#29
Пользователь
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
Рабочий код. Я добился чего хотел)
Спасибо всем за помощь.
Код:
;=================================================================================
proc DispatchNetworkQueueHook
pop eax ; Выталкиваем со стека Адрес Возврата в EAX (4 байта)
push ebp ; Толкаем в стек Адрес , которого начинаются аргументы (глубина стека)
mov ebp, esp ; в ebp теперь "Вершина" стека. Туда будут идти аргументы
pushad
mov edx, [ebp+8]
.if edx > 0
stdcall PaketDump,[ebp+08h]
.endif
popad
push 0ffffffffh
push eax ; востанавливаем адрес возврата
ret
endp
;=================================================================================
proc PaketDump uses ebx, ppnp:DWORD
mov eax, [ppnp] ; NetworkPacket **
mov ebx, [eax] ; NetworkPacket *
.if ebx > 0
movzx eax, [ebx+NetworkPacket.id]
stdcall IntToStr,eax,10,MAXHPBuff
.endif
ret
endp
;=================================================================================
__________________
Все относительно...
25.04.2011, 13:17
#30
Местный
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
И в чем был косяк?) вроде все тоже
__________________
читернуть бы ништяг
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 23:56 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!