eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› Отделение .dll файла от .exe
Посл.ответ Сообщение

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 16:13 New!
Цитата · Личное сообщение · #1

Есть файл client.exe к нему какойта чкловек прикрутил lib.dll (непонятна каким оброзом) , как можна отсойденить этот lib.dll от client.exe ?


Ранг: 122.3 (ветеран)
Статус: Участник

Создано: 6 января 2006 17:15 New!
Цитата · Личное сообщение · #2

давай его сюда. (файл, а не человека)
прикрутить можно по разному, можно как ресурс, тогда тебе редактор ресурсов поможет.
если просто как даннные, тогда можно попробовать в hex редакторе найти по сигнатуре MZ, если он его не криптовал как-нибудь ессно.

ну и наконец, смотреть в отладчике на exe этот, если прикрутил, то рано или поздно будет использовать, тут можно поймать и сдампить

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 17:25 New!
Цитата · Личное сообщение · #3

--> DOWNLOAD (6xx kb) <-- http://balt1c.eclub.lv/client.rar
толка она незапустится, там еще кучя файлов на 600 mb
.dll файл каторый прекрутили к client.exe тоже лежит в архиве, без него client.exe незапускается


Ранг: 122.3 (ветеран)
Статус: Участник

Создано: 6 января 2006 17:33 · Поправил: intty New!
Цитата · Личное сообщение · #4

Я плакаль.
этот самый афтар, действительно аццкий сотона, прикрутил так, что не открутишь.

//ну в общем она в импорте :]]

тему лучше закрой.


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 6 января 2006 17:38 New!
Цитата · Личное сообщение · #5

intty
//ну в общем она в импорте :]]

Так можно таблицу импорта подредактировать чтоб экзешник не требовал dll.

Ранг: 53.8 (постоянный)
Статус: Участник

Создано: 6 января 2006 17:40 New!
Цитата · Личное сообщение · #6

тьфу, да все элемнтарно, она там вместо advapi32.dll, найди в экзешнике строчку "xxoldpxx.dll" и замени ее на "advapi32.dll"


Ранг: 122.3 (ветеран)
Статус: Участник

Создано: 6 января 2006 17:45 New!
Цитата · Личное сообщение · #7

да я поторопился, она просто содержит переходники.


Ранг: 122.3 (ветеран)
Статус: Участник

Создано: 6 января 2006 17:52 New!
Цитата · Личное сообщение · #8

bkslash
хотя нет, не все так просто. она действительно содержит переходники.
Но! DllEntryPoint не пуст. В зависимости от параметра Reason, то бишь аттачатся к ней или детачатся, идет мусоленье с реестром.
дальще смотреть лень

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 18:01 New!
Цитата · Личное сообщение · #9

Так там всё проста? или как..

Ранг: 53.8 (постоянный)
Статус: Участник

Создано: 6 января 2006 18:06 New!
Цитата · Личное сообщение · #10

n013g41
ты расскажи, чем тебе та дллка мешает. попробуй сделать как я сказал, оно вроде запускается, но работоспособность я естественно проверить не могу.

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 18:09 New!
Цитата · Личное сообщение · #11

эта dll'ка ещё упакована UPX'ом и подправлена так что её не распакавать..


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 6 января 2006 18:10 New!
Цитата · Личное сообщение · #12

bkslash пишет:
тьфу, да все элемнтарно, она там вместо advapi32.dll, найди в экзешнике строчку "xxoldpxx.dll" и замени ее на "advapi32.dll"

Задаю очень глупый вопрос, но я хочу знать ответ: чем ты искал эту строчку и как? Потому что у меня данная строка "Not found" Сорри, если я туплю.


Ранг: 122.3 (ветеран)
Статус: Участник

Создано: 6 января 2006 18:11 New!
Цитата · Личное сообщение · #13

"распакавать" ищо как "распакавать"
либо руками, либо UpxRipper'ом каким-нибудь

Ранг: 53.8 (постоянный)
Статус: Участник

Создано: 6 января 2006 18:15 New!
Цитата · Личное сообщение · #14

Mifodix пишет:
Задаю очень глупый вопрос, но я хочу знать ответ: чем ты искал эту строчку и как? Потому что у меня данная строка "Not found" Сорри, если я туплю.

UltraEdit http://www.ultraedit.com/


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 6 января 2006 18:18 New!
Цитата · Личное сообщение · #15

