Сейчас на форуме: rmn (+9 невидимых)

 eXeL@B —› Основной форум —› Снова создание инлайн патчей
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 13 марта 2005 22:12
· Личное сообщение · #1

В продолжение темы создания инлайн патчей предлагаю свою тулзу. Она не создает патч, а патчит экзешник, не изменяя его размера, думаю кому-нибудь пригодится. Поддерживаются UPX - все версии (наверное=)), ASPack - 2.12 only, PECompact 2.x (тоже наверное =)). По поводу PECompact'a - я тестил только на трех файлах, поэтому не могу гарантировать успешной работоспособности, поэтому прошу - у кого есть файлы, упакованные PECompact'ом 2.x, киньте на мыло (в профайле) или приаттачте здесь. Подробнее - в ридми.

817c_bkinline.rar



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

Создано: 20 марта 2005 09:10
· Личное сообщение · #2

Jupiter пишет:
с новой версией никаких проблем с UPX на третьем режиме не обнаружил

Самое интересное, что в новой версии я ничего с этим связанного не изменял =)




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 20 марта 2005 23:47
· Личное сообщение · #3

bkslash
странно, но я сейчас уже тоже не могу повторить ;)
но трабла была: прыжок на oep был неправильным
сейчас всё ok

-----
EnJoy!




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

Создано: 21 марта 2005 21:08
· Личное сообщение · #4

Добавил поддержку nSPack 1.3, не знаю нужно ли кому-нибудь, но вдруг пригодится. Еще появилось лого (спасибо Grim Fandango =)).

c2fe_bkinline.rar




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 26 марта 2005 16:25
· Личное сообщение · #5

Не хвататет возможности выбрать "стартовый" offset для патча,
т.е. чтобы иметь возможность размещать код патча не только в заголовке, но и в произвольном месте файла

к тому же небольшой совет по поводу пропатчивания файлов, слинкованных MS Linker'om:
в каждом файле, созданном майкрософтовским линкером (начиная с ранних версий и заканчивая последними)
существует дополнительная (и избыточная!) информация после PE заголовка, завершающаяся словом Rich
поскольку эта инфа избыточна (по идее, её не должно быть), то можно смело писать поверх неё, не корёжа собственно сам заголовок

-----
EnJoy!





Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 23 ноября 2005 00:13 · Поправил: YDS
· Личное сообщение · #6

Что-то файлы не качаются.



Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 23 ноября 2005 01:29
· Личное сообщение · #7

YDS пишет:
М.б. замылите мне на yarosh_d@mail.ru


Что значит М.б. ???

3e4e_bkinline.rar



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 23 ноября 2005 08:23
· Личное сообщение · #8

может быть




Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 23 ноября 2005 08:29
· Личное сообщение · #9

Thank's



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 18:00
· Личное сообщение · #10

В последних версиях UPX (3.09) при попытке пропатчить код перед прыжком на оеп происходит Access violation, как это дело пролечить ?



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 14 января 2014 18:30
· Личное сообщение · #11

YURETZS пишет:
как это дело пролечить

Вызывать VirtualProtect или всей секции давать права Writeable



Ранг: 431.7 (мудрец), 389thx
Активность: 0.730.32
Статус: Участник

Создано: 14 января 2014 18:34 · Поправил: dosprog
· Личное сообщение · #12

YURETZS,
Похоже, изменять sources.
утилитка красивая, но польза от неё сомнительная. 2005 год же.
Думаю, автор уже сам о ней позабыл. (?)



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 18:51
· Личное сообщение · #13

dosprog
Я утилиту не рассматриваю, инлайн-патч пишу вручную.
Veliant
В импорте запакованной программы есть VirtualProtect и VirtualAlloc, но их вызов запакован, а права Writeable как дать ??
В блоке перед прыжком вызвать VirtualProtect с какими-то определенными параметрами, а как тогда определить RVA запротекченного блока ? он каждый раз разный.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 14 января 2014 19:13
· Личное сообщение · #14

Поменять права на секцию в PE-файле статически?
YURETZS пишет:
он каждый раз разный.

базо-независимый код вставьте, а вообще без жертвы не понятно что вы хотите сделать



Ранг: 431.7 (мудрец), 389thx
Активность: 0.730.32
Статус: Участник

Создано: 14 января 2014 19:18 · Поправил: dosprog
· Личное сообщение · #15

YURETZS,
..В импорте запакованной программы есть VirtualProtect и VirtualAlloc, но их вызов запакован,
-- Ну, уж адреса-то функций LoadLibrary/GetProcAddress есть наверняка.



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 22:19
· Личное сообщение · #16

int
Жертва в аттаче.
Участок кода с патчем:
Code:
  1. .0101B958: 50                            2push         eax
  2. .0101B959: 53                             push         ebx
  3. .0101B95A: BBE98F1D00                     mov          ebx,0001D8FE9 ;' &#8596;Пщ'
  4. .0101B95F: 89D0                           mov          eax,edx
  5. .0101B961: 2D3C880100                     sub          eax,00001883C ;' &#9786;И<'
  6. .0101B966: 8918                           mov          [eax],ebx
  7. .0101B968: 83C002                         add          eax,2
  8. .0101B96B: BB1D000090                     mov          ebx,09000001D ;'Р &#8596;'
  9. .0101B970: 8918                           mov          [eax],ebx
  10. .0101B972: 909090909090909090909090       nop
  11. .0101B97E: 5B                             pop          ebx
  12. .0101B97F: 58                             pop          eax
  13. .0101B980: E98794FEFF                     jmp          001004E0C --X
  14. .0101B985: 9090                           nop


В таком варианте вроде патч проходит, но как-то не стабильно работает и не на всех системах.
Вообще он предназначен для PE-сборки.


151a_14.01.2014_EXELAB.rU.tgz - ERD_Inlined_Final.zip




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 14 января 2014 22:22
· Личное сообщение · #17

> В импорте запакованной программы есть VirtualProtect и VirtualAlloc, но их вызов запакован, а права Writeable как дать ??

Тоесть отложен. Очевидно что и нужно отложить есчо дальше обработку, тоесть заюзать лодер.

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



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 22:37
· Личное сообщение · #18

Dr0p
Dll-ка тут в качестве прицепа, без нее экзешник не запустится.
В принципе первоначально рассматривался вариант перепаковки с патчем инсайд, но как оказалось после штатной распаковки upx -d <имя файла> экзешник валится с непонятной ошибкой типа память не может быть рид.

Защиты в этой проге нет, просто необходимо чуть поменять функционал.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 14 января 2014 22:40
· Личное сообщение · #19

YURETZS

Я не понимаю вашу задачу, а перечитывать весь топ не охота.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 14 января 2014 22:45
· Личное сообщение · #20

YURETZS пишет:
после штатной распаковки upx -d <имя файла> экзешник валится с непонятной ошибкой типа память не может быть рид.

[Overlay]
YURETZS пишет:
Жертва в аттаче.

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



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 22:48
· Личное сообщение · #21

Dr0p
Задача - сделать инлайн-патч модуля, запакованного UPX 3.09
По смещению 01002F14 записать такой код:
.01002F14: E98F1D0000 jmp .001004CA8 --↓C
.01002F19: 90 nop
По началу код вел себя как-то странно, под отладчиком уходило в кернел с сообщением Access Violation.
Но после небольшой модификации - (RVA стал брать из edx) вроде заработало, но уход в кернел всё-же возникает, но уже после того как программа загружена и выполняется, первоначально падало сразу.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 14 января 2014 22:51 · Поправил: Dr0p
· Личное сообщение · #22

YURETZS

Что значит в кернел, синело чтоле

> По смещению 01002F14 записать такой код:

Ну вот я и говорю, чтоб не парится с самозащитой, депаком и прочей хернёй юзаете лодер, выбираете событие когда всё проверено/анпакано и делаете что нужно. Ну или сначало делаете. Короче смысл понятен.



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 22:51
· Личное сообщение · #23

Vovan666
Оригинал.
Глянь пожалуйста, почему он падает после анпака.


6969_14.01.2014_EXELAB.rU.tgz - ERD_Exit_Original_Packed.zip



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 14 января 2014 23:01
· Личное сообщение · #24

http://rghost.ru/51656540

| Сообщение посчитали полезным: YURETZS

Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 23:05
· Личное сообщение · #25

Vovan666
Спасибо огромное, всё работает как надо.
А в чем была проблема штатного анпака (upx -d)



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 14 января 2014 23:07
· Личное сообщение · #26

Я же выше ответил [Overlay]



Ранг: 44.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 января 2014 23:12 · Поправил: YURETZS
· Личное сообщение · #27

Vovan666
Ясно, а как ты его распаковывал, вручную, или есть правильные анпакеры ?

Уже нашел - правильный анпакер зовется "Pe Explorer"

Еще раз спасибо.


<< . 1 . 2 .
 eXeL@B —› Основной форум —› Снова создание инлайн патчей
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати