PDA

Просмотр полной версии : dsetup


huntsmenhell
18.11.2012, 12:33
Добрый утро всем! Есть ли у кого исходный код dsetup.dll (Interlude) ?

Demion
18.11.2012, 20:14
А для чего вам исходники? Обычно чтобы внедрить какой-то код в ла2 заменяют dsetup на фейк. dsetup должна экспортировать такую функцию и возвращать ноль -
int DirectXSetupGetVersion(void)
{
return 0;
}
и вот так вот экспортировать на С++ например (dsetup.def) -
LIBRARY "dsetup"

EXPORTS

DirectXSetupGetVersion @11

huntsmenhell
18.11.2012, 21:23
Все так и есть, ошибка такова:
l2.exe - Ошибка приложение (заголовок)
Ошибка при инициализации приложения (0xc0000005). Для выхода из приложения нажмите кномпку "ОК". (Нажимаешь ОК, и еще одно такое же окно вылитает).

huntsmenhell
20.11.2012, 18:54
В чем проблема может быть? Код:
bool SetHooks(void)
{
FARPROC addr;
HMODULE hEngine = LoadLibraryA("engine.dll"), hNtDlll = LoadLibraryA("ntdll.dll");
MODULEINFO modinfo;

GetModuleInformation(GetCurrentProcess(), hEngine, &modinfo, sizeof(MODULEINFO));

hEngineStart = (unsigned int) hEngine;
hEngineEnd = hEngineStart + modinfo.SizeOfImage - 1;

GetModuleInformation(GetCurrentProcess(), hNtDlll, &modinfo, sizeof(MODULEINFO));

hNtDllStart = (unsigned int) hNtDlll;
hNtDllEnd = hNtDllStart + modinfo.SizeOfImage - 1;

if ((KiUserExceptDispADR = (unsigned int) GetProcAddress(LoadLibraryA("ntdll.dll"), "KiUserExceptionDispatcher")) == 0)
return false;

if (*(unsigned char*) (KiUserExceptDispADR) == 0xFC)
KiUserExceptDispADR++;

if ((addr = GetProcAddress(LoadLibraryA("ws2_32.dll"), "connect")) == 0)
return false;

true_connect = (_connect) splice((unsigned char*) addr, new_connect);

if ((addr = GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPa cket@@@Z")) == 0)
return false;

true_AddNetworkQueue = (_AddNetworkQueue) splice((unsigned char*) addr, new_AddNetworkQueue);

if ((addr = (FARPROC) GetSendPacketAddress()) == 0)
return false;

true_SendPacket = (_SendPacket) splice((unsigned char*) addr, new_SendPacket);

if ((addr = GetProcAddress(hEngine, "?MasterProcessPreRender@UInteractionMaster@@QAEXPA VUCanvas@@@Z")) == 0)
return false;

true_MasterProcessPreRender = (_MasterProcessPreRender) splice((unsigned char*) addr, new_MasterProcessPreRender);

if ((addr = GetProcAddress(hEngine, "?DrawTextTTFToCanvas@UCanvas@@QAEHHHPB_WPBVFontDra wInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z")) == 0)
return false;

true_DrawTextTTFToCanvas = (_DrawTextTTFToCanvas) addr;

if ((addr = GetProcAddress(hEngine, "?Render@FPlayerSceneNode@@UAEXPAVFRenderInterface@ @@Z")) == 0)
return false;

true_Render = (_Render) splice((unsigned char*) addr, new_Render);

TitleReplaceHook();
return true;
}

Demion
21.11.2012, 02:48
А откуда код? Один в один "похожи" на мои исходники :D

don.kein
02.12.2012, 21:44
Это код одной клиент серверной защиты, чтоб заработало под Interlude надо найти виртуальный адрес sendpacket, а как его искать никто не говорит, даже за деньги)