· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› InMemory patcher для X-treme-protected программ

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Фев 26, 2004 16:39:23

кто имеет реальные практические продвижения в этом вопросе напишите please:
1) как получить доступ к процессу, защищённому этим протектором на запись в память процесса.
2) желательно кусок решения оформить в виде исходника или хотя бы указать алгоритм решения (перечислить подробно как разлочить память процесса и как эти уроды её закрыли).

VirtualProtectEx не катит...


Дата: Фев 26, 2004 17:13:30

А ты не пробовал поиграться с моим дампером, он может подгрузить длл'ку в удалённый процесс.
Попробуй, мне интересно что получится.


Дата: Фев 26, 2004 17:46:48 · Поправил: Baron Gede

Скинь плиз линк на твой дампер и доку, а я доложу ситуацию. (тестить буду под W2003 и W98SE2)

только не пойму чем мне поможет подгрузка dll-ки в удалённый процесс.. Мне exe-шник интересно пропатчить в памяти или хотя бы доступ в принципе получить (pid и разлочить некую область памяти, например 500177..50017b)


Дата: Фев 26, 2004 18:08:27 · Поправил: Asterix

Дампер лежит на этом сайте, более того у меня уже почти готова более свежая версия, которая позволяет загружать и выгружать длл'ку, а в эту длл'ку можно запихнуть любой код, даже написать патчер, главное что мы уже в процессе протектора.
http://www.wasm.ru/tools/6/Dumper.zip


Дата: Фев 26, 2004 21:00:41

спасибо, дампер скачал.
Так как мне написать патчер - предлагаешь сделать inject DLL в контекст target process'а и только затем патчить ?
Разъясни трюк с трэдами плиз (или как там у тебя)... :)


Дата: Фев 26, 2004 21:02:16 · Поправил: Baron Gede

и вообще приму в дар исходники на асме :)))
инкогнито и нераспространение гарантирую (ежели хочешь чтобы идею не увели)


Дата: Фев 26, 2004 21:24:13 · Поправил: Baron Gede

Попробовал, как и обещал протестить под Windows 2003 Standart Edition.
Результат нулевой.
Скриншоты того, что получил при попытке дампить прилагаю.
пардон: аттач не поместился - могу на мыло скинуть.


Так что старый трюк с The CreateRemoteThread & LoadLibrary техникой провалился

HANDLE hThread;
char szLibPath[_MAX_PATH]; // The name of our "LibSpy.dll" module
// (including full path!);
void* pLibRemote; // The address (in the remote process) where
// szLibPath will be copied to;
DWORD hLibModule; // Base address of loaded module (==HMODULE);
HMODULE hKernel32 = ::GetModuleHandle("Kernel32");

// initialize szLibPath
//...

// 1. Allocate memory in the remote process for szLibPath
// 2. Write szLibPath to the allocated memory
pLibRemote = ::VirtualAllocEx( hProcess, NULL, sizeof(szLibPath),
MEM_COMMIT, PAGE_READWRITE );
::WriteProcessMemory( hProcess, pLibRemote, (void*)szLibPath,
sizeof(szLibPath), NULL );


// Load "LibSpy.dll" into the remote process
// (via CreateRemoteThread & LoadLibrary)
hThread = ::CreateRemoteThread( hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE) ::GetProcAddress( hKernel32,
"LoadLibraryA" ),
pLibRemote, 0, NULL );
::WaitForSingleObject( hThread, INFINITE );

// Get handle of the loaded module
::GetExitCodeThread( hThread, &hLibModule );

// Clean up
::CloseHandle( hThread );
::VirtualFreeEx( hProcess, pLibRemote, sizeof(szLibPath), MEM_RELEASE );

-------------------------------

// Unload "LibSpy.dll" from the target process
// (via CreateRemoteThread & FreeLibrary)
hThread = ::CreateRemoteThread( hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE) ::GetProcAddress( hKernel32,
"FreeLibrary" ),
(void*)hLibModule, 0, NULL );
::WaitForSingleObject( hThread, INFINITE );

// Clean up
::CloseHandle( hThread );

----------
ещё есть The CreateRemoteThread & WriteProcessMemory техника

тока енто не я такой умный, а инет :)))
ни черта не работает эта шняга имхо


Дата: Фев 26, 2004 21:38:27

Ты не написал dll'ка грузится в процесс или драйвер мешает ей, если грузится то попробуй сдампить (дамп==0х1000h*количество страниц) ;-)
По поводу патчера, мне кажется что такой протектор должен контролировать свой код и наверно патчить не даст, может какие-нибудь ещё имеются трюки с проверкой CRC например,
можешь написать свою dll'ку и поэкспериментировать, код который должен выполняться пихай в DllMain.
Про трюк с тредами читай тут:
_http://www.codeproject.com/useritems/winspy.asp
Исходники пока распространять не планировал ;-)


Дата: Фев 26, 2004 21:40:25

Вобщем пока я писАл ты статью уже нашёл ;-)
Опиши словами что было при попытке сдампить.


Дата: Фев 26, 2004 21:47:03 · Поправил: Baron Gede

я её ещё месяц назад нашёл если не больше :)))

___

так я чем только не пробовал дампить - не дампится у меня.
Я не спорю, что под W98 может и сдампится - не пробовал.

даже и не знаю как быть. Мне именно патчить надо, а не дампить даже вообще-то.
А там какая-то хитрая карусель - проверяет целостность своего кода видимо.
Я дампер пробовал и под админом и под простым юзером запущать - глухо.
Если дампить не адресно, то это, думаю, под W98 надо. Под XP там жо** какая-то. :(


Дата: Фев 26, 2004 21:48:45

а было просто: "Не могу открыть процесс" написал дампер.
скрины могу послать на мыло.


Дата: Фев 26, 2004 22:05:34

Значит PID не правильный, ты его откуда брал?


Дата: Фев 26, 2004 22:18:06

В драйвере стоит антидамповая защита - защита от OpenProcess, патчить или дампить можно только от имени процесса. После первого вызова DeviceIoControl запакованному приложению открывается доступ к IDT и всем портам ввода-вывода, таблицы страниц патчаться. В остальных вызовах DeviceIoControl просто передаётся адрес памяти, куда драйвер управление передаёт, так что не поисследовать, если softice стоит, то комп перезагружается.


Дата: Фев 26, 2004 22:23:10

Скрины кстати лучше в PNG сохранять или сжимать специальной прогой :-) , но в винде начиная кажется с XP можно сохранять из Paint'а в PNG, хотя и не очень оптимально :-)


Дата: Фев 27, 2004 01:57:07

Скачал себе эту хрень но он у меня почему-то вообще не запускается (win98).

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.054