eXeL@B —› Основной форум —› In-Line патч |
Посл.ответ | Сообщение |
|
Создано: 25 августа 2004 22:46 · Личное сообщение · #1 |
|
Создано: 26 августа 2004 00:07 · Личное сообщение · #2 К концу экзешника дописываешь свой код и делаешь редирект на OEP. Соответственно и точку входа в PE заголовке меняешь на адрес начала дописанного кода. Только помни, что код можно дописывать только в ту часть EXE файла, которая будет располагаться в памяти (имеет виртуальные адреса). Если в имеющихся секциях нет свободного места - создай новую средствами Pe Tools. В качестве дописываемого кода юзай функцию, которая будет изменять байты EXE файла в памяти. Например: mov eax, 75h ; байт, который впендюриваем по mov ebx, 401010h ; этому адресу mov [ebx], eax ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 26 августа 2004 01:19 · Личное сообщение · #3 AlexeY Почитай статьи Рубанка, как патчить UPX & ASPack. Сейчас int3 лежит, поэтому ссылки дать не могу. Может кто, у кого на харде есть выложит. GPcH Не понравилось мне твое объяснение совсем, если б я не был начинающим, я б ни хрена не понял. AlexeY Собственно инлайн нужен тогда, когда необходимо пропатчить запакованную программу. Как это делают? В любой запакованной программе рано или поздно будет переход на OEP (original entry point), который у upx выглядит примерно так: popad jmp oep Ниже идут нули, вместо которых можно вписать наш патч. Правишь в Olly или Hiew jmp oep, на jmp адрес, который находится ниже (в случае upx сразу видна куча add eax,...). Ну то есть прыгаешь 5-6 строчками ниже и пишешь в Хиев например: mov b,[401000],75h jmp oep Согласись такой способ записи байта более понятен. Вот и все. |
|
Создано: 26 августа 2004 05:58 · Личное сообщение · #4 |
|
Создано: 26 августа 2004 08:03 · Личное сообщение · #5 Mafia32 пишет: Не понравилось мне твое объяснение совсем мне твое тоже. Mafia32 пишет: В любой запакованной программе рано или поздно будет переход на OEP это я бы не понял, если бы был начинающим, да и что такое OEP я думаю автор вопроса может не знать. Да и нули не всегда легко найти. Короче трудно помочь начинающему, согласись? Мы с тобой попытались ;) AlexeY Почитай туторов, да побольше, благо их в инете навалом ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 26 августа 2004 08:05 · Личное сообщение · #6 |
|
Создано: 26 августа 2004 10:10 · Личное сообщение · #7 Ну тогда я тож влезу: Есть запакованная программка. Задача: сделать патч. Действия: - распаковать программу, запомнить ОЕР и адрес перехода на ОЕР. - взломать программу. - запомнить адреса смещёний в памяти, по которым находятся команды подлежащие пропатчиванию (с учётом imageBase) - взять запакованую программу, открыть в любом дизассемблере с возможностью редактирования (OllyDbg, HiEW), прейти к месту, где происходит прыжок на ОЕР и перенаправить его туда, где будет располагаться код патча. - дописать код патча, и сделать переход на ОЕР. Сохранить и пользоваться. Советую начать патчить по байту. О dword отдельный разговор, там байты идут в обратном порядке. Понятно? ----- Я медленно снимаю с неё UPX... *FF_User* |
|
Создано: 26 августа 2004 10:33 · Личное сообщение · #8 |
|
Создано: 26 августа 2004 10:52 · Поправил: AlexZ · Личное сообщение · #9 |
|
Создано: 26 августа 2004 12:30 · Личное сообщение · #10 |
|
Создано: 26 августа 2004 12:59 · Личное сообщение · #11 |
|
Создано: 26 августа 2004 15:11 · Личное сообщение · #12 |
|
Создано: 26 августа 2004 16:38 · Личное сообщение · #13 |
|
Создано: 26 августа 2004 16:41 · Личное сообщение · #14 |
|
Создано: 07 января 2007 06:02 · Личное сообщение · #15 |
|
Создано: 07 января 2007 06:13 · Личное сообщение · #16 |
|
Создано: 07 января 2007 06:21 · Личное сообщение · #17 |
eXeL@B —› Основной форум —› In-Line патч |
Эта тема закрыта. Ответы больше не принимаются. |