•Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 15:07
Оценка:
Привет всем!
В WebMoney Keeper в папке KSP есть файл Enum.dll...
Хочу сделать чтоб при заменене этой длл моей, она работала...
Открыл Enum.dll в хекс редакторе, нашел имена экспортируемых функций, сделал свою длл с такими именами, неработает
Помогите разобраться в чем дело...
Re: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 15:10
Оценка:
Вот код который я использовал...

library Enum;

uses
  windows;

Procedure DllCanUnloadNow;
begin
 MessageBoxA(0,'DllCanUnloadNow' , 'Enum', 0);
end;

Procedure DllGetClassObject;
begin
 MessageBoxA(0,'DllGetClassObject' , 'Enum', 0);
end;

Procedure DllMain;
begin
 MessageBoxA(0,'DllMain' , 'Enum', 0);
end;

Procedure DllRegisterServer;
begin
 MessageBoxA(0,'DllRegisterServer' , 'Enum', 0);
end;

Procedure DllUnregisterServer;
begin
 MessageBoxA(0,'DllUnregisterServer' , 'Enum', 0);
end;

exports
  DllCanUnloadNow name 'DllCanUnloadNow';
exports
  DllGetClassObject name 'DllGetClassObject';
exports
  DllMain name 'DllMain';
exports
  DllRegisterServer name 'DllRegisterServer';
exports
  DllUnregisterServer name 'DllUnregisterServer';
end.
Re: •Замена чужой длл своей•
От: wellwell Австралия https://www.softperfect.com
Дата: 31.01.07 15:11
Оценка:
"x3r0n" <63143@users.rsdn.ru> wrote in message news:2328492@news.rsdn.ru...
> Открыл Enum.dll в хекс редакторе, нашел имена экспортируемых функций, сделал свою длл с такими именами, неработает
> Помогите разобраться в чем дело...

Хитрый какой. А параметры? А соглашения о вызовах? Предвидя вопрос а как их узнать, ответ — использовать дизассемблер (типа IDA).
Posted via RSDN NNTP Server 2.0
Re: •Замена чужой длл своей•
От: Dimonka Верблюд  
Дата: 31.01.07 15:11
Оценка:
Здравствуйте, x3r0n, Вы писали:

X>Привет всем!

X>В WebMoney Keeper в папке KSP есть файл Enum.dll...
X>Хочу сделать чтоб при заменене этой длл моей, она работала...
X>Открыл Enum.dll в хекс редакторе, нашел имена экспортируемых функций, сделал свою длл с такими именами, неработает
X>Помогите разобраться в чем дело...

А пробовал когда-нибудь в Windows-е все dll-ки на свои заменить? Попробуй, может запустится..

Расскажи, откуда возникла такая постановка задачи?

И почему пишешь в этот форум?
Re[2]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 15:20
Оценка:
Здравствуйте, Dimonka, Вы писали:


D>А пробовал когда-нибудь в Windows-е все dll-ки на свои заменить? Попробуй, может запустится..

Это нагон?

D>Расскажи, откуда возникла такая постановка задачи?


D>И почему пишешь в этот форум?

Я думал это форум по программированию...
Если бы я создал свой топик например на форуме про шкурки тушканчиков,
тогда бы твой вопрос я думаю,был бы актуален...
Re[2]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 15:24
Оценка:
Здравствуйте, wellwell, Вы писали:


W>Хитрый какой. А параметры? А соглашения о вызовах? Предвидя вопрос а как их узнать, ответ — использовать дизассемблер (типа IDA).


Пробовал, в асме я нуб... Быть может Вы мне поможете? Взамен дам Вам 5 wmz(все что есть)...
Re[2]: •Замена чужой длл своей•
От: mdsa  
Дата: 31.01.07 15:47
Оценка:
Здравствуйте, x3r0n, Вы писали:

X>Вот код который я использовал...


X>
X>exports
X>  DllCanUnloadNow name 'DllCanUnloadNow';
X>exports
X>  DllGetClassObject name 'DllGetClassObject';
X>exports
X>  DllMain name 'DllMain';
X>exports
X>  DllRegisterServer name 'DllRegisterServer';
X>exports
X>  DllUnregisterServer name 'DllUnregisterServer';
X>end.
X>


Это же библиотека COM. Здесь еще COM-объекты реализовывать надо.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[3]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 15:52
Оценка:
Здравствуйте, mdsa, Вы писали:

M>Это же библиотека COM. Здесь еще COM-объекты реализовывать надо.

Можно пожайлуста поподробней? Если можно пример...
Re[3]: •Замена чужой длл своей•
От: Dimonka Верблюд  
Дата: 31.01.07 15:57
Оценка:
Здравствуйте, x3r0n, Вы писали:

D>>А пробовал когда-нибудь в Windows-е все dll-ки на свои заменить? Попробуй, может запустится..

X>Это нагон?
Я даже расстерялся, пойду расширять словарный запас..

Лучше ответь на этот вопрос:
D>>Расскажи, откуда возникла такая постановка задачи?

D>>И почему пишешь в этот форум?

X>Я думал это форум по программированию...
X>Если бы я создал свой топик например на форуме про шкурки тушканчиков,
X>тогда бы твой вопрос я думаю,был бы актуален...

