Library Enum;
Uses Windows;
TYPE
TDllGetClassObject = Function(P1,P2,P3:Pointer):HRESULT; stdcall;
const
csFileName = 'enum_old.dll';
Function DllCanUnloadNow:HRESULT; stdcall;
Begin
Result:= S_FALSE;
End;
Function DllGetClassObject(P1,P2,P3:Pointer):HRESULT; stdcall;
Var
Handle : THandle ;
_DllGetClassObject : TDllGetClassObject ;
Begin
Result:= E_NOINTERFACE;
Handle:= LoadLibrary( csFileName );
If ( Handle <> 0 ) Then
Begin
_DllGetClassObject:= GetProcAddress( Handle, 'DllGetClassObject' );
If ( ASSIGNED( _DllGetClassObject ) ) Then
Result:= _DllGetClassObject( P1, P2, P3 );
// Не стоит беспокоится о повисшем Handle. End;
End;
Function DllRegisterServer:HRESULT; stdcall;
Begin
Result:= S_OK;
End;
Function DllUnregisterServer:HRESULT; stdcall;
Begin
Result:= S_OK;
End;
Exports
DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServer;
Begin
End;
Здравствуйте, x3r0n, Вы писали:
X>Здравствуйте, dkotov, Вы писали:
D>>Вот тебе мой дельный совет. D>>Для начала, напиши обыкновенную прокси dll. D>>В своей dll перенаправляй вызовы в оригинальную dll, D>>после чего, после того как заработает, делай всё остальное...
X>Вы имеете ввиду, создать длл перенаправляющую все вызовы через себя к другой _моей_ длл? X>Это я сделал... Только не получается _правельно_ вызвать функции из Enum.dll, т.к. я не знаю параметров...
Гы, гы. Вот вам параметры. Что будет, что будет...
// DLL main это то что между begin end. в library модуле. лучше не перенаправляйте вообсче :)function DllMain(hinstDLL : THandle; dwReason : Cardinal; lpvReserved : Pointer) : Bool; stdcall;
function DllGetClassObject (const CLSID, IID: TGUID; var Obj): HResult; stdcall;
function DllCanUnloadNow: HResult; stdcall;
function DllRegisterServer: HResult; stdcall;
function DllUnregisterServer: HResult; stdcall;
Здравствуйте, dkotov, Вы писали:
D>Пенальти в догонку...
Попробовал этот вариант, переименовал оригинал в enum_old.dll, заменил...
Несработало... Вызовы из Enum.dll как будто игнорируются
Заменил еще DefaultKSP.dll сильно глюкнуло месаджбокс вылез,
но начал возникать кривой 'контроль компонентов' кипера...
Здравствуйте, dkotov, Вы писали:
D>Это не готовое решение, это всего лишь вариант... D>Я вполне где-то мог допустить МАЛЕНЬКУЮ ошибку...
Вродебы ошибка не в реализации... Проверил с DefaultKSP.dll:
_DllHandle:= LoadLibrary( csDllFileName );
If ( _DllHandle <> 0 ) Then
Begin
MessageBox(0,'','',0);
Месадж бокс не вылез, если его поставить выше тогда он вылезет...
Т.е. длл ка не подгружается...
Проверил с Enum.dll, наставил мессаджбоксы везде, негде не вылез
Если удалить Enum.dll, то контроль компонентов(если это можно так назвать) не возникает,
интрфейс связанный с Енум авторизацией пропадает... Т.е. длл подгружается при запуске кипера...
dkotov, выйдите пожайлуста на связь, помогите плиз, если хотите заплачу 5 wmz это единственное, что у меня есть в сети...
Хотя нет, еще есть номерок аси 406504 могу дасть и его...
Здравствуйте, x3r0n, Вы писали:
X>Здравствуйте, dkotov, Вы писали:
D>>Пенальти в догонку...
X>Попробовал этот вариант, переименовал оригинал в enum_old.dll, заменил... X>Несработало... Вызовы из Enum.dll как будто игнорируются X>Заменил еще DefaultKSP.dll сильно глюкнуло месаджбокс вылез, X>но начал возникать кривой 'контроль компонентов' кипера...
Меня это не удивляет). Зная, насколько кипер врезается в систему, меня не удивит проверка dll-ки например на хэш код или что-то такое. Поэтому думаю что заменить длл "физически" — идея не до конца удачная. А для реализации задачи лучше искать другие пути
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
Здравствуйте, Niemand, Вы писали:
N>Меня это не удивляет). Зная, насколько кипер врезается в систему, меня не удивит проверка dll-ки например на хэш код или что-то такое. Поэтому думаю что заменить длл "физически" — идея не до конца удачная. А для реализации задачи лучше искать другие пути
Нет, идея как-раз и удачная, кипер не проверяет хэшсумму Enum.dll, если ее удалить, то это можно увидеть... Длл вызывается при запуске кипера...
Поэтому я и выбрал _именно_ эту длл...
Здравствуйте, dkotov, Вы писали:
D>Рассказывайте что получается в сумме...
Тестировал разными способами, вызовы из Enum.dll как будто бы не осуществляются(т.е. причина не в самой реализации а в чем-то другом), хотя при удалении этой длл интрфейс связанный с Енум авторизацией исчезает(в принципе понятно по названию длл за что она отвечает ...
Пробовал разные варианты, заменял все дллки если заменить DefaultKSP.dll, и потом удалить Enum.dll, код в нашей длл выполниться, но кипер вылетит с ошибкой что некоторые компоненты изменились... Изза этого вариант замены DefaultKSP.dll отпадает... Возможно при запуске кипреа подгружаются еще какие то его длл, WMClient.dll не берем т.к. это основная часть программы, в ней хранятся все ресурсы, весь интерфейс и т.д. и подделать все вызовы будет крайне трудно, еще скорее всего кипер следит за ее изменением как и за DefaultKSP.dll...Сейчас попробую с помощью FileMon'a узнать что он еще подгружает...
Пытался методом научного тыка заменять примерами из этой статьи http://www.wasm.ru/article.php?article=comkit2 пока безрезультатно...
Я посмотрел enum.dll, вообщем мой Вам совет — бросьте эту затею,
библиотека имеет цифровую подпись, ресурсы (скорее всего криптованные)...
На воссоздание прототипа, хотя-бы банального прокси, может уйти большое количество времени.
Здравствуйте, dkotov, Вы писали:
D>Я посмотрел enum.dll, вообщем мой Вам совет — бросьте эту затею, D>библиотека имеет цифровую подпись, ресурсы (скорее всего криптованные)... D>На воссоздание прототипа, хотя-бы банального прокси, может уйти большое количество времени.
Ресурсы там незакриптованы в кипере вообще вроде бы ничего незакриптовано
цифровая подпись там как защита от подмены и не более...
Сталкивался с этим до этого... Например в WMClient.dll почти весь интерфейс хранится в ресурсах...
Они легко меняются любым редактором ресурсов... Подпись остается валидной... Я даже фичу нашел:
Коммисия в кипере вычисляется после изменения поля сумма и ввода кошелька...
Если редактором ресурсов вписать в эдит свой кошелек то можно переводить деньги без коммисии
Хз профиксили это ща или нет... В третей версии пахало...
Я уже бросил эту затею
Реализовал все по другому... Намного проще и даже лучше...
Нашел интересную весчь Если интересно, расскажу... Моя ася ->30 46 03
Здравствуйте, x3r0n, Вы писали:
X>Здравствуйте, wellwell, Вы писали:
W>>Хитрый какой. А параметры? А соглашения о вызовах? Предвидя вопрос а как их узнать, ответ — использовать дизассемблер (типа IDA).
X>Пробовал, в асме я нуб... Быть может Вы мне поможете? Взамен дам Вам 5 wmz(все что есть)...
И пожеваную жвачку...
А если серьезно, то не зная минимально необходимых COM объектов, которые программе нужны, сделать что-то очень проблематично... Ведь программа ожидает, что по ее запросу объекты будут созданы, а у тебя тут пустые заглушки...