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

 eXeL@B —› Основной форум —› Easy import finder
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 05 апреля 2007 18:17 · Поправил: Hellspawn
· Личное сообщение · #1

какое то время назад начал кодить анпакер, в результате были написаны
отладочный двиг + это чудо . На замену импрека не притендует, просто нужно потестить,
ну и может кто захочет довести до ума. Есть проблема с форвардами, но в скором времени я её
утсраню. Pаботать должно почти на всех виндах. (кроме 98/ME - когда процесс нах-ся под
отладкой, из-за создающихся переходников).

- Восстанавливает импорт у простых пакеров.
- Находит размазанный импорт. (когда он разделён больше чем 1 раздилителем)
- Находит смещённый импорт (есть адресса не выровненные по 4 относительно других)

Кому нужны исходники, пишите в личку поделюсь.

Easy import finder 0.10b | by Hellsp@wn

http://hellspawn.nm.ru/works/eif.zip http://hellspawn.nm.ru/works/eif.zip

-----
[nice coder and reverser]





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 апреля 2007 19:28 · Поправил: Hellspawn
· Личное сообщение · #2

linhanshi it is only beginning

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

- адресс принадлежит выделенному региону памяти (тут всё просто, перечисляем все регионы
и убирает те в которых нет флага исполнения)
- адресс принадлежит "основной" памяти проги, например -> MICROSOF.00421073

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

-----
[nice coder and reverser]





Ранг: 133.2 (ветеран), 44thx
Активность: 0.120
Статус: Участник
bbs.pediy.com

Создано: 07 апреля 2007 19:31
· Личное сообщение · #3

lord_Phoenix

leader




Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 07 апреля 2007 19:53
· Личное сообщение · #4

Hellspawn пишет:
тогда, скорее всего перед нами переходник и надо проверять, что по адресу...
поправте меня если что не так или бывает по другому...

по другому не бывает..

-----
Тут не могла быть ваша реклама





Ранг: 133.2 (ветеран), 44thx
Активность: 0.120
Статус: Участник
bbs.pediy.com

Создано: 07 апреля 2007 20:04
· Личное сообщение · #5

In the right forum to express your opinions, thank you .



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 07 апреля 2007 22:32
· Личное сообщение · #6

Hellspawn пишет:
как определить что перед нами возможный переходник

для делфи и асма можно сканить на близлежащие jmp[] - если они указывают за пределы файла - значит переходник, аналогично но посложней для си - там переходники вида call[] и (mov reg,addr, call reg) разбросаны, но насколько помнится, в самих прогах коллы в выделенную память встречаются нечасто

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 07 апреля 2007 22:44
· Личное сообщение · #7

нам не надо искать джампы и т.д. у нас есть адрес, нам надо узнать - мусор это или адрес переходника

-----
Тут не могла быть ваша реклама




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 07 апреля 2007 22:52
· Личное сообщение · #8

lord_Phoenix пишет:
у нас есть адрес, нам надо узнать - мусор это или адрес переходника

Для этого можно просканить секцию кода и проверить джампы и коллы на дворд этого адреса - если нет, значит мусор

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 07 апреля 2007 22:55
· Личное сообщение · #9

у армы афаир были мусорные вызовы мусора

-----
Тут не могла быть ваша реклама





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 08 апреля 2007 08:23
· Личное сообщение · #10

lord_Phoenix
У армы они однообразные, надо добавить отсев по ним.
В других протах вызов мусора что-то не припомню.




Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 08 апреля 2007 09:20
· Личное сообщение · #11

заточка не рулит, надо универсально. так что идеи хелла верны. ну и isbadptr

-----
Тут не могла быть ваша реклама





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 апреля 2007 11:06 · Поправил: Hellspawn
· Личное сообщение · #12

lord_Phoenix пишет:
у армы афаир были мусорные вызовы мусора


они просто указывали в сист библу? или это были валидные функи, которые не оспользовались?

и ещё, объясните как работает ArmInline, вводим регион памяти в котором ИАТ + размер,
дальше он находит апи в этом промежутке, а как осуществляется редирект? т.е. нам в самой
проге надо пропатчить JMP DWORD PTR [XXXXXXXX] или CALL DWORD PTR [XXXXXXXX], а каким
образом это лучше всего сделать?

-----
[nice coder and reverser]




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 08 апреля 2007 11:32 · Поправил: Smon
· Личное сообщение · #13

Hellspawn пишет:
дальше он находит апи в этом промежутке, а как осуществляется редирект? т.е. нам в самой
проге надо пропатчить JMP DWORD PTR [XXXXXXXX] или CALL DWORD PTR [XXXXXXXX], а каким
образом это лучше всего сделать?


Smon пишет:
Для этого можно просканить секцию кода и проверить джампы и коллы на дворд этого адреса


А чтобы всё это работало быстро - просто пишем в табличку все адреса из секции кода, где встретились данные call'ы и jump'ы и сканим по ней

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 08 апреля 2007 11:39
· Личное сообщение · #14

Hellspawn пишет:
они просто указывали в сист библу? или это были валидные функи, которые не оспользовались?

это были jmp [] которые указывали на "переходники", которые были или бесконечной вермишелькой джампов или просто мусором

-----
Тут не могла быть ваша реклама




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 08 апреля 2007 12:10
· Личное сообщение · #15

lord_Phoenix пишет:
это были jmp [] которые указывали на "переходники", которые были или бесконечной вермишелькой джампов

там были конструкции вида:

@3: jump @1
@2: jump @3
@1: jump @2

и мусорные конструкции с вызовом каких то левых апи.

Смысл в том, что на эти мусорные вызовы нет ни джампов ни каллов из секции кода - они просто разбавляют основную иат

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 08 апреля 2007 12:45
· Личное сообщение · #16

Smon
и все таки нам не надо искать адреса..нам надо просто узнать - мусор это или адрес переходника, и если да, то попробовать восстановить

-----
Тут не могла быть ваша реклама




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 08 апреля 2007 12:48
· Личное сообщение · #17

Hellspawn пишет:
они просто указывали в сист библу? или это были валидные функи, которые не оспользовались?

003C9F63 push ebp
003C9F64 mov ebp,esp
003C9F66 push 0
003C9F68 call [3E5118] // = ntdll.dll/0306/RtlRestoreLastWin32Error
003C9F6E push dword ptr [ebp+18]
003C9F71 push dword ptr [ebp+14]
003C9F74 push dword ptr [ebp+10]
003C9F77 push dword ptr [ebp+C]
003C9F7A push dword ptr [ebp+8]
003C9F7D call [3E52CC] // = user32.dll/0056/CreateDialogParamA
003C9F83 pop ebp
003C9F84 retn 14

переходник армы =)




Ранг: 353.0 (мудрец)
Активность: 0.370
Статус: Участник
resreveR

Создано: 08 апреля 2007 13:16
· Личное сообщение · #18

sniperZ
мы не о том.. что ты привел - стандарт у армы, антиимпрек-трейсер..

-----
Тут не могла быть ваша реклама




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 08 апреля 2007 13:32 · Поправил: sniperZ
· Личное сообщение · #19

lord_Phoenix пишет:
мы не о том.. что ты привел - стандарт у армы, антиимпрек-трейсер..

привел для т0г0, чтоб он не стал анти-Easy import finder трейсер...
HoBleen пишет:
В других протах вызов мусора что-то не припомню.

были, были. ща не помню где, но видел. вспомню - скажу.



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 08 апреля 2007 15:03
· Личное сообщение · #20

Hellspawn
А чего вдруг за арму зацепились? Отполировал бы технологию на простых переходниках с банальным ксором а там бы и дальше смотреть куда идти ....



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 08 апреля 2007 16:06
· Личное сообщение · #21

pavka пишет:
Отполировал бы технологию на простых переходниках с банальным ксором

аля ацпротект...




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 апреля 2007 18:58 · Поправил: Hellspawn
· Личное сообщение · #22

