Сейчас на форуме: -Sanchez- (+7 невидимых) |
eXeL@B —› Основной форум —› Реверсинг под Linux |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
Посл.ответ | Сообщение |
|
Создано: 18 февраля 2014 21:54 · Поправил: ARCHANGEL · Личное сообщение · #1 Уважаемые форумчане. Знаю, что данный ресурс создавался для обсуждения тем, связанных с ОС Windows. Но ведь есть уже разделы по андроиду, по flash, по дотнету. Эти все темы не совсем связаны с Windows, точнее сказать, весьма далеки от исследования нативных приложений под винду, поэтому мне кажется логичным обсуждение ос семейства Linux. Так исторически сложилось, что мне приходится тратить некоторое время на изучение этой темы, а изучать-то и нечего. Есть литература по администрированию Linux, но вот хорошей добротной (и свежей) инфы по линуксу практически нет. Есть мысли разделить найденный материал на несколько категорий, т.к. благодаря людям с форума и гуглу появилась хоть какая-то инфа. Настройка рабочей среды Подраздел охватывает темы, прямо или косвенно связанные с установкой, настройкой и подготовкой к работе ОС Linux. Введение в устройство ОС Подраздел в общем и целом, без низкоуровневых деталей и кода, описывает устройство ОС. Поверхносто, но нужно для общего представления. Программирование Подраздел посвящён системному программированию под Linux. Статьи по реверсингу 2002-2004 год: Другие статьи: Разное Касперски ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: VodoleY, OnLyOnE, Carpe DiEm, hors, ELF_7719116, =TS=, verdizela, Tony_Stark, mak, anonymous, synthetic, rd111 |
|
Создано: 21 апреля 2014 01:58 · Личное сообщение · #2 |
|
Создано: 21 апреля 2014 14:45 · Личное сообщение · #3 |
|
Создано: 05 мая 2014 20:04 · Личное сообщение · #4 |
|
Создано: 06 мая 2014 08:35 · Личное сообщение · #5 |
|
Создано: 07 мая 2014 16:10 · Поправил: tux1-1 · Личное сообщение · #6 ARCHANGEL пишет: В общем, возник вопрос. Есть ли какой-то годный фронт энд для gdb с поддержкой питона? GDB поддерживает python из коробки (если собирать с поддержкой python`a естественно). Т.е. достаточно найти просто удобный фронтенд для RE с возможностью использования командной строки GDB, но я таковых не видел. Есть только навороченные gdbinit файлы: |
|
Создано: 07 мая 2014 16:35 · Личное сообщение · #7 |
|
Создано: 07 мая 2014 18:34 · Поправил: tux1-1 · Личное сообщение · #8 ARCHANGEL ARCHANGEL пишет: Где можно почитать про сборку именно с поддержкой питона? Я нигде более-менее полного туториала не встречал. Все собирается стандартно ./configure make GDB сбилдится автоматически с поддержкой python, если в систем установлен пакет python-dev (для python2) или python3-dev (для python 3). Можно сбилдить принудительно, указав путь к python'у с помощью опции --with-python=/path/to/python Ну и у ./configure есть help ./configure --help GDB 7.7, который в репозиториях Ubuntu 14.04, поддерживает python3 из коробки. Проверить это очень просто: запустить GDB и выполнить py print("hello"), если выполнилось, то python присутствует. Документация по API Запустить скрипт можно командой source script.py из gdb. PS: С Android NDK поставляется древняя версия без поддержки python. PPS: |
|
Создано: 08 мая 2014 15:53 · Поправил: ARCHANGEL · Личное сообщение · #9 |
|
Создано: 08 мая 2014 16:05 · Личное сообщение · #10 |
|
Создано: 08 мая 2014 23:07 · Личное сообщение · #11 reversecode В целом для меня всё в линуксе работает следующим образом. Есть некий configure, но не всегда. Либо он создаёт makefile, либо этот файл уже есть. И если повезёт, то оно соберётся по настройкам makefile'a. Если нет, то придётся доставлять кучу пакетов, прописывать кучу параметров, причём на каждой версии линукса, на каждом дистрибутиве это всё может выглядеть по-разному. И нет никакой системы, как в общем собрать софт. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 08 мая 2014 23:17 · Поправил: reversecode · Личное сообщение · #12 если есть configure то должен быть и configure.in .ac, это общий шаблон всегда должен быть когда есть confingure.in но нет configure, значит нужно запустить automake или boostrap которые создадут configure а уже configure создаст makefile-ы созданный configure очень закрученный shell иногда сложно понять как работает, поэтому проще логику работы смотреть в шаблон configure.in свою работу, проверки итд configure пишет в файл config.log по нём можно точнее понять что где как проверялось и почему не прошло, если мало инфы то смотреть в configure.in когда нет configure и есть makefile, это простые системы сборки, чаще стандартные или самописные еще есть cmake скрипты итд, но это уже др тема | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 09 мая 2014 01:20 · Личное сообщение · #13 |
|
Создано: 09 мая 2014 20:17 · Личное сообщение · #14 Carpe DiEm пишет: Вчера прочитал новость об уж доступном переводе второго издания : " Linux. Системное программирование" www.piter.com/product/linux-sistemnoe-programmirovanie-2-e-izd первая была ещё в 08 году и давно не актуальна . Из-за странной ценовой политики стоимость печатной и электронной 464 рубля кто желает получить себе эту книгу к тому же в два раза дешевле - пишите контакты для связи в личку, жаба задавила за пдф почти 500 рублей платить, может будет ещё один желающий? |
|
Создано: 08 июня 2014 06:51 · Личное сообщение · #15 |
|
Создано: 10 июня 2014 10:40 · Личное сообщение · #16 |
|
Создано: 14 июня 2014 10:11 · Личное сообщение · #17 |
|
Создано: 14 июня 2014 19:50 · Личное сообщение · #18 |
|
Создано: 15 июня 2014 15:29 · Личное сообщение · #19 ARCHANGEL Связку gdbserver + Ida попробовал в первый раз. Сначала опробовал Без виртуалки и мануалов запустилась Ida 6.1 под Wine (а потом и Ida 6.5 fixed demo под Wine) + gdbserver: 1. В терминале: gdbserver localhost:23946 main 2. В Ida под Wine: debuggers >> attatch >> Remote GDB 3. Готово: $ gdbserver localhost:23946 main Process main created; pid = 5298 Listening on port 23946 Remote debugging from host 127.0.0.1 Hello1 Hello2 Hello3 Child exited with status 0 readchar: Got EOF Remote side has terminated connection. GDBserver will reopen the connection. Listening on port 23946 Есть только пара вопросов: 1. Чтобы заново начать отлаживать программу мне приходится: а) Закрыть терминал / убить gdbserver и снова вбивать gdbserver localhost:23946 main б) А потом в Ida: Debugger - Attach to process... Можно ли сказать gdbserver-у, чтобы он перезапускал процесс по достижении EOF? 2. Появление строк "Hello*" происходит только при достижении EOF (или окончании отладки), т.е. в момент отладки я не вижу этих сообщений. Можно ли во время отладки при использовании Remote GDB увидеть в Ida строки выводимые с помощью printf-ов? |
|
Создано: 15 июня 2014 19:42 · Личное сообщение · #20 fm8f Можно ли сказать gdbserver-у, чтобы он перезапускал процесс по достижении EOF? По поводу закрытыя терминала и убийства gdbserver, то можно делать не так. У меня такая же проблема, но я открываю другое окно терминала, и в нём выполняю: kill -9 `pidof gdbserver`; gdbserver :5000 debugee Более удобные способы мне неизвестны. Можно ли во время отладки при использовании Remote GDB увидеть в Ida строки выводимые с помощью printf-ов? В иде - нет, а вот в консоли (терминале), в которой крутится gdbserver у меня сообщения появляются во время отладки. ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: fm8f |
|
Создано: 13 июля 2014 16:02 · Личное сообщение · #21 ARCHANGEL, спасибо! Но у меня еще есть вопросы. Нашел библиотеку (so-файл во вложении), а он чем-то запакован или как-то изменен. При этом IDA на него ругается: SHT table size or offset is invalid. Continue? но обрабатывает и я вижу интересующие функции, а вот при использовании ltrace она вообще все портит: ltrace ./mygame posix_memalign(0xff9817f0, 16, 8, 1) = 0 fread(0xa042b78, 1, 2310, 0xa042a10) = 2310 fclose(0xa042a10) = 0 Couldn't find .dynsym or .dynstr in "./libsteam_api.so" Не подскажешь, как ее можно распаковать или исправить? reversecode пишет: grep myprog /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done reversecode, не совсем понимаю первую команду. Подразумевается, что это bash-скрипт, который на вход получает PID процесса, запущенного программой myprog? Можно ли этим способом сдампить so-файл? 3859_13.07.2014_EXELAB.rU.tgz - libsteam_api.so |
|
Создано: 13 июля 2014 16:20 · Личное сообщение · #22 она сама себя запакована, там в ентри поинте пакер ну так под идой запускаешь прогу и после отработки библиотеки адресса куда она загружена она будет распакована она в памяти уже распакованая лежит Добавлено спустя 1 минуту да баш скрипт дампит адреса памяти. поскольку в них уже все загружено и паспаковано либы тоже можно дампить | Сообщение посчитали полезным: fm8f |
|
Создано: 13 июля 2014 23:11 · Поправил: fm8f · Личное сообщение · #23 reversecode, спасибо за помощь! Написал тестовую программу main, который использует тестовую libctest.so. bin$ grep libctest.so /proc/1914/maps f7736000-f7737000 r-xp 00000000 08:02 266549 /path/to/libctest.so f7737000-f7738000 r--p 00000000 08:02 266549 /path/to/libctest.so f7738000-f7739000 rw-p 00001000 08:02 266549 /path/to/libctest.so Закинул твой скрипт в файл dump.sh и выполнил: bin$ sudo ./dump.sh 1914 0xf773b425 in __kernel_vsyscall () 0xf773b425 in __kernel_vsyscall () 0xf773b425 in __kernel_vsyscall () На выходе получил 3 файла: bin$ file 1914-f773* 1914-f7736000-f7737000.dump: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 1914-f7737000-f7738000.dump: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 1914-f7738000-f7739000.dump: data Но ни один из них не является полным so-файлом. По крайней мере, если выкинуть оригинальный libctest.so и попытаться взять любой из дампов, то прога не заработает. Вываливается с ошибкой "Ошибка шины (сделан дамп памяти)". Их нужно как-то объединить? Во вложении исходники простейшей программы main и тестовой библиотеки libctest.so на С++, собранные бинарники и сдампленные файлы. 192a_13.07.2014_EXELAB.rU.tgz - libctest.tar.xz |
|
Создано: 13 июля 2014 23:20 · Личное сообщение · #24 |
|
Создано: 13 июля 2014 23:42 · Поправил: fm8f · Личное сообщение · #25 Я программист без опыта реверса и взлома. Основной системой давно стоит Linux и под Windows я ничего не дампил. Тогда вопрос меняется, можно ли libsteam_api.so как-то распаковать и получить работающий ельф? Есть ли подобный функционал в IDA или плагинах к нему? Или может быть есть средства, с помощью которых можно отследить вызовы процедур из запакованного libsteam_api.so? Я бы для этого использовал ltrace, но он ругается: Couldn't find .dynsym or .dynstr in "./libsteam_api.so" |
|
Создано: 14 июля 2014 12:16 · Личное сообщение · #26 fm8f пишет: Тогда вопрос меняется, можно ли libsteam_api.so как-то распаковать и получить работающий ельф? Можно. Распакованный файл: ----- http://ntinfo.biz | Сообщение посчитали полезным: fm8f |
|
Создано: 14 июля 2014 20:02 · Поправил: fm8f · Личное сообщение · #27 |
|
Создано: 23 июля 2014 22:56 · Личное сообщение · #28 Есть образ фрибсд с зашифрованным разделом. Нужно отладить его расшифровку. В ядре я вроде бы нашел нужные адреса. Но вопрос как остановится на нужном адресе или на точке входа в kernel. Я попробовал отладку через ida + bochs. После mbr управление теряется, не удается нормально поставить точку останова. Кто-нибудь сталкивался с подобной задачей? |
|
Создано: 23 июля 2014 23:05 · Личное сообщение · #29 при работе с бошем есть два варианта, первый бош работает как емулятор cpu и привелегированые инструкции как и многое другое может не выполнятся или выполнятся не так как надо и другой вариант, когда ида цепляется как отладчик, тогда можно хоть всю ось отлаживать, что бы уточнить, если запустить без точек останова из под иды, работает ли образ ос полноценно? как вариант конечно может баг и имел место но уже давно исправили |
|
Создано: 23 июля 2014 23:12 · Поправил: vden · Личное сообщение · #30 Я кидаю bxrc файл в иду, она сама создает проект. И по нему я отлаживаюсь. Т.е. думаю что работает как полноценный отладчик. По крайней мере под идой запускается также как и без нее (точки останова игнорируются, возможно какие-то проблемы с переходом в защищенный режим). При отладке биоса точки останова срабатывают. ida старая 6.1 + bochs 2.3.7 очень похоже на вот это https://www.hex-rays.com/products/ida/support/idadoc/1333.shtml Disk image operation mode: - Data/Software breakpoints are not always triggered: During a debugging session, when a breakpoint is created while the protected mode/paging is enabled, the page table information is used to translate addresses and correctly create the breakpoint. When debugging session is started again, IDA cannot access translation tables to re-create the same breakpoint, thus the breakpoint will be created without any translation information (it will be treated as physical addresses) This is why those breakpoints are not triggered. As a workaround, we suggest disabling those breakpoints and re-enable them when paging is enabled. This problem can also arise when the "use virtual breakpoints" option is enabled. Тогда вопрос отловить переход в защищенный режим. reversecode пишет: демка IDA 6.6 с офсайта поддерживает вроде бош попробуй с ней Спасибо, попробую. 6.6 действительно стабильнее. Не теряет управление при F7/F8. С точками останова пока не разобрался. |
|
Создано: 23 июля 2014 23:15 · Поправил: reversecode · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
eXeL@B —› Основной форум —› Реверсинг под Linux |