Сейчас на форуме: Magister Yoda, rtsgreg1989, ==DJ==[ZLO] (+6 невидимых) |
eXeL@B —› Основной форум —› Inliner - генератор инлайн патчей |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 07 марта 2005 16:53 · Поправил: GPcH · Личное сообщение · #1 Вот наконец-то решил довести до ума свою старую идею. На данный момент прога является полноценным генератором инлайн патчей для программ, упакованных UPX'ом. Суть программы такова: - вы вписываете какие байты и по какому смещению патчить, не забыв указать имя файла, который патчить, а прога генерит патч - EXE файл размером около 30 киллобайт, который способен патчить указанный вами ранее экзешник, причем он патчит не ббайты по смещениям, а меняет переход на OEP UPX'а на свое (генерит новую секцию), где лежит код иинлайна, после выполнения которого происходит переход на OEP. Теперь не нужно выкладывать cracked.exe с инлайном - достаточно выложить патч в 30 килобайт. Предложение, пожелания, вдруг прога на каких файлах глючит - пишите здесь. Для примера в архиве есть папка Test - там крякми, который выводит Wrong Password и проект для инлайнера, который надо скомпилить инлайнером в патч и запустить в папке с крякми, после этого крякми будет писать Pass OK, - EXE крякмиса запакован UPX'ом URL: http://reversing.dotfix.net/Inliner.rar http://reversing.dotfix.net/Inliner.rar Size: 50 kb ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 07 марта 2005 17:27 · Личное сообщение · #2 в случае с UPX идея с добавлением секции мне не кажется рациональной. в файле пакованным UPX'ом обычно достаточно места для того, чтобы сделать inline patch без лишних извратов. нужно просто найти свободное место для вставки. P.S. на тестовой 98 винде твой патч вообще не запустился. как выяснилось - из изначального отсутствия вижуал васиковской библиотеки. ----- EnJoy! |
|
Создано: 07 марта 2005 17:35 · Личное сообщение · #3 Jupiter пишет: в случае с UPX идея с добавлением секции мне не кажется рациональной. в файле пакованным UPX'ом обычно достаточно места для того, чтобы сделать inline patch без лишних извратов. нужно просто найти свободное место для вставки. Патчер планировался как универсальный потому идея общая для всех пакеров - то есть осталось только поддержку других пакеров реализовать в Inliner.dat Jupiter пишет: P.S. на тестовой 98 винде твой патч вообще не запустился. как выяснилось - из изначального отсутствия вижуал васиковской библиотеки. Ориентироваться на 98 винду и выкладывать библиотеку VB (которая в пожатом виде весит 600 килобайт я не стал). Кому она нужна - качаем отсюда: www.dotfix.net/soft/msvbvm60.rar ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 07 марта 2005 18:01 · Личное сообщение · #4 |
|
Создано: 07 марта 2005 18:33 · Личное сообщение · #5 |
|
Создано: 07 марта 2005 20:09 · Поправил: Bitfry · Личное сообщение · #6 |
|
Создано: 07 марта 2005 21:06 · Поправил: Jupiter · Личное сообщение · #7 GPcH пишет: Ориентироваться на 98 винду и выкладывать библиотеку VB ... GPcH, я не имею ничего против того, что Inliner (patch creator) написан на Васике, но вот то, что генерируемый им патч на VB меня не радует. К тому же есть dUP (diablo2oo2's Universal Patcher), который прекрасно поддерживает пакованые файлы (UPX,FSG,ASPack, также добавляя секцию), Search and Replace, возможность задать собственный дизайн (редактированием ресурсов). и это при том, что patcher dUP написан на асме и в упакованом виде весит меньше пяти килобайт. а чем примечателен твой патчер? пакованый весит под тридцать кило, ресурсы ему не поменять (кроме иконки разве что) обязательно требует VB runtime (патч то ведь должен запускаться на любой платформе, а VB runtime и не на каждой Win2k есть) search'n'replace не поддерживает, следовательно для хоть сколь нибудь грамотного хакера inline patch проще сделать руками глюки: имя автора не запоминается и в патчере не отображается короче, в случае с inline patch для UPX лучше иметь вспомогательную тулзу для: 1. нахождения прыжка на OEP (сразу после popad) 2. отыскания свободного места для вставки своего патчера (это если патчить надо много байт) 3. вбивания прыжка на патчер/из патчера на OEP В данном случае, для твоего Test.exe нужно пропатчить всего 11 байт вместо 00405557 > \61 popad 00405558 - E9 EFBBFFFF jmp Test_upx.0040114C должно быть 00405557 > \61 popad 00405558 C605 AF164000 EB mov byte ptr ds:[4016AF], 0EB 0040555F - E9 E8BBFFFF jmp Test_upx.0040114C найти UPX loader никогда труда не составляло ;) в общем, для облегчения этой процедуры, твоя прога могла найти прыжок на OEP (00405558: E9 EFBBFFFF jmp 0040114C), создать строку для патча (mov byte ptr ds:[4016AF], 0EB), вбахать прыжок на OEP если составляет трудность ассемблирования 'mov byte ptr ds:[4016AF], 0EB' в байт-код, то можно отдать эту работу OllyDbg: пропатчить exe после UPX loader'a (вбить опкод СС), грузануть файлик в olly, и уже в нём ассемблировать 'mov byte ptr ds:[4016AF], 0EB', 'jmp 0040114C' таким образом получится полностью готовый к употреблению пропатченый exeшник. а уж то, в каком виде преподносить результат пользователю - решать самому хакеру. каждый может патчить файлик своим любимым патчером ;) dUP: diablo2oo2.di.funpic.de/dup.htm 1ec7_GPcH_Test_Inliner.rar ----- EnJoy! |
|
Создано: 07 марта 2005 21:46 · Личное сообщение · #8 Bitfry пишет: Если ASpack подкрутить - будит классный инструмент. Ты мне скажи способ поиска ret'а на OEP - прикручу, только чтобы поиск можно было осуществить со 100% точностью для всех версий ASPack'а. Писать эмулятор кода ASPack'а у меня нет желания, а как найти переход на OEP программно (чтобы на всех версиях ASPack'а верно определялось) - я не знаю. Буду рад , если кто подскажет, кстати и на счет других пакеров не против буду услышать методику статического поиска (без дизассемблирования команд, а чистым str_pos'ом) перехода на OEP. Почему без дизассемблирования - нету дизассемблерных движков на VB (только 16 битный). Jupiter пишет: К тому же есть dUP (diablo2oo2's Universal Patcher), который прекрасно поддерживает пакованые файлы (UPX,FSG,ASPack, также добавляя секцию) Знаю. Давно юзаю, классная вещьб но для генерации инлайнов имхо он не особо удобен, потому и хочу свой написать. Jupiter пишет: обязательно требует VB runtime Финальную версию думаю перепишу на Power Basic - скомпиленные на нем exe файлы имеют небольшой размер и не требуют никаких библиотек Все же хотелось бы услышать о работоспособности проги, а не о том, нужно ее писать или нет ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 08 марта 2005 00:06 · Личное сообщение · #9 GPcH пишет: Все же хотелось бы услышать о работоспособности проги, а не о том, нужно ее писать или нет по поводу работоспособности я уже написал в т.ч. и то, что имя автора не запоминается и в патчере не отображается GPcH пишет: чтобы на всех версиях ASPack'а верно определялось в разных версиях ASPack'a по-разному происходит переход на OEP. отличаются 2.11 и 2.12. в первом случае переход по ret, во втором - по jnz (поиск [61 75] popad, jnz ...), в некотрых просто call и т.д. это я к тому, что в любом случае поиск перехода на oep будет разным для разных версий ----- EnJoy! |
|
Создано: 08 марта 2005 01:48 · Личное сообщение · #10 |
|
Создано: 08 марта 2005 06:39 · Личное сообщение · #11 |
|
Создано: 08 марта 2005 07:54 · Личное сообщение · #12 |
|
Создано: 08 марта 2005 10:22 · Личное сообщение · #13 WELL пишет: Я уж потом на основе оригинального и крякнутого ехе можно было бы патч сделать Угу, посему реальное предложение - генерить не сам патч, а байты для патча в виде текстового файла: PatchByte db 011h,0AAh,..... PatchOffset dd 07001h, 07002h,.... Kolichestvo db 20 Такой текст можно быстро перенести в свой собственный патч. Я такую штуку сделал себе, только работает на сравнение двух файлов, а инлайн все равно руками приходится делать. |
|
Создано: 08 марта 2005 17:55 · Личное сообщение · #14 |
|
Создано: 08 марта 2005 21:10 · Личное сообщение · #15 WELL пишет: Идея-то хорошая, но реализована криво ;) Да ладно вам придираться, это ж релиз 1.0, гпч скоро всё круто допишет, наверное.Ara пишет: посему реальное предложение - генерить не сам патч, а байты для патча в виде текстового файла Да, это было бы хорошо, а то вот мне не нравится что DZA создаёт "noname" patch.exe - некрасиво.GPcH пишет: только чтобы поиск можно было осуществить со 100% точностью для всех версий ASPack'а. на фтп экзетулза вроде бы лежали все версии аспак начиная от 1.00бета - можно поразбираться как они работают. ----- Всем не угодишь |
|
Создано: 08 марта 2005 22:33 · Личное сообщение · #16 WELL пишет: Идея-то хорошая, но реализована криво ;) Вот мне например не по приколу юзать чужой патч.ехе Лучше бы твоя прога генерила заинлайненый cracked.exe А что мешает сгенерить моей прогой патч, им проинлайнить прогу - получишь проинлайненный EXE (правда на два щелчка мышью больше придется сделать ))) Кстати проверял прогу на том Cutting3.exe что ты мне присылал когда я только начинал Inliner писать - новый ее на ура инллайнит - сегодня проверял Ara Я так понял, чтобы прога генерила асмовый код инлайна? Если да, то к сожалению я не настолько знаю асм, чтобы инлайн патч на нем написать. А просто crk файл не сдалаешь - размер файла же меняется когда в нем новую секцию создаешь Jupiter пишет: по поводу работоспособности я уже написал в т.ч. и то, что Я не про косметические глююки - до них мне пока пофигу, так как это еще не релиз проги (еще никуда ее не выкладывал, кроме этого форума). Мне важна работоспособность генеримых патчей. Если на какой проге вручную работает, а с инлайнером - нет - просьба прислать мне на мыло экзешник инлайненной проги и проектный файл инлайнера - буду ббаги фиксить (хотя у меня вродде работает - тестил на 2 файлах, так как больше нету заUPXенных шаровар у меня на винте). ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 08 марта 2005 22:49 · Поправил: Ara · Личное сообщение · #17 GPcH Нет, не асмовый код... Просто нужный кусочек в секцию .data У меня генерит так: ============================= kol db 1 fName db 'Artefact.exe',0 PatchOffset dd 002C320h PatchByte db 090h OldByte db 030h fSize dd 181248 ============================= Потом вставляешь это дело в свой патч и компилишь... |
|
Создано: 08 марта 2005 23:35 · Личное сообщение · #18 А как знать, какой код вставлять? Ведь патч в зависимости от версии пакера по разному инлайнит, да и к тому же патч можно сгенерить не имея того EXE файла, который патчим, а зная только байты которые нужно пропатчить после распаковки файла в памяти, а для того что ты предлагаешь понадобится файл, который патчим. У меня например очень часто ббывает такое - записал, где нужно пропатчить прогу чтобы не требовала регистрации, при этом зная что там UPX, а прогу cfvq удалилб при этом друг патчик просит - тут моя прога сработает на ура, так как оригинальный ломаемый EXE ей нафиг не нужен ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 09 марта 2005 05:42 · Личное сообщение · #19 |
|
Создано: 09 марта 2005 13:32 · Личное сообщение · #20 GPcH пишет: У меня например очень часто бывает такое - записал, где нужно пропатчить прогу, чтобы не требовала регистрации, при этом зная, что там UPX, а прогу сам удалил, при этом друг патчик просит 1. Вариант с отсутствием файла, который надо патчить... хм... бывает, конечно, но редко 2. Если уж речь идёт о том, чтобы другу помочь - так в этом случае проще распаковать (файл, который есть) и пропатчить, не заботясь о размере 3. Ну а если уж такой вариант, что и файла самого нет, и размер имеет значение ;) то я всё равно воспользовался бы dUP'ом, ибо он удобнее и компактнее. ----- EnJoy! |
|
Создано: 09 марта 2005 15:21 · Личное сообщение · #21 |
|
Создано: 09 марта 2005 15:30 · Личное сообщение · #22 |
|
Создано: 09 марта 2005 15:41 · Поправил: sanniassin · Личное сообщение · #23 |
|
Создано: 09 марта 2005 15:47 · Личное сообщение · #24 |
|
Создано: 09 марта 2005 15:55 · Личное сообщение · #25 |
|
Создано: 09 марта 2005 16:06 · Личное сообщение · #26 |
|
Создано: 09 марта 2005 17:59 · Поправил: GPcH · Личное сообщение · #27 Короче я так понял, что прога никому нах не нужна, что всем проще руками инлайны генерить, мучаясь по часу в поисках свободного места и с проверкими работоспособности EXE. Кому что нравится Мне проще не париться и за 1 минуту сгенерить патчик моей прогой и послать по мылу или просто положить в коллекцию, чем париться. В общем я надеялся, что прога получит больше лестных отзывов и я начну по возможности делать поддержку других пакеров, но раз прога нахуй никому не нужна и все всё и без прог прекрасно делают... ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 09 марта 2005 18:04 · Личное сообщение · #28 GPcH пишет: Короче я так понял, что прога никому нах не нужна, что всем проще руками инлайны генерить, мучаясь по часу в поисках свободного места и с проверкими работоспособности EXE. я ж писал, что нужно: Jupiter пишет: короче, в случае с inline patch для UPX лучше иметь вспомогательную тулзу для: 1. нахождения прыжка на OEP (сразу после popad) 2. отыскания свободного места для вставки своего патчера (это если патчить надо много байт) 3. вбивания прыжка на патчер/из патчера на OEP или лень читать большие посты? ----- EnJoy! |
|
Создано: 09 марта 2005 18:12 · Личное сообщение · #29 Jupiter пишет: или лень читать большие посты? Не лень, просто я сразу сказал, что это я делать не буду, потому что алгоритм дла каждого пакера будет разный и будет зашит в Inliner.dat, а дублировать данные из Inliner.dat в Inliner.exe - не только неэффективно, но и может привести к глюкам. В общем прога задумывалась как полностью автоматическая. Проще сделать поддержку внешних Inliner.dat'ов, которые можно ббудет писать на любом языке программирования, но желающих писать Inliner.dat на асме я не нашел, а самого не тянет писать генератор инлайнов на асме. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 09 марта 2005 18:14 · Личное сообщение · #30 |
. 1 . 2 . 3 . >> |
eXeL@B —› Основной форум —› Inliner - генератор инлайн патчей |