Сейчас на форуме: _MBK_ (+6 невидимых) |
eXeL@B —› Основной форум —› Easy import finder |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 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] |
|
Создано: 07 апреля 2007 19:28 · Поправил: Hellspawn · Личное сообщение · #2 linhanshi it is only beginning так давайте разберёмся, как определить что перед нами возможный переходник? как я вижу: - адресс принадлежит выделенному региону памяти (тут всё просто, перечисляем все регионы и убирает те в которых нет флага исполнения) - адресс принадлежит "основной" памяти проги, например -> MICROSOF.00421073 тогда, скорее всего перед нами переходник и надо проверять, что по адресу... поправте меня если что не так или бывает по другому... ----- [nice coder and reverser] |
|
Создано: 07 апреля 2007 19:31 · Личное сообщение · #3 |
|
Создано: 07 апреля 2007 19:53 · Личное сообщение · #4 |
|
Создано: 07 апреля 2007 20:04 · Личное сообщение · #5 |
|
Создано: 07 апреля 2007 22:32 · Личное сообщение · #6 Hellspawn пишет: как определить что перед нами возможный переходник для делфи и асма можно сканить на близлежащие jmp[] - если они указывают за пределы файла - значит переходник, аналогично но посложней для си - там переходники вида call[] и (mov reg,addr, call reg) разбросаны, но насколько помнится, в самих прогах коллы в выделенную память встречаются нечасто ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 апреля 2007 22:44 · Личное сообщение · #7 |
|
Создано: 07 апреля 2007 22:52 · Личное сообщение · #8 lord_Phoenix пишет: у нас есть адрес, нам надо узнать - мусор это или адрес переходника Для этого можно просканить секцию кода и проверить джампы и коллы на дворд этого адреса - если нет, значит мусор ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 07 апреля 2007 22:55 · Личное сообщение · #9 |
|
Создано: 08 апреля 2007 08:23 · Личное сообщение · #10 |
|
Создано: 08 апреля 2007 09:20 · Личное сообщение · #11 |
|
Создано: 08 апреля 2007 11:06 · Поправил: Hellspawn · Личное сообщение · #12 lord_Phoenix пишет: у армы афаир были мусорные вызовы мусора они просто указывали в сист библу? или это были валидные функи, которые не оспользовались? и ещё, объясните как работает ArmInline, вводим регион памяти в котором ИАТ + размер, дальше он находит апи в этом промежутке, а как осуществляется редирект? т.е. нам в самой проге надо пропатчить JMP DWORD PTR [XXXXXXXX] или CALL DWORD PTR [XXXXXXXX], а каким образом это лучше всего сделать? ----- [nice coder and reverser] |
|
Создано: 08 апреля 2007 11:32 · Поправил: Smon · Личное сообщение · #13 Hellspawn пишет: дальше он находит апи в этом промежутке, а как осуществляется редирект? т.е. нам в самой проге надо пропатчить JMP DWORD PTR [XXXXXXXX] или CALL DWORD PTR [XXXXXXXX], а каким образом это лучше всего сделать? Smon пишет: Для этого можно просканить секцию кода и проверить джампы и коллы на дворд этого адреса А чтобы всё это работало быстро - просто пишем в табличку все адреса из секции кода, где встретились данные call'ы и jump'ы и сканим по ней ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 08 апреля 2007 11:39 · Личное сообщение · #14 |
|
Создано: 08 апреля 2007 12:10 · Личное сообщение · #15 lord_Phoenix пишет: это были jmp [] которые указывали на "переходники", которые были или бесконечной вермишелькой джампов там были конструкции вида: @3: jump @1 @2: jump @3 @1: jump @2 и мусорные конструкции с вызовом каких то левых апи. Смысл в том, что на эти мусорные вызовы нет ни джампов ни каллов из секции кода - они просто разбавляют основную иат ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels |
|
Создано: 08 апреля 2007 12:45 · Личное сообщение · #16 |
|
Создано: 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 переходник армы =) |
|
Создано: 08 апреля 2007 13:16 · Личное сообщение · #18 |
|
Создано: 08 апреля 2007 13:32 · Поправил: sniperZ · Личное сообщение · #19 |
|
Создано: 08 апреля 2007 15:03 · Личное сообщение · #20 |
|
Создано: 08 апреля 2007 16:06 · Личное сообщение · #21 |
|
Создано: 08 апреля 2007 18:58 · Поправил: Hellspawn · Личное сообщение · #22 да мне то поф для чего писать) ещё один момент... вот встретили адресс аля 00BXXXX <- выделенная память, я что думаю, есть карта памяти, извлекли из неё соотв. регион и прочитали в буфер целиком, или прочитали мал кусочек, проанализировали и если это переходник, то прочитали в буфер весь регион... я и так весь процесс целиком читаю в буфер, так искать легче и быстрее, боюсь слишком много опреативы жрать будет... ----- [nice coder and reverser] |
|
Создано: 09 апреля 2007 17:32 · Личное сообщение · #23 |
|
Создано: 09 апреля 2007 17:39 · Личное сообщение · #24 HoBleen пишет: А если используется антидамп аля Private Exe Protector с надутой нулями секцией? И он не единственный... это всё можно обойти будет... сделаю опции. HoBleen пишет: Имхо лучше читать небольшими блоками 0x1000 - 0x10000 и считывать новые только по мере необходимости. плохой вариант, скорость упадёт в разы + есть возможность проскочить апи, т.к. ищется побайтно. Можно коненчо усложнить алгоритм поиска, но я уже реализовал по другому... Теперь я сканю по блокам памяти процеса скоро выложу переработанный вариант... ----- [nice coder and reverser] |
|
Создано: 09 апреля 2007 19:56 · Поправил: Hellspawn · Личное сообщение · #25 Easy import finder 0.12b hellspawn.nm.ru/works/eif.0.12b.zip [!] Переработан поиск, теперь он идёт по регионам памяти процесса.
----- [nice coder and reverser] |
|
Создано: 10 апреля 2007 08:59 · Личное сообщение · #26 |
|
Создано: 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 |
|
Создано: 10 апреля 2007 13:49 · Личное сообщение · #28 |
|
Создано: 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] если это не восстанавливать то прога работать не будет... это в ранних версиях только колы и джампы редиректились теперь все подряд... |
|
Создано: 10 апреля 2007 16:21 · Личное сообщение · #30 |
|
Создано: 10 апреля 2007 17:14 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Основной форум —› Easy import finder |