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

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 21.04.2011, 09:39   #21
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Movzx eax,[eax+пакет.id]
оо?

Добавлено через 8 минут
Movzx eax, [eax] это будет точно ид =)
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 21.04.2011 в 09:39. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 24.04.2011, 19:27   #22
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Код:
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
никаму ничего странным тут не кажетса?)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.04.2011, 00:41   #23
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

хз...
Кстати
у нас же
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.
ALF вне форума   Ответить с цитированием
Старый 25.04.2011, 01:09   #24
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

я тебе давал же пример как работает у меня..
нада вызывать вперед оригинал, и еще раз учите ассемблер)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.04.2011, 02:19   #25
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

//какаято функция core возвращающая свободный индекс массива
?Add@FArray@@QAEHHH@Z
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.04.2011, 09:32   #26
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Ну ее название мне стало искать лень среди тонны экспортов коре. Достаточно что я понял ее смысл)
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 25.04.2011 в 11:14.
mira вне форума   Ответить с цитированием
Старый 25.04.2011, 10:41   #27
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

пусть фрост ставят на серв, хоть весело будет, а то сср ппц какой-то непродвинутый)

и не доказать ниче)
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.04.2011, 11:25   #28
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Да не в этом дело
где бы инфу взять по хроникам памагите!
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.04.2011, 13:05   #29
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Рабочий код. Я добился чего хотел)
Спасибо всем за помощь.
Код:
;=================================================================================
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
;=================================================================================
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
Старый 25.04.2011, 13:17   #30
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

И в чем был косяк?) вроде все тоже
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


Часовой пояс GMT +4, время: 19: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

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