bkslash пишет:
UltraEdit

Спасибо, я уже сообразил Hex workshop'ом заменить Действительно ступил что-то.


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 6 января 2006 18:26 New!
Цитата · Личное сообщение · #16

Вроде как распаковал. Фаил в аттаче.

{ Атач доступен только для участников форума }

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 18:47 New!
Цитата · Личное сообщение · #17

Mifodix, да пашет dumped! %)

bkslash: заменил xxoldpxx.dll на advapi32.dll , client.exe запустился без проблем, но эта xxoldpxx.dll dllka чтота посылала серверу.. и всё равно непашет так как надо..

Ранг: 53.8 (постоянный)
Статус: Участник

Создано: 6 января 2006 19:26 New!
Цитата · Личное сообщение · #18

n013g41
ты все таки ответь на вопрос, чем мешает эта дллка?

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 19:45 · Поправил: n013g41 New!
Цитата · Личное сообщение · #19

эта дллка xxoldpxx.dll создана админами сервера oldp.net Ultima Online , а создана для того чтобы игроки не пользавались програмой Yoko injection i speedhack.. вот на спидхак пофиг а то что недают инжектом пользаватся.. обидно.. (инжект прога где свой язык.. можна писать макросы),

но если делать так как ты говориш, то сервер выдаёт ошибку, неправельный клиент.. вот и пытаюсь хоть чтота зделать чтобы пахал инжект

Ранг: 4.2 (гость)
Статус: Участник

Создано: 6 января 2006 22:07 New!
Цитата · Личное сообщение · #20



Ранг: 218.9 (наставник)
Статус: Участник
dotnet

Создано: 8 января 2006 11:49 New!
Цитата · Личное сообщение · #21

гы читеры

n013g41
Раз она выдает ошибку клиента значит на север посылается либо CRC либо хеш этого ехе, так что простым отвязыванием ты тут не обойдешся придется тебе ковырять саму прогу, и делать это придется скорее всего после каждого обнавления.

Ранг: 21.2 (новичок)
Статус: Участник

Создано: 8 января 2006 17:47 New!
Цитата · Личное сообщение · #22

Скорее ковырять надо dll, она по ходу дела
1. Ищет указанные проги
и если не находит
2. Посылает сообщение серверу
3. Дает проге нормально загрузиться
так вот поиск и стоит подправить
вероятно также что прога вычисляет CRC проги в памяти и посылает серверу,
что также поправимо


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 8 января 2006 21:02 · Поправил: Mifodix New!
Цитата · Личное сообщение · #23

n013g41 пишет:
эта дллка xxoldpxx.dll создана админами сервера oldp.net Ultima Online , а создана для того чтобы игроки не пользавались програмой Yoko injection i speedhack.

Если я правильно понимаю, то длл внедрена в какую-то стороннюю игру. Следовательно, надо изучать саму dll, а не прогу. Сначала длл вычисляет хэш/CRC игры и отправляет серверу для проверки, затем эта длл ищет окна, процессы, файлы или ключи реестра, характерные для Yoko injection и speedhack, а затем если результат положительный отрубает игру. Вот такую логическую цепочку я выстроил.
Сначала надо посмотреть API функции, которые использует длл и прикинуть какой способ определения присутствия Yoko injection и speedhackа используется и от этого уже плясать: ставить бряки на эти функции и т. д.
Отвязка от длл ничего не даст. Но опять-таки без полного дистрибутива игры с внедрённой длл очень тяжело судить.
n013g41, или длл внедрена в экзешник самими разработчиками? Тогда функции целостности файла могут быть и в самом экзешнике.

Ранг: 4.2 (гость)
Статус: Участник

Создано: 8 января 2006 21:35 New!
Цитата · Личное сообщение · #24

а Как можна изменить CRC и hash проги client.exe?


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 8 января 2006 21:44 New!
Цитата · Личное сообщение · #25

Для CRC есть плагин для PEID и кажется функция в PE Explorer(точно не помню), насчёт хэша хз. Проще будет разобраться с работой длл или проги.

Ранг: 4.2 (гость)
Статус: Участник

Создано: 8 января 2006 22:15 New!
Цитата · Личное сообщение · #26

я изменял CRC, на любой другой.. и этот клиент всё ровно пахал.. значет дело не в CRC


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 8 января 2006 22:29 New!
Цитата · Личное сообщение · #27