да мне то поф для чего писать) ещё один момент...
вот встретили адресс аля 00BXXXX <- выделенная память, я что думаю,
есть карта памяти, извлекли из неё соотв. регион и прочитали в буфер целиком, или
прочитали мал кусочек, проанализировали и если это переходник, то прочитали в буфер
весь регион...

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

-----
[nice coder and reverser]





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 09 апреля 2007 17:32
· Личное сообщение · #23

Hellspawn пишет:
я и так весь процесс целиком читаю в буфер

А если используется антидамп аля Private Exe Protector с надутой нулями секцией? И он не единственный...

Имхо лучше читать небольшими блоками 0x1000 - 0x10000 и считывать новые только по мере необходимости.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 09 апреля 2007 17:39
· Личное сообщение · #24

HoBleen пишет:
А если используется антидамп аля Private Exe Protector с надутой нулями секцией? И он не единственный...


это всё можно обойти будет... сделаю опции.

HoBleen пишет:
Имхо лучше читать небольшими блоками 0x1000 - 0x10000 и считывать новые только по мере необходимости.


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

-----
[nice coder and reverser]





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 09 апреля 2007 19:56 · Поправил: Hellspawn
· Личное сообщение · #25

Easy import finder 0.12b

hellspawn.nm.ru/works/eif.0.12b.zip

[!] Переработан поиск, теперь он идёт по регионам памяти процесса.
[!] Добавлена опция "Import redirected".
[!] Добавлен поиск переходников JMP XXXXXXXX -> JMP IAT (Petite 2.x).
[!] Немного оптимизирован движок.


-----
[nice coder and reverser]




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

Создано: 10 апреля 2007 08:59
· Личное сообщение · #26

@Hellspawn

еще насчет армы и ИАТ эллима: там не только колы и джампы используются. есть строки вида
mov eax,dword ptr ds:[xxxxxx]
call eax
также есть и другие вещи подобного типа! например
xor eax,dword ptr ds:[xxxxxx]
ну и так далее...




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

Создано: 10 апреля 2007 09:30 · Поправил: Shidla
· Личное сообщение · #27

Hellspawn, при попытке повторного полуения импорта выдал " Access violation at address 0048BFD5 in module 'eif.exe'. Read of address 76B2136C. "
После перезапуска, при попытке прикрутить импорт, выдал " Access violation at address 00402CB5 in module 'eif.exe'. Write of address 56CC6547. "
После 2-го дубля " Access violation at address 004195D9 in module 'eif.exe'. Read of address 00000018. "

А вообще за идею +5
P.S.: файл был упакован FSG



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 10 апреля 2007 13:49
· Личное сообщение · #28

Hill пишет:
используются. есть строки вида
mov eax,dword ptr ds:[xxxxxx]
call eax
также есть и другие вещи подобного типа! например
xor eax,dword ptr ds:[xxxxxx]

кроме армы полным полно такой адресации



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

Создано: 10 апреля 2007 14:28
· Личное сообщение · #29

pavka пишет:
кроме армы полным полно такой адресации


здесь имеется ввиду к примеру
call dword ptr ds: [c9d454]

mov eax, dword ptr ds: [c9d46e]
call eax

xor eax,dword ptr ds:[c9d511]

если это не восстанавливать то прога работать не будет... это в ранних версиях только колы и джампы редиректились теперь все подряд...




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 10 апреля 2007 16:21
· Личное сообщение · #30

=Shidla пишет:
P.S.: файл был упакован FSG


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

Hill пишет:
call dword ptr ds: [c9d454]
mov eax, dword ptr ds: [c9d46e]
call eax
xor eax,dword ptr ds:[c9d511]


это импорт?

-----
[nice coder and reverser]




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 10 апреля 2007 17:14
· Личное сообщение · #31

Hill пишет:
если это не восстанавливать то прога работать не будет... это в ранних версиях только колы и джампы редиректились теперь все подряд...

Такие вещи обходятся восстановлением оригинальной таблички, к сейчас этим заморачиваться ?


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


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