|
Вопрос - Общение разработчиков - Программирование для Point Blank, общение и обсуждение разработок |
10.02.2012, 11:36
|
#16
|
|
|
|
Разведчик
|
Регистрация: 27.01.2012
Сообщений: 24
Популярность: 483
Сказал(а) спасибо: 57
Поблагодарили 23 раз(а) в 17 сообщениях
|
Re: Вопрос
Dimedrol1536(2), можешь пояснить\обьяснить вот эту часть кода
Код:
HRESULT _declspec(naked)WINAPI myPresentMidhook(LPDIRECT3DDEVICE9 pDevice)
{
_asm pushad;
_asm mov eax, esi;
_asm mov pDevice, eax;
Set_myPrsent(pDevice);
_asm popad;
_asm jmp pChurch;
}
Каким образом это работает?
|
|
|
10.02.2012, 12:25
|
#17
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Вопрос
Могу сказать одно, хук рабочий, а вот дельше хука дело не идёт.
Вот смотри, в начале каждой функции прописуй
MessageBox(NULL,"Название функции",0,MB_ICONSTOP); и ты узнаеш где сработало, а где нет, т.е. своеобразная проверка.
Добавлено через 10 минут
У тебя стоит выход на Ф12, но в игре не работает. Значит что-то в
pChurch = (oChurch)nEngine.DetourCreatePre(VTable[17]+7,(DWORD)myPresentMidhook,5);
pReset = (oReset)nEngine.DetourCreatePre(VTable[16],(DWORD)myReset,5);
Код:
DWORD Core_Engine::FindDevObjectProtoTable(DWORD Len)
{
DWORD dwObjBase = 0;
dwObjBase = (DWORD)LoadLibraryA("D3D9.DLL");
while (dwObjBase++ < dwObjBase + Len)
{
if ( (*(WORD*)(dwObjBase + 0x00)) == 0x06C7
&& (*(WORD*)(dwObjBase + 0x06)) == 0x8689
&& (*(WORD*)(dwObjBase + 0x0C)) == 0x8689
) { dwObjBase += 2; break; }
}
return( dwObjBase );
}
int Start_Menu_Engine(VOID)
{
MessageBox(NULL,"Start_Menu_Engine!",0,MB_OK);
PDWORD VTable;
*(DWORD*)&VTable = *(DWORD*)nEngine.FindDevObjectProtoTable(0x128000);
if(VTable == NULL)
{
MessageBox(NULL,"D3DDevice Pointer Not Found!",0,MB_ICONSTOP);
ExitProcess(0);
}
//*(DWORD*)&dwDevProto = *(DWORD*)nEngine.FindDevObjectProtoTable();
MessageBox(NULL,"HOOK!",0,MB_OK);
pChurch = (oChurch)nEngine.DetourCreatePre(VTable[17]+7,(DWORD)myPresentMidhook,5);
pReset = (oReset)nEngine.DetourCreatePre(VTable[16],(DWORD)myReset,5);
return 0;
}
Последний раз редактировалось Dimedrol1536; 10.02.2012 в 12:35.
Причина: Добавлено сообщение
|
|
|
10.02.2012, 15:03
|
#18
|
|
|
|
Разведчик
|
Регистрация: 27.01.2012
Сообщений: 24
Популярность: 483
Сказал(а) спасибо: 57
Поблагодарили 23 раз(а) в 17 сообщениях
|
Re: Вопрос
Все сообщения всплывют, но с меню все равно глухо.
Код:
pChurch = (oChurch)nEngine.DetourCreatePre(VTable[17]+7,(DWORD)myPresentMidhook,5);
pReset = (oReset)nEngine.DetourCreatePre(VTable[16],(DWORD)myReset,5);
Что дают эти цифры?
При замене [17]+7 на [42], происходит краш ссылающийся на d3d9_41.dll...
|
|
|
10.02.2012, 17:24
|
#19
|
|
|
|
Сержант
|
Регистрация: 21.06.2011
Сообщений: 137
Популярность: 4869
Сказал(а) спасибо: 154
Поблагодарили 301 раз(а) в 124 сообщениях
|
Re: Вопрос
Я тоже смотрел этот исход.Может с хуком беда,я думаю..там капаться пробывал?
________________
Всё с чистого листа
|
|
|
10.02.2012, 18:05
|
#20
|
|
|
|
Разведчик
|
Регистрация: 27.01.2012
Сообщений: 24
Популярность: 483
Сказал(а) спасибо: 57
Поблагодарили 23 раз(а) в 17 сообщениях
|
Re: Вопрос
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536(2) |
|
|
|
|
|
|
|
У тебя стоит выход на Ф12, но в игре не работает. Значит что-то в
|
Цитата: |
|
|
|
|
|
|
|
|
pChurch = (oChurch)nEngine.DetourCreatePre(VTable[17]+7,(DWORD)myPresentMidhook,5);
pReset = (oReset)nEngine.DetourCreatePre(VTable[16],(DWORD)myReset,5); |
|
|
|
|
|
|
|
|
|
|
|
я так думаю проблемма в этой части кода
pChurch = (oChurch) nEngine.DetourCreatePre(VTable[17]+7,(DWORD)myPresentMidhook,5);
pReset = (oReset) nEngine.DetourCreatePre(VTable[16],(DWORD)myReset,5);
который "ссылается" на этот код
|
Цитата: |
|
|
|
|
|
|
|
|
DWORD Core_Engine:etourCreatePre(DWORD SrcVA,DWORD DstVA,DWORD Size)
{
DWORD DetourVA, dwProtect, i;
#define SIZEOF_JMP_REL 5
if ( SrcVA && DstVA && Size >= SIZEOF_JMP_REL )
{
DetourVA = (DWORD) VirtualAlloc(
NULL, Size + SIZEOF_JMP_REL,
MEM_COMMIT, PAGE_EXECUTE_READWRITE );
if ( DetourVA && VirtualProtect( (VOID*)SrcVA, Size, PAGE_EXECUTE_READWRITE, &dwProtect ) )
{
for ( i=0; i < Size; i++ ) {
*(BYTE*)( DetourVA + i ) = *(BYTE*)( SrcVA + i );
}
*(BYTE*)( DetourVA + Size + 0 ) = 0xE9;
*(DWORD*)( DetourVA + Size + 1 ) = ( SrcVA - DetourVA - SIZEOF_JMP_REL );
*(BYTE*)( SrcVA + 0 ) = 0xE9;
*(DWORD*)( SrcVA + 1 ) = ( DstVA - SrcVA - SIZEOF_JMP_REL );
VirtualProtect( (VOID*)SrcVA, Size, dwProtect, &dwProtect );
VirtualProtect( (VOID*)DetourVA, Size +
SIZEOF_JMP_REL, PAGE_EXECUTE_READ, &dwProtect );
return DetourVA;
}
}
return (0);
} |
|
|
|
|
|
Может в нем проблемма...
|
Цитата: |
|
|
|
|
|
|
|
|
|
.там капаться пробывал?
|
|
|
|
|
|
Как раз там и копаюсь...
|
|
|
10.02.2012, 18:21
|
#21
|
|
|
|
Разведчик
|
Регистрация: 12.01.2012
Сообщений: 33
Популярность: 2330
Сказал(а) спасибо: 223
Поблагодарили 63 раз(а) в 46 сообщениях
|
Re: Вопрос
может проблема в боксах
|
|
|
10.02.2012, 18:42
|
#22
|
|
|
|
Разведчик
|
Регистрация: 27.01.2012
Сообщений: 24
Популярность: 483
Сказал(а) спасибо: 57
Поблагодарили 23 раз(а) в 17 сообщениях
|
Re: Вопрос
|
Цитата: |
|
|
|
|
|
|
|
|
|
может проблема в боксах
|
|
|
|
|
|
А что с ними может быть?Только трабл прорисовкой под текстурами игры.
В исходе прописана клавиша выхода(F12), в игре она не действует.Если бы была проблемма с боксом выход бы работал.
ЗЫ:Или я туплю и незнаю что такое бокс?Это же просто "картинка" на заднем плане.
|
|
|
10.02.2012, 20:14
|
#23
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Вопрос
|
|
|
10.02.2012, 20:18
|
#24
|
|
|
|
Разведчик
|
Регистрация: 27.01.2012
Сообщений: 24
Популярность: 483
Сказал(а) спасибо: 57
Поблагодарили 23 раз(а) в 17 сообщениях
|
Re: Вопрос
|
|
|
11.02.2012, 08:16
|
#25
|
|
|
|
Разведчик
|
Регистрация: 12.01.2012
Сообщений: 33
Популярность: 2330
Сказал(а) спасибо: 223
Поблагодарили 63 раз(а) в 46 сообщениях
|
Re: Вопрос
Не тут не боксы,тут часть хука наверное,одну уже проверил,сейчас дальше буду рповерять как димка сказал и пойму где косяк.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Игра] Вопрос на вопрос
|
AEBus |
Треп |
351 |
29.03.2015 23:20 |
[Подсказка] Вопрос
|
TruePoc |
Вопросы и ответы, обсуждения |
25 |
05.08.2011 22:52 |
[Помогите!] Эпичный вопрос
|
temka601997 |
Общение и обсуждение |
7 |
21.07.2011 21:36 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 14:21.
|
|