n013g41 пишет:
значет дело не в CRC

Значит придётся исследовать саму прогу или длл. Было бы слишом просто отделаться одним CRC.

Ранг: 4.2 (гость)
Статус: Участник

Создано: 8 января 2006 22:29 New!
Цитата · Личное сообщение · #28

Mifodix пишет:
Сначала надо посмотреть API функции


Address Disassembly Destination
10001122 CALL DWORD PTR DS:[<&kernel32.ExitProces kernel32.ExitProcess
10001148 CALL DWORD PTR DS:[<&kernel32.GetModuleH kernel32.GetModuleHandleA
10001168 CALL DWORD PTR DS:[<&kernel32.GetTempPat kernel32.GetTempPathA
10001198 CALL DWORD PTR DS:[<&kernel32.FindFirstF kernel32.FindFirstFileA
100011AC CALL DWORD PTR DS:[<&kernel32.GetModuleH kernel32.GetModuleHandleA
100011CB CALL DWORD PTR DS:[<&kernel32.VirtualPro kernel32.VirtualProtect
10001293 CALL DWORD PTR DS:[<&kernel32.GetSystemD kernel32.GetSystemDirectoryA
1000129E CALL DWORD PTR DS:[<&kernel32.GetModuleH kernel32.GetModuleHandleA
100012C6 CALL DWORD PTR DS:[<&advapi32.RegOpenKey advapi32.RegOpenKeyExA
100012DE CALL DWORD PTR DS:[<&user32.MessageBoxA> USER32.MessageBoxA
100012E4 CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
100012ED CALL DWORD PTR DS:[<&kernel32.TerminateP kernel32.TerminateProcess
100012F5 CALL DWORD PTR DS:[<&kernel32.GetModuleH kernel32.GetModuleHandleA
10001316 CALL DWORD PTR DS:[<&kernel32.VirtualPro kernel32.VirtualProtect
1000133D CALL DWORD PTR DS:[<&advapi32.RegQueryVa advapi32.RegQueryValueExA
10001355 CALL DWORD PTR DS:[<&user32.MessageBoxA> USER32.MessageBoxA
1000135B CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
10001364 CALL DWORD PTR DS:[<&kernel32.TerminateP kernel32.TerminateProcess
10001418 CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
10001421 CALL DWORD PTR DS:[<&kernel32.TerminateP kernel32.TerminateProcess
10001494 CALL DWORD PTR DS:[<&kernel32.GetProcAdd kernel32.GetProcAddress
100014FE CALL DWORD PTR DS:[<&kernel32.GetModuleH kernel32.GetModuleHandleA
1000151F CALL DWORD PTR DS:[<&kernel32.VirtualPro kernel32.VirtualProtect
10001570 CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
10001579 CALL DWORD PTR DS:[<&kernel32.TerminateP kernel32.TerminateProcess
100016C3 CALL <JMP.&kernel32.RtlUnwind> ntdll.RtlUnwind
100021EA CALL DWORD PTR DS:[<&kernel32.VirtualFre kernel32.VirtualFree
10002215 PUSH EDI (Initial CPU selection)
100025E4 CALL DWORD PTR DS:[<&kernel32.VirtualAll kernel32.VirtualAlloc
10002603 CALL DWORD PTR DS:[<&kernel32.VirtualQue kernel32.VirtualQuery
1000264E CALL DWORD PTR DS:[<&kernel32.VirtualAll kernel32.VirtualAlloc
10002679 CALL DWORD PTR DS:[<&kernel32.HeapCreate kernel32.HeapCreate
10002696 CALL DWORD PTR DS:[<&kernel32.HeapDestro kernel32.HeapDestroy
100026BF CALL DWORD PTR DS:[<&kernel32.HeapAlloc> ntdll.RtlAllocateHeap
100026E3 CALL DWORD PTR DS:[<&kernel32.HeapReAllo ntdll.RtlReAllocateHeap
100026FF CALL DWORD PTR DS:[<&kernel32.HeapFree>] ntdll.RtlFreeHeap
10002721 CALL DWORD PTR DS:[<&kernel32.HeapSize>] ntdll.RtlSizeHeap
1000274F CALL DWORD PTR DS:[<&kernel32.HeapValida kernel32.HeapValidate
10003258 CALL DWORD PTR DS:[<&kernel32.CloseHandl kernel32.CloseHandle
10003266 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
100032C5 CALL DWORD PTR DS:[<&kernel32.GetSystemT kernel32.GetSystemTimeAsFileTime
100032DB CALL DWORD PTR DS:[<&kernel32.GetSystemT kernel32.GetSystemTimeAsFileTime
10003367 CALL DWORD PTR DS:[<&kernel32.GetStartup kernel32.GetStartupInfoA
1000342C CALL DWORD PTR DS:[<&kernel32.GetFileTyp kernel32.GetFileType
100034A8 CALL DWORD PTR DS:[<&kernel32.GetStdHand kernel32.GetStdHandle
100034C0 CALL DWORD PTR DS:[<&kernel32.GetFileTyp kernel32.GetFileType
100034CD CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
100034D6 CALL DWORD PTR DS:[<&kernel32.GetCurrent kernel32.GetCurrentProcess
100034EF CALL DWORD PTR DS:[<&kernel32.DuplicateH kernel32.DuplicateHandle
10003544 CALL DWORD PTR DS:[<&kernel32.LockResour kernel32.SetHandleCount
1000375B CALL DWORD PTR DS:[<&kernel32.GetCommand kernel32.GetCommandLineA
10003776 CALL DWORD PTR DS:[<&kernel32.GetModuleF kernel32.GetModuleFileNameA
100037F9 CALL DWORD PTR DS:[<&kernel32.GetEnviron kernel32.GetEnvironmentStringsA
10003946 CALL DWORD PTR DS:[<&kernel32.SetFilePoi kernel32.SetFilePointer
10003955 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
100047F9 CALL DWORD PTR DS:[<&kernel32.ReadFile>] kernel32.ReadFile
10004803 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10004970 CALL DWORD PTR DS:[<&kernel32.ReadFile>] kernel32.ReadFile
1000497A CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10004B92 CALL DWORD PTR DS:[<&kernel32.WriteFile> kernel32.WriteFile
10004BB4 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10004BF7 CALL DWORD PTR DS:[<&kernel32.WriteFile> kernel32.WriteFile
10004C10 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10004DAB CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004DB7 CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004DC3 CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004E45 CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004E53 CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004E61 CALL DWORD PTR DS:[<&kernel32.SetStdHand kernel32.SetStdHandle
10004F3A CALL DWORD PTR DS:[<&kernel32.GetFileTyp kernel32.GetFileType
10004F46 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10005137 CALL DWORD PTR DS:[<&kernel32.DeleteFile kernel32.DeleteFileA
10005141 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
100051E7 CALL DWORD PTR DS:[<&kernel32.ExitProces kernel32.ExitProcess
10005F22 CALL DWORD PTR DS:[<&kernel32.CreateFile kernel32.CreateFileA
10005F32 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10005F4B CALL DWORD PTR DS:[<&kernel32.GetFileTyp kernel32.GetFileType
10005F5C CALL DWORD PTR DS:[<&kernel32.CloseHandl kernel32.CloseHandle
10005F62 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10005FF0 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10006CE0 CALL DWORD PTR DS:[<&kernel32.GetLastErr ntdll.RtlGetLastWin32Error
10006D32 CALL DWORD PTR DS:[<&kernel32.SetEndOfFi kernel32.SetEndOfFile
10006DE6 CALL DWORD PTR DS:[<&kernel32.SetConsole kernel32.SetConsoleCtrlHandler

это из распакованной dll


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 8 января 2006 22:38 New!
Цитата · Личное сообщение · #29

Или по процессу проверяет наличие "вредных" тулз или по ключам в реестре, или по наличию файлов, но не по окну. От этого и иди. Больше ничем помочь не могу и думаю что вряд ли кто возьмётся, так как одной длл и экзешника явно не хватит для проверки работоспособности, а скачивать дистрибутив игры - нет трафа столько(надейся что у кого-нить анлим и порядочная скорость Интернета).


Ранг: 116.7 (ветеран)
Статус: Участник

Создано: 8 января 2006 22:45 New!
Цитата · Личное сообщение · #30

Попробуй чё-нить "похимичить" с процессом инжекта(я понимаю именно он нужен тебе), с его файлами, если не хочешь реверсить саму прогу/длл.
 eXeL@B —› Софт, инструменты —› Отделение .dll файла от .exe

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS