![]() |
eXeL@B —› Вопросы новичков —› Неизвестный упаковщик? |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 21 сентября 2007 12:09 · Поправил: ivans77 · Личное сообщение · #1 Всем привет! Наконец то решил пост сделать, когда совсем приперло.. Ситуация такая.. Сестре на mail свалился очередной вирь.. Ну благополучно запустила.. В итоге я вычищал ей комп Каспером и руками с некоторым софтом, нашел как обычно кучу хлама, а также один странный файл. Почему я на него обратил внимание.. У меня в наборе утилит разных была тулза от китайских товарищей под названием XSniffer. Так вот тот файл назывался точно также.. Я его забрал и запихнул в VMWare . Запустил его.. И чудо -информация в консоли такая же как и при запуске обычного XSniffer-a... НО! Разница в том что один весит 27 кил (который странный) а обычный - 44 кила. Я попытался запихнуть старнный файл в OllyDbg, а та радует меня: "Module 'xsniffer.exe' has entry point outside the code....." Я нажимаю Ok и прохожу таки туда.. IDA также ругается при попытке просмотра данного файла, говоря о том что он типа видимо чем то упакован. Я уже неделю пытаюсь выделить упаковщик, но ничего не получается.. Читал статьи на cracklab.ru Но пока все равно не очень помогает.. Может кто попробует расковырять заразу? Просто интересно узнать на что я нарвался. Оба файла прикладываю в архиве <img src="img/attach.gif"> <SCRIPT type=text/javascript>dfl("files/","4750_21.09.2007_CRACKLAB.rU.tgz");< /SCRIPT> - Arch-strange.zip ![]() |
|
Создано: 21 сентября 2007 12:53 · Личное сообщение · #2 |
|
Создано: 21 сентября 2007 14:19 · Личное сообщение · #3 |
|
Создано: 21 сентября 2007 14:35 · Личное сообщение · #4 М-да, аттач как странное себя ведет.. Сейчас.. Что касается PEiD и Qunpack - делал ими, причем с актуальными сигнатурами ... Ничего не показывают.. 15:38:27 - Opened xsniff.exe Quick self analyze.... unknown PESniffer EP Scan: Unknown PEiD scanning... Nothing found * ![]() ![]() |
|
Создано: 21 сентября 2007 14:55 · Личное сообщение · #5 |
|
Создано: 21 сентября 2007 14:59 · Поправил: ivans77 · Личное сообщение · #6 pavka пишет: UPX обработаный какой то дрянью ;)Зачем тебе анализаторы открой в HIEW да посмотри это самый лучший анализатор Не понял идеи.. И чем мне поможет HEIW ? Открывал во FlexHEX только толку то что? Мне хотелось разобраться как снять такую заразу.. И покаким признакам ты определил что это измененный UPX? ![]() Тьфу блин! Точно гуру! Ещё раз сам открыл во FlexHex и все увидел! Сорри!!! ![]() Только тогда все равно остаются вопросы - почему его анализаторы не видят? И как тогда снять таки упаковку? Имеющиеся средства не идентифицируют его как UPX и применение Unpacker-ов для UPX не дает результатов ![]() ![]() |
|
Создано: 21 сентября 2007 15:24 · Личное сообщение · #7 |
|
Создано: 21 сентября 2007 15:26 · Личное сообщение · #8 |
|
Создано: 21 сентября 2007 15:42 · Личное сообщение · #9 |
|
Создано: 21 сентября 2007 15:59 · Поправил: ivans77 · Личное сообщение · #10 Кажется нашел, причем сильно напоминающее то что у меня имеется... Вот в этой статье: [url=Распаковка UPX-Scrambler - нет ничего проще]--> http://www.exelab.ru/art/?action=view&id=366 <--[/url] Только объясните мне чайнику, что за слова там такие: "... Для начала найдём OEP, здесь не будем придумывать ничего нового, а просто в отладчике поставим бряк: hr esp-4 ... " hardware breakpoint я ставил - только то ли это - не пойму ? и в каком месте нужно ставить? И с этим вроде тоже разобрался. Стоя на начале посмотрел то что в ESP, Нашел его в стеке и сметился на 4. После чего сделал Follow in Dump для ентого элемента, и там поставил Hardware breakpoint на чтение для DWORD. После этого запустил c помощью F9. Несколько раз сделал шаги, в том числе попадая и на POPAD.. А потом в итоге встал намертво и OllyDbg говорит о какой то ошибке.. Я так понимаю что мне нужно внимательно смотреть шаг перед тем как прога умирает? ![]() |
|
Создано: 21 сентября 2007 18:45 · Личное сообщение · #11 |
|
Создано: 21 сентября 2007 19:43 · Личное сообщение · #12 |
|
Создано: 21 сентября 2007 21:32 · Личное сообщение · #13 |
|
Создано: 22 сентября 2007 01:28 · Личное сообщение · #14 |
|
Создано: 22 сентября 2007 11:29 · Личное сообщение · #15 |
|
Создано: 22 сентября 2007 12:48 · Личное сообщение · #16 ivans77 да поищи ты по форуму в новичках про распаковку upx или других несложных пакеров. ей богу як дитё. ivans77 пишет: hardware breakpoint я ставил - только то ли это - не пойму ? и в каком месте нужно ставить? а такие вещи в распаковке надо просто знать. Распаковка: от самого простого к чуть более сложному - в статьях. читай ----- Я ещё не волшебник, я только учусь... ![]() |
|
Создано: 22 сентября 2007 13:16 · Личное сообщение · #17 Assass1n пишет: да поищи ты по форуму в новичках про распаковку upx или других несложных пакеров. ей богу як дитё. ivans77 пишет: hardware breakpoint я ставил - только то ли это - не пойму ? и в каком месте нужно ставить? а такие вещи в распаковке надо просто знать. Распаковка: от самого простого к чуть более сложному - в статьях. читай Если ты бы внимательно прочитал что написано ниже в том посте то увидел что я там разобрался. Далее, у меня нет привычки писать на форумах по подобной тематике не порывшись по ним - если я написал вопрос и прошу объяснить значит мне реально не хватило информации. P.S: я читал про распаковку UPX но мне сие не очень сильно помогло .. И если честно я не совсем понимаю в чем сложность ОБЪЯСНИТЬ ? Почему если у кого-то знания выше, то считается ниже своего достоинства рассказывать более подробно тем кто только учиться? ![]() |
|
Создано: 22 сентября 2007 14:50 · Личное сообщение · #18 ivans77 UPX распаковать очень просто (если он не модифицированный и не скремблирован). Загружаешь файл в Ольку и прокручиваешь вниз (буквально несколько экранов) до пустого места кода, заполненного нулями. Перед ним будут две инструкции POPAD
,
где xxxxxxxx - адрес перехода на OEP. Примерно так. ![]() ----- Программист SkyNet ![]() |
|
Создано: 22 сентября 2007 15:04 · Личное сообщение · #19 Дело в том что я писал выше - он не идентифицируется никакими средставми как UPX. Как мне сказали выше - это измененный UPX, т.е модифицированный! Я сам увидел что енто UPX лишь когда открыл файл во FlexHex и там увидел запись.. Тот пример что ты привел - я о нем читал и первоначально когда изучал этот файл именно такую связь и искал, о чем читал выше. Такой связи не было найдено. Далее я нашел ещё здесь одну статью (ссылка написана выше в одном из моих постов в этой теме)... Так вот там как раз очень похожая на мою ситуацию: "...Как видите, вместо pushad, которые так свойственны upx, первой инструкцией является popad. Код явно нетипичный для upx. ..." у меня именно так .. Дальше начал разбираться так как в статье написано... Но в итоге увы не получилось.. у меня.. А ReZiDenT_USSR успешно снял пакер... Только вот как он добрался до OEP = я никак не могу разобраться.. ![]() |
|
Создано: 22 сентября 2007 15:07 · Личное сообщение · #20 OEP нашлось довольно просто. Т.К. прога на С++ то одной из первых вызываемых API является GetVersion. Поставил бряк на начало функции, первый же вызов 00403bf3 был из секции кода проги. Вышел из GetVersion, 00403BEA . 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP 00403BED ? FF15 58804000 CALL DWORD PTR DS:[408058] ; kernel32.GetVersion 00403BF3 ? 33D2 XOR EDX,EDX чуть выше увидел OEP 00403BC7 ? 55 PUSH EBP 00403BC8 . 8BEC MOV EBP,ESP 00403BCA . 6A FF PUSH -1 00403BCC . 68 38814000 PUSH 00408138 Далее перезапустил программу в отладчике и посмотрел, что до старта находиться в секции кода(00401000-00407fff). Там находился мусор и нули. Поставил memory breakpoin on write, остановился здесь (вроде бы происходит затирание мусора нулями) 004141F3 8826 MOV BYTE PTR DS:[ESI],AH 004141F5 46 INC ESI 004141F6 49 DEC ECX и просто зажал клавишу F9. Оказался тут 003200E1 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[> 003200E3 5E POP ESI 003200E4 53 PUSH EBX аналогично клавиша F9, оказался тут(запись раскриптованого кода в секцию) 0033005E F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 00330060 5F POP EDI 00330061 83C7 28 ADD EDI,28 также зажал клавишу F9 , подожда пока в ecx останется 40, поставил memory breakpoint on access на секцию кода и оказался на oep.С дампил, прикрутил импорт, всё. ![]() |
|
Создано: 22 сентября 2007 15:09 · Личное сообщение · #21 |
|
Создано: 22 сентября 2007 18:57 · Личное сообщение · #22 ivans77 пишет: Дело в том что я писал выше - он не идентифицируется никакими средставми как UPX. Как мне сказали выше - это измененный UPX, т.е модифицированный! Дело в том, что мне не скачать было. ![]() Но даже если есть модифицированный UPX, то это не намного усложняет задачу. В основном, просто добавляют несколько инструкций/криптуют код, чтобы нельзя было снять на автомате. Может еще и антидамп прикрутят, что не очень-то помогает. Но добраться до OEP в случае с UPX все равно очень просто. Так что слей файл на нормальный файлообменник, например на рапиду, тогда я может и напишу подробнее... ----- Программист SkyNet ![]() |
|
Создано: 22 сентября 2007 19:08 · Личное сообщение · #23 |
|
Создано: 23 сентября 2007 01:50 · Личное сообщение · #24 ReZiDenT_USSR как я понял: После бряка на GetVersion мы тут 7C4FEB3A > 64:A1 18000000 MOV EAX,DWORD PTR FS:[18] Возврат в прогу по ALT+F9 00403BF3 ? 33D2 XOR EDX,EDX Смотри выше выше 00403BC7 ? 55 PUSH EBP ..Кажется прога написана на делфи... ReZiDenT_USSR пишет: Далее перезапустил программу в отладчике и посмотрел, что до старта находиться в секции кода(00401000-00407fff). 00401000 - это адрес первой секции, которая без названия. А почему ставим бряк именно на 00401000-00407FF0 ? (может это и есть вся первая секция) Кстати, как поставить бряк на секцию из командной строки? а тоя мучаюсь и выделяю адреса вручную... ![]() |
|
Создано: 23 сентября 2007 02:43 · Поправил: Assass1n · Личное сообщение · #25 |
|
Создано: 23 сентября 2007 16:21 · Поправил: ivans77 · Личное сообщение · #26 ReZiDenT_USSR пишет: Далее перезапустил программу в отладчике и посмотрел, что до старта находиться в секции кода(00401000-00407fff). Там находился мусор и нули. Поставил memory breakpoin on write, остановился здесь (вроде бы происходит затирание мусора нулями) 004141F3 8826 MOV BYTE PTR DS:[ESI],AH 004141F5 46 INC ESI 004141F6 49 DEC ECX и просто зажал клавишу F9. Оказался тут 003200E1 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[> 003200E3 5E POP ESI 003200E4 53 PUSH EBX аналогично клавиша F9, оказался тут(запись раскриптованого кода в секцию) 0033005E F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] 00330060 5F POP EDI 00330061 83C7 28 ADD EDI,28 Cнова привет! Опять заморочки у меня.. когда пытался разобраться что и как: итак, сначала я иду полностью также как и ReZiDenT_USSR : 1) после загрузки модуля, вызвал View->Memory и поставил Memory breakpoint on write 2) нажал F9 и благополучно попал туда, куда и говорил ReZiDenT_USSR: 004141F3 8826 MOV BYTE PTR DS:[ESI],AH 004141F5 46 INC ESI 004141F6 49 DEC ECX 3) после чего зажал F9, и благополучно прокрутившись попал в области памяти, вот на это место: 003300E1 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[> 003300E3 5E POP ESI 003300E4 53 PUSH EBX 003300E5 68 00800000 PUSH 8000 - как видно, все тоже самое что и у ReZiDenT_USSR, разница только в адресе памяти .. 4) также держу F9 и прокрутившись.... Вообщем попадаю совсем не туда... 0040C027 AD LODS DWORD PTR DS:[ESI] 0040C028 CD 20 INT 20 0040C02A 83C4 20 ADD ESP,20 и в Statusbar-e пишет "Access violation when reading (00000000)-please ...." и все... p.s: спасибо Assass1n-у, он все объяснил ![]() ![]() |
|
Создано: 23 сентября 2007 22:57 · Личное сообщение · #27 Assass1n пишет: набираем в комманд баре d 00403BC7, выделяем байт по вышеуказанному адресу и ставим бряк на экзекушан Да, так действительно намного проще. ivans77 пишет: Вообщем попадаю совсем не туда Отладчик тормозиться на экзепшене, у меня такие настройки см.аттач точка останова на GetVersion ctrl+g в появившемся окне вводишь GetVersion и оказываешься на начале этой функции ставишь бряк на первые байты. Mavlyudov пишет: как поставить бряк на секцию из командной строки? MW expression1 ,expression2 memory breakpoint on write MR expression1 ,expression2 memory breakpoint on access ![]() ![]() |
|
Создано: 24 сентября 2007 20:46 · Личное сообщение · #28 ivans77 пишет: и в Statusbar-e пишет "Access violation when reading (00000000)-please ...." Надо поставить галку у ексепшна "Memory access violation". Это единственный анти-отладочный прием использовавшийся здесь. Проверил на оригинальной Ольке. ![]() В принципе, если еще актуально, то могу флеху заснять. ----- Программист SkyNet ![]() |
|
Создано: 01 октября 2007 16:40 · Поправил: ivans77 · Личное сообщение · #29 Всем привет! Народ, снов нужна помощь! Вот какая проблема - пробую снять с очередного файла упаковщик (примерно похож на тот что я здесь указывал).. Но есть проблема.. Когда пробовал ставить бряк на GetVersion (исследуемый файла написан (как говорит Die) на MS VC++) то пролетал мимо.. Когда я нашел похожий аналог, не упакованный (как и в данном случае) то оказалось что в функции Start вместо GetVersion используется GetVersionEx. Однако Gtrl+G и ввод туда GetVersionEx заканчивалось плачевно.. Типа нет ничего такого.. Пробовал и другие - типа GetModuleHandle и GetCoomandLine (они также идут до вызова функции main(...)) - также меня программа посылала... Подскажите, как в такой ситуации быть ? ![]() P.S:Тьфу сорри, дурацкий вопрос = сам разобрался.. GetVerisonExA и W.. но почему то все равно блин я не возвращюсь в код программы. ![]() ![]() P.S: Попробую уточнить.. Итак, если в предыдущих файлах использовался вызов GetVersion - То все было нормально. действительно ставили бряк на GetVersion и проходили её и вываливались в код, где рядом было OEP. Сейчас у нас идет вызов GetVersionEx. Я поставил бряк на GetVersionExA, внутри которого вызывается GetVersionExW. Попадаю туда успешно, но после retrun из этой функции я оказываюсь внутри MSVCRT.. и далее я кручусь там.. попасть в тело у меня никак не получается.. В какой то момент работа заканичивается и в StatusBar OllyDbg у меня имеется запись: "Process terminates. Exit code 0" - я так понимаю, что программа закончила свою работу. Подскажите все таки плиз = как мне найти OEP??? ![]() ![]() |
|
Создано: 01 октября 2007 22:26 · Личное сообщение · #30 Решил таки все таки прикрепить файл. Может кто попробует. Если получиться - то плиз подскажите как искать OEP в такой ситуации! Очень буду признателен. P.S: файл вроде не вирус ![]() ![]() ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Неизвестный упаковщик? |