Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Вообщем продолжаю извращения. Написал DLL такого типа:
[SRC="pascal"]library test;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
procedure MyFirstDLLProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_ATTACH then
begin
showmessage('Hello World!');
end;
if Reason = DLL_PROCESS_DETACH then
begin
showmessage('Bye World!');
end;
end;
begin
end.[/SRC]
В итоге имею:
Что делать - без понятия...
Сообщений: 629
Тем: 14
Зарегистрирован: Feb 2013
Репутация:
4,073
Graphics, Forms, etc etc
why?
О чем мы с тобой говорили сегодня.. :redlol:
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Да пока это не имеет значения особого пейн). Сам факт того, что exe после добавления импорта просто повреждается и не хочет запускаться....
Сообщений: 629
Тем: 14
Зарегистрирован: Feb 2013
Репутация:
4,073
[SRC="pascal"]library test;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
procedure MyFirstDLLProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_ATTACH then
begin
showmessage('Hello World!');
end;
if Reason = DLL_PROCESS_DETACH then
begin
showmessage('Bye World!');
end;
end;
begin DLLProc := @EntryPoint;
EntryPoint(DLL_PROCESS_ATTACH);
end.[/SRC]
Замени EntryPoint на MyFirstDLLProc
Сообщений: 526
Тем: 28
Зарегистрирован: Oct 2009
Репутация:
7,209
03-28-2013, 08:31 AM
(Сообщение последний раз редактировалось: 03-28-2013, 08:39 AM Smiler.)
Zubastic Написал:Да пока это не имеет значения особого пейн). Сам факт того, что exe после добавления импорта просто повреждается и не хочет запускаться....
ты в библиотеке своей объявил экспортную функцию (заглушку)?
Код: extern "C" void __declspec(dllexport) __stdcall function1()
{
}
она обязательно должна быть, иначе модифицируемый exe рухнет.
в PETools выбирай именно уже готовую dll чтобы оффсет был верным, иначе также крах exe файла.
Добавлено через 5 минут
Zubastic Написал::eek:
Теперь улучшим задачку: хотелось бы возможность копировать/вставить в клиент l2. Безопасность все-таки повыше будет. Данная вещь реализована на астериосе. Однако у них клиент криптован, нужно либо снять крипт, либо сделать аналогичную вещь. Если не трудно - залейте оригинальную папку систем клиента HF с снятой темидой, а то у меня только грязные
немного непонял вопроса, но как я понял твой вопрос , это чтобы не было видно внешней (нашей) dll ?
тогда все просто, используем MoleBox и ваш exe+dll станет просто exe
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
MHard, пишу на делфе, поэтому даже незнаю, объявил я ее или нет
[SRC="pascal"]begin DLLProc := @EntryPoint;
EntryPoint(DLL_PROCESS_ATTACH);
end.[/SRC]
По идее вот это и есть оно.
В PETools выбирал готовую. l2.exe просто не открывается....
Не так вопрос был: я хотел написать либу, которая давала бы возможность вставлять в окно логина/чата текст с буфера обмена Windows...
Сообщений: 14
Тем: 0
Зарегистрирован: Mar 2013
Репутация:
0
03-28-2013, 11:25 AM
(Сообщение последний раз редактировалось: 03-28-2013, 12:00 PM s2lx.)
Zubastic Написал:...
Не так вопрос был: я хотел написать либу, которая давала бы возможность вставлять в окно логина/чата текст с буфера обмена Windows... Зачем тогда библиотека, когда хватит и findwindow and sendmessage
А по поводу падения. Его бы не было как раз при инжекте dll, а не при "жёстком" прикручивании.
PHP код: <?php
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb =sizeof(si);
if(CreateProcess( ".\\l2.exe",
"",
0,
0,
0,
CREATE_SUSPENDED,
0,
".\\",
&si,
&pi))
{
DWORD Process = (DWORD)pi.hProcess;
printf("Process: %d\n", Process);
if(!InjectLibrary(Process, "my_lib.dll"))
{
printf("InjectLibrary ERROR: %d\n", GetLastError());
}
else
{
printf("InjectLibrary OK: %d\n", GetLastError());
ResumeThread(pi.hThread);
}
}
else
{
printf("CreateProcess ERROR: %d\n", GetLastError());
}
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
s2lx Написал:Зачем тогда библиотека, когда хватит и findwindow and sendmessage
А по поводу падения. Его бы не было как раз при инжекте dll, а не при "жёстком" прикручивании.
[SRC="c++"]STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb =sizeof(si);
if(CreateProcess( ".\\l2.exe",
"",
0,
0,
0,
CREATE_SUSPENDED,
0,
".\\",
&si,
&pi))
{
DWORD Process = (DWORD)pi.hProcess;
printf("Process: %d\n", Process);
if(!InjectLibrary(Process, "my_lib.dll"))
{
printf("InjectLibrary ERROR: %d\n", GetLastError());
}
else
{
printf("InjectLibrary OK: %d\n", GetLastError());
ResumeThread(pi.hThread);
}
}
else
{
printf("CreateProcess ERROR: %d\n", GetLastError());
}
[/SRC] Просто это было бы только начало . Как разобрался бы с этим, начал бы писать следующее.
Дык там не падение, а просто windows считает, что это не win32 приложение. Бинарик портится... Если через LordPE, то тогда ошибка памяти выдается.
Сообщений: 14
Тем: 0
Зарегистрирован: Mar 2013
Репутация:
0
Zubastic Написал:Просто это было бы только начало . Как разобрался бы с этим, начал бы писать следующее.
Дык там не падение, а просто windows считает, что это не win32 приложение. Бинарик портится... Если через LordPE, то тогда ошибка памяти выдается. Я привязывал только через CFF Explorer, незнаю что там в LordPE, но скорее всего из-за неправильно установленой точки входа или экспортируемой фун-ции. Не шарю я в дельфи
Вот рабочий пример на сях. Работает и с лоадером, что выше и с привязкой.
PHP код: <?php
#include "dllmain.h"
//если прикручиваем к ехе - раскоментировать
/*__declspec(dllexport)*/ BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH: /* тут свои функции
CreateConsole();
CreateHOOK();
PrintOnConsole("Directx Hook ... OK\n");
DisableThreadLibraryCalls(hModule);
CreateHook();
PrintOnConsole("Network packet Hook ... OK\n"); */
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH: /* востанавливаем
EndHOOK();
EndHook();
DestroyConsole(); */
break;
}
return TRUE;
}
Сообщений: 629
Тем: 14
Зарегистрирован: Feb 2013
Репутация:
4,073
:eek: боже.
Что за убогий кодинг на С++. Читать не возможно
|