Этот форум по программированию на Delphi/Builder-е, а не по реверс-инжинирингу.
Скажи хоть, сколько мегабайт dll-ка весит. Пожелаем тебе удачи в её эмуляции
Re[4]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 16:16
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Этот форум по программированию на Delphi/Builder-е, а не по реверс-инжинирингу.

D>Скажи хоть, сколько мегабайт dll-ка весит. Пожелаем тебе удачи в её эмуляции

Dll весит 200 килобайт, в ней 5 функций...
Re[5]: •Замена чужой длл своей•
От: Danchik Украина  
Дата: 31.01.07 16:43
Оценка:
Здравствуйте, x3r0n, Вы писали:

X>Здравствуйте, Dimonka, Вы писали:


D>>Этот форум по программированию на Delphi/Builder-е, а не по реверс-инжинирингу.

D>>Скажи хоть, сколько мегабайт dll-ка весит. Пожелаем тебе удачи в её эмуляции

X>Dll весит 200 килобайт, в ней 5 функций...


Милый, мой родной, это не важно сколько там функций, важно то что она подымает COM обьекты.
Вот эта вот функция DllGetClassObject и есть твой главнейший минингит.
Попробуй через Imprort Type Libary взять информацию что в этой библиотеке валяется Тебе очень повезет если там будет только один обьект
Re: •Замена чужой длл своей•
От: OdesitVadim Украина  
Дата: 31.01.07 16:48
Оценка:
Здравствуйте, x3r0n, Вы писали:

X>Привет всем!

X>В WebMoney Keeper в папке KSP есть файл Enum.dll...
X>Хочу сделать чтоб при заменене этой длл моей, она работала...
X>Открыл Enum.dll в хекс редакторе, нашел имена экспортируемых функций, сделал свою длл с такими именами, неработает
X>Помогите разобраться в чем дело...
Я думаю, что даже если ты все функции сэмулируеш, работать нормально она не будет. Делов том, что WM гадость злостная. Она так в систему "интегрируется", что аяяй. К примеру под виртуальной машиной уже не работет. Поэтому прийдётся много править ещё кода. Гдето на xakep.ru был обзор этого чуда.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re: •Замена чужой длл своей•
От: dkotov  
Дата: 31.01.07 17:59
Оценка:
Пути x3ron'a не исповидимы...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 18:05
Оценка:
WebMoney Keeper работает без этой длл, просто пропадает некоторый функционал...
Если заменить настоящую длл моей(код который я выкладывал) то моя длл не выполняется(месадж боксы не вылазят).
Можно ли сделать длл-ку, которая бы при замене смогла например показать мессадж бокс? Если да то как?
Знаю точно, что первая функция которая в этой длл выполняется: DllGetClassObject...
Re[2]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 18:06
Оценка:
Здравствуйте, dkotov, Вы писали:

D>Пути x3ron'a не исповидимы...


Зачем же так?))
Re[3]: •Замена чужой длл своей•
От: dkotov  
Дата: 31.01.07 18:10
Оценка:
Вот тебе мой дельный совет.
Для начала, напиши обыкновенную прокси dll.
В своей dll перенаправляй вызовы в оригинальную dll,
после чего, после того как заработает, делай всё остальное...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 18:15
Оценка:
Здравствуйте, dkotov, Вы писали:

D>Вот тебе мой дельный совет.

D>Для начала, напиши обыкновенную прокси dll.
D>В своей dll перенаправляй вызовы в оригинальную dll,
D>после чего, после того как заработает, делай всё остальное...

Вы имеете ввиду, создать длл перенаправляющую все вызовы через себя к другой _моей_ длл?
Это я сделал... Только не получается _правельно_ вызвать функции из Enum.dll, т.к. я не знаю параметров...
Re[3]: •Замена чужой длл своей•
От: Danchik Украина  
Дата: 31.01.07 18:21
Оценка:
Здравствуйте, x3r0n, Вы писали:

X>WebMoney Keeper работает без этой длл, просто пропадает некоторый функционал...

X>Если заменить настоящую длл моей(код который я выкладывал) то моя длл не выполняется(месадж боксы не вылазят).
X>Можно ли сделать длл-ку, которая бы при замене смогла например показать мессадж бокс? Если да то как?
X>Знаю точно, что первая функция которая в этой длл выполняется: DllGetClassObject...

Почитайте про Inproc COM Server
Так маленький ликбез:

Вот так вот наскорую руку... Дальше включайте думалку...
Ну и для подбития итогов. Вам придется создать COM сервер, который создает необходимые обьекты, запрашиваемые через DllGetClassObject.
Если у вас нету навыков, то это может превратится в многодневный минингит с нулевым успехом.
Re[4]: •Замена чужой длл своей•
От: dkotov  
Дата: 31.01.07 18:23
Оценка:
Немного подправлю тебя.

Library Enum;
 Uses Windows;

Function DllCanUnloadNow:HRESULT; stdcall;
Begin
  Result:= S_FALSE;  
End;

Function DllGetClassObject(P1,P2,P3:Pointer):HRESULT; stdcall;
Begin  
  return E_NOINTERFACE;
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;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: •Замена чужой длл своей•
От: x3r0n  
Дата: 31.01.07 18:23
Оценка:
Здравствуйте, dkotov, Вы писали:

D>Пути x3ron'a не исповидимы...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.