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

 eXeL@B —› Основной форум —› Реверсинг под Linux
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 18 февраля 2014 21:54 · Поправил: ARCHANGEL
· Личное сообщение · #1

Уважаемые форумчане. Знаю, что данный ресурс создавался для обсуждения тем, связанных с ОС Windows. Но ведь есть уже разделы по андроиду, по flash, по дотнету. Эти все темы не совсем связаны с Windows, точнее сказать, весьма далеки от исследования нативных приложений под винду, поэтому мне кажется логичным обсуждение ос семейства Linux.

Так исторически сложилось, что мне приходится тратить некоторое время на изучение этой темы, а изучать-то и нечего. Есть литература по администрированию Linux, но вот хорошей добротной (и свежей) инфы по линуксу практически нет.

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

Настройка рабочей среды
Подраздел охватывает темы, прямо или косвенно связанные с установкой, настройкой и подготовкой к работе ОС Linux.
--> Настройка сети в VirtualBox <--
--> Установка VirtualBox Guest Additions в Kali<--
--> Linux. Карманный справочник. Скотт Граннеман <--
--> Инструменты кросскомпиляции для ARM <--
--> Компилятор GNU GCC<--
--> Команды Linux <--
--> Удалённая отладка с помощью gdbserver и Ida Pro <--
--> Обзор инструментария для исследований (не первой свежести обзор) <--
--> Удаленная отладка в Linux при помощи связки GDB-gdbserver <--

Введение в устройство ОС
Подраздел в общем и целом, без низкоуровневых деталей и кода, описывает устройство ОС. Поверхносто, но нужно для общего представления.
--> Анатомия ядра Linux<--
--> Исследование ядра Linux'а<--
--> Anatomy of Linux dynamic libraries <--
--> Обзор Linux <--
--> Динамическое связывание библиотек в Windows и Linux <--
--> Linkers and Loaders Guide <--

Программирование
Подраздел посвящён системному программированию под Linux.
--> Ядро Linux в комментариях<--
--> Pro Linux Embedded System <--
--> Linux Device Drivers, Third Edition <--
--> Знакомство с межпроцессным взаимодействием на Linux <--
--> Ещё одна книга по модулям ядра <--
--> Netlink Library <--
--> Kernel API Reference <--
--> Литература по программированию модулей ядра <--

Статьи по реверсингу

2002-2004 год:
--> Reverse Engineering Linux x86 Binaries <--
--> Reverse Engineering Linux ELF Binaries on the x86 <--
--> Reverse Engineering using the Linux Operating System.<--

Другие статьи:
--> Отладка двоичных файлов под gdb <--
--> Особенности национальной отладки в UNIX <--
--> Погружение в технику и философию gdb (окончание) <--
--> Детальный анализ бэкдора Linux/Ebury <--
--> 8 gdb tricks you should know <--

Разное

Касперски --> Искусство дизассемблирования<--
--> Linux System Call Table for x86_64 <--
--> System call tables x86 (BoRoV настоятельно рекомендует) <--
--> Отладка с помощью GDB <--
--> Команды GDB<--
--> Что делать, если отлаживаемый процесс форкается <--
--> Про способы внедрения кода в чужое адресное пространство <--
--> Обзор защит программного обеспечения под Linux <--
--> How to build your own kernel on Ubuntu <--
--> EDB - оллиподобный отладчик для х86/x64 <--
--> По многочисленным просьбам трудящихся - Таблица syscall'ов под ARM <--

-----
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

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

Создано: 06 марта 2015 16:05
· Личное сообщение · #2

ARCHANGEL, а попробуйте что-то вроде sysdig или strace.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 06 марта 2015 16:11
· Личное сообщение · #3

man lsof



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

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

--> NVIDIA открыла сорцы PhysX для Linux <--




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 марта 2015 20:35
· Личное сообщение · #5

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



Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 16 июля 2015 23:11
· Личное сообщение · #6

Возникала необходимость завести GDBserver на устройство с процом xscale PRIXP420ABD(armv5t(big endian)) которая крутиться на linuxe(древнем busybox) c ядром 2.4.24. google готового статически слинкованого решения не предоставил. http://habrahabr.ru/post/114230/ , http://download.ronetix.info/toolchains/arm/kaeilos-2010.1/ при проверке требует наличия огромного количества танцев с бубнами(QEMU не поддерживает среду эмуляции для big endian(armeb), только запуск одиночного приложения, linaro arm toolchain работает с big endian только с ARM7). В связи с этим вопрос - может кто нибудь с готовым и настроенным toolchain построить GDBserver или возможно дадут вектор(тыкнут носом) куда еще посмотреть?




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

Создано: 17 июля 2015 02:27
· Личное сообщение · #7

sats пишет:
linaro arm toolchain работает с big endian только с ARM7

--> Link <--
Так ARM v5T архитектура обратно совместима с ARM v7, другими словами v5t - некоторое подмножество v7. Не пользовался пока тулчейном, но не пробовали просто указать ему v7?

-----
IZ.RU




Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 17 июля 2015 03:01
· Личное сообщение · #8

делал через линару на arm7 - segmentation fault.




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

Создано: 17 июля 2015 23:31
· Личное сообщение · #9

sats
sats пишет:
QEMU не поддерживает среду эмуляции для big endian

Поменяйте порядок байт в нужных elf-файлах

-----
IZ.RU




Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 18 июля 2015 00:06
· Личное сообщение · #10

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




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

Создано: 18 июля 2015 13:48 · Поправил: DenCoder
· Личное сообщение · #11

DenCoder пишет:
Поменяйте порядок байт в нужных elf-файлах


sats пишет:
в таком случае родные программы будут глючит

Ну если грамотно пройти по всему коду, пройтись анализатором, заменить некоторые команды, где возможно и данные перевернуть... о таком только мечтать, наверное, пока, хотя не искал. Вполне осуществимо, и может есть у кого-то такая поделка. Если код не накрыт пакером (что редкость для arm), то какая-нибудь тулза а-ля endian_B2L должна справиться.

sats пишет:
видимо никто здесь подобной ерундой не занимается

Да я тоже мучаюсь, с qemu. Благо исходники есть, до логики работы, чего нужно, какие опции ему подсунуть, благодаря им можно догадаться. Окружение главное сэмулировать, а для этого, как я понимаю, лучше всего настроить qemu так, чтобы он грузил и правильно выполнял бутлоадер, конфигурацию подобрать, чтобы mrc, mcr, vfp, неоновские расширения правильно выполнялись(хотя расширения - это конечная цель, в последнюю очередь, поскольку только для целевого модуля минимальная архитектура - ARMv7-A - от Cortex A5 до A17, но эта часть уже решена)

Добавлено спустя некоторое время
Интересно, что в Cortex-R, v6 и в некоторых v5 с поддержкой BE32 есть управление endian, то есть начинается код в одном порядке байт, спустя какую-то инициализацию - в другом порядке. Никто не сталкивался с подобным?

-----
IZ.RU




Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 21 июля 2015 11:31 · Поправил: sats
· Личное сообщение · #12

в общем ситуация с cross-ng следующая : построил gdbserver на базе armeb-unknown-linux-gnueabi - результат следующий: root@ubuntu:~/gdb/builds/armeb/gdbserver/bin# file gdbserver
gdbserver: ELF 32-bit MSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 4.1.0, not stripped

Железо на котором нужно запустить: Linux version 2.4.24-uc0 (root@EmbEserver75) (gcc version 3.3.2) armv5b #1 Wed Jun 15 12:44:25 EDT 2011
CPU: XScale-IXP4xx/IXC11xx revision 2
При запуске little endian дает error:./gdbserver: line 1: syntax error: word unexpected (expecting ")")
При запуске скомпиленого с помощью cross-ng:
# ./gdbserver
Segmentation fault
В связи с этим вопрос: (на сайте cross-ng присутствует следующая информация : для armeb-unknown-linux-gnueabi Kernel headers version linux 3.12 gcc version 4.4.3) подойдет ли cross-ng для компиляции под железку в общем? Или ,возможно, нужно намного старее версии кросс компилятора брать?

компилировал следующим образом :
export RANLIB=/home/stas/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-gcc-ranlib
export CC=/home/stas/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-gcc
./configure --target=armeb-unknown-linux-gnueabi --prefix=~/gdb/builds/armeb/gdbserver --disable-werror # &&
возможно необходимо указать дополнительный флаг типа mcpu или march, но при попытке их вставить - configure: error: -mcpu=xscale: invalid option;

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


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

Создано: 24 июля 2015 02:03
· Личное сообщение · #13

sats пишет:
Или ,возможно, нужно намного старее версии кросс компилятора брать?

В большинстве случаев новые версии компиляторов включают возможности старых. Единственное что - некоторые опции в новых версиях могут быть omitted, deprecated, ignored... см. мануалы, гугл, форумы

sats пишет:
возможно необходимо указать дополнительный флаг типа mcpu или march, но при попытке их вставить - configure: error: -mcpu=xscale: invalid option;

уточняй по хелпу

-----
IZ.RU




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 01 августа 2015 17:27
· Личное сообщение · #14

Похоже, отладчик gdb не для всех функций выполняет команду break.
В приведённом ниже примере он останавливается на printf() и
проскальзывает strcpy().
Может кто скажет - почему так?

Code:
  1. [pion@localhost PR2]$ gdb -./char_array2
  2. Using host libthread_db library "/lib/i686/libthread_db.so.1".
  3. (gdb) list
  4. 1       #include <stdio.h>
  5. 2       #include <string.h>
  6. 3
  7. 4       int main() {
  8. 5        char str_a[20];
  9. 6
  10. 7        strcpy(str_a, "Hello, world!\n");
  11. 8        printf(str_a);
  12. 9       }
  13. (gdb) break strcpy
  14. Function "strcpy" not defined.
  15. Make breakpoint pending on future shared library load? (or [n]) y
  16.  
  17. Breakpoint 1 (strcpy) pending.
  18. (gdb) break printf
  19. Function "printf" not defined.
  20. Make breakpoint pending on future shared library load? (or [n]) y
  21.  
  22. Breakpoint 2 (printf) pending.
  23. (gdb) run
  24. Starting program: /home/pion/cpp/PR2/char_array2
  25. Breakpoint 3 at 0xb7e043a6
  26. Pending breakpoint "strcpy" resolved
  27. Breakpoint 4 at 0xb7dda314
  28. Pending breakpoint "printf" resolved
  29.  
  30. Breakpoint 4, 0xb7dda314 in printf () from /lib/i686/libc.so.6
  31. (gdb) i r eip
  32. eip            0xb7dda314       0xb7dda314 <printf+4>
  33. (gdb) cont
  34. Continuing.
  35. Hello, world!
  36.  
  37. Program exited with code 016.
  38. (gdb)




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 01 августа 2015 18:28
· Личное сообщение · #15

оптимизация через инлайн, возможно.

-----
старый пень





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 01 августа 2015 18:33
· Личное сообщение · #16

включите дизасм, полагаю strcpy там такой функции нет вообще, gcc вставляет свои builtin функции, разворачиая их в инлайн

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


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

Создано: 01 августа 2015 22:16 · Поправил: DenCoder
· Личное сообщение · #17

ksol пишет:
Похоже, отладчик gdb не для всех функций выполняет команду break.

пользовался gdb 7.7, сама версия нормальная, много различных возможностей. Есть gdbtui (с псевдографическим интерфейсом), есть insight с нормальным гуи. Связка Ида(хоть какой версии) + gdbserver тупит на ARM Linux по части точек останова. armlinux_server, что идёт в комплекте с идой, также тупит, но на многопоточных приложениях.

apt-get upgrade делали?

ksol пишет:
Function "strcpy" not defined.

В таких случаях возможно символов не хватает. Как их ставить --> один из вариантов <--

ksol
У вас есть исходник, тогда break на line должно работать. Чаще всего исходника нет и символов нет - break *0x(addr)

-----
IZ.RU


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

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

Создано: 02 августа 2015 11:22 · Поправил: eu8cc
· Личное сообщение · #18

Извините, может и не по теме, подскажите пожалуйста каким образом можно распаковать исполняемый файлик из линукса. При запуске требует мыло и id. Скорей всего внутри скрипт sh. Подскажите как его достать. Пробовал IDA с под винды, но там мало что есть, не получилось установить сервер для иды на сторонний линукс (я не спец в линуксе, может нужен определенный тип линукс os) поэтому в режиме выполнения не увидел. Извиняюсь если ошибся разделом.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 11:34
· Личное сообщение · #19

- ставил! пробовал! не получается!

это не вариант, что именно пробовали? что именно ставили? что именно не получается?
там нужен linux_serverx64, потому что прога x64

Добавлено спустя 11 минут
вариант нейтивного gdb который идет в поставке, тоже надо рассмотреть, на хабре есть примеры общения с gdb, да и ида тоже умеет с ним работать

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

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

Создано: 02 августа 2015 11:46
· Личное сообщение · #20

Запускал на линуксе 64 битном. Я в курсе что там нужен linux_serverx64, пробовал его запустить на портативном porteus linux os но вообще в ответ тишина. Пробовал на тот же porteus закачать и запустить IDA(для linux), ноль реакции(не запускается). Я не силен в этих linux os. Хочу распаковать и достать скрипт. Но из под винды без сервера линукса ничего не выходит. Может там еще какие грабли, пока не знаю.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 11:50
· Личное сообщение · #21

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



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 02 августа 2015 12:13
· Личное сообщение · #22

reversecode пишет:
поставте gdbserver который входит в поставку с линуксом
ида тоже умеет сним общаться

Зачем вы травите? Все знают что ида умеет gdbserver только определённых версий(а вот тут уже возникает вопрос кто виноват: gdbserver или именно gdb), каких именно - разбираться не стал, просто вычеркнул для себя такой вариант как ненадёжный.

-----
все багрепорты - в личные сообщения


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


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 12:17
· Личное сообщение · #23

первый раз слышу что ида умеет gdb только определенных версий, видимо у меня другой опыт



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

Создано: 02 августа 2015 12:33 · Поправил: eu8cc
· Личное сообщение · #24

Запустил отладку через win64_remotex64.exe

В консоли пишет:
accepting connection from 192.164.1.2 ...
could not establish the connection
closing connection from 192.164.1.2
принимая соединение от 192.164.1.2 ...
не удалось установить соединение
закрытие соединения с 192.164.1.2

Затем в ида выскакивает окошка с сообщением:
the file can'tbe loaded by the debugger plugin.
Please verify that the parameters are valid
файл может быть загружен в отладчик плагин.
Пожалуйста, убедитесь, что параметры являются действительными

После нажатия ок моргает курсор в строчке Parameters(там у меня пусто) следующего окна.
Какие параметры нужно вбить не знаю, в инете так на вскидку ничего не выскочило.

Я просто не в курсе вообще на каких сборках linux os можно установить линуксовскую ида работает. Может есть какие сборки с предустановленной ida?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 12:46
· Личное сообщение · #25

win64_remotex64.exe нужен что бы отлаживать на иде windows x64 программы
для линукса нужен
1) линукс x64
2) закинуть на этот линукс x64 - linux_serverx64 от ида той версии под которой будете отлаживать
3) проверить доступность сети с того компьютера где ида и тем компьютером где запущен линукс
4) запустить linux_serverx64 на линуксе в нужными параметрами
5) подсоеденится из ida к машине где линукс, указав пути запускаемой программы которая лежит на линукс машине

вроде так




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

Создано: 02 августа 2015 14:39 · Поправил: DenCoder
· Личное сообщение · #26

reversecode пишет:
первый раз слышу что ида умеет gdb только определенных версий, видимо у меня другой опыт

Реально, есть такая проблема на иде 6.5 и 6.6 - back-end в иде довольно урезан, и видимо протокол gdb от gdb7.7 плохо понимает. Проблема заключается в невозможности остановиться на какой-то точке больше одного раза. То есть если один бряк сработал, второй не срабатывает. Не разбирал пока(и вряд ли время будет), но кажется, что Иде не удаётся правильно стартовать от последней точки и потом правильно принять состояние при остановке программы.

Но вот неизвестно, так ли это со всеми gdbserver'ами. Тестировался мной только gdbserver 7.7 под arm, linux - debian 3.2

-----
IZ.RU


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

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 02 августа 2015 15:28
· Личное сообщение · #27

DenCoder - функции "strcpy" , "printf" до запуска программы not defined -
ещё нет загрузки, поэтому их имена not resolved. После запуска программы,
как видно из приведённого выше кода, gdb успешно загружает обе эти функции,
указывает их адреса, но breakpoint 1-й пропускает. а останавливается только на 2-й.
reversecode - gdb разрешает имя "strcpy", почему бы ему не остановится на
указанном им же адресе?
А насчёт break on line всё понятно.
DenCoder - я благодарю вас за указание отладчиков с гуи. Не могли бы вы
сказать чуть подробнее?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 02 августа 2015 15:47 · Поправил: reversecode
· Личное сообщение · #28

Code:
  1. host:~# gcc -O0 -g d.c
  2. d.c: In function ‘main’:
  3. d.c:8:3: warning: format not a string literal and no format arguments [-Wformat-security]
  4. host:~# gdb -./a.out
  5. Reading symbols from /root/a.out...done.
  6. (gdb) list
  7. warning: Source file is more recent than executable.
  8. 1       #include <stdio.h>
  9. 2       #include <string.h>
  10. 3
  11. 4       int main() {
  12. 5         char str_a[20];
  13. 6
  14. 7         strcpy(str_a, "Hello, world!\n");
  15. 8         printf(str_a);
  16. 9         return 0;
  17. 10      }
  18. (gdb) break strcpy
  19. Function "strcpy" not defined.
  20. Make breakpoint pending on future shared library load? (or [n]) y
  21. Breakpoint 1 (strcpy) pending.
  22. (gdb) break printf
  23. Breakpoint 2 at 0x8048330
  24. (gdb) run
  25. Starting program: /root/a.out
  26.  
  27. Breakpoint 2, __printf (format=0xbffff6a8 "Hello, world!\n") at printf.c:30
  28. 30      printf.c: No such file or directory.
  29. (gdb) quit
  30. A debugging session is active.
  31.  
  32.         Inferior 1 [process 19865] will be killed.
  33.  
  34. Quit anyway? (or n) y


objdump -d a.out
Code:
  1. 0804845c <main>:
  2.  804845c:       55                      push   %ebp
  3.  804845d:       89 e5                   mov    %esp,%ebp
  4.  804845f:       83 e4 f0                and    $0xfffffff0,%esp
  5.  8048462:       83 ec 30                sub    $0x30,%esp
  6.  8048465:       65 a1 14 00 00 00       mov    %gs:0x14,%eax
  7.  804846b:       89 44 24 2c             mov    %eax,0x2c(%esp)
  8.  804846f:       31 c0                   xor    %eax,%eax
  9.  8048471:       8d 44 24 18             lea    0x18(%esp),%eax
  10.  8048475:       c7 00 48 65 6c 6c       movl   $0x6c6c6548,(%eax)
  11.  804847b:       c7 40 04 6f 2c 20 77    movl   $0x77202c6f,0x4(%eax)
  12.  8048482:       c7 40 08 6f 72 6c 64    movl   $0x646c726f,0x8(%eax)
  13.  8048489:       66 c7 40 0c 21 0a       movw   $0xa21,0xc(%eax)
  14.  804848f:       c6 40 0e 00             movb   $0x0,0xe(%eax)
  15.  8048493:       8d 44 24 18             lea    0x18(%esp),%eax
  16.  8048497:       89 04 24                mov    %eax,(%esp)
  17.  804849a:       e8 91 fe ff ff          call   8048330 <printf@plt>
  18.  804849f:       b8 00 00 00 00          mov    $0x0,%eax
  19.  80484a4:       8b 54 24 2c             mov    0x2c(%esp),%edx
  20.  80484a8:       65 33 15 14 00 00 00    xor    %gs:0x14,%edx
  21.  80484af:       74 05                   je     80484b6 <main+0x5a>
  22.  80484b1:       e8 8a fe ff ff          call   8048340 <__stack_chk_fail@plt>
  23.  80484b6:       c9                      leave
  24.  80484b7:       c3                      ret


gcc -v
gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)

Добавлено спустя 9 минут
и еще один пример
только компиляция
Code:
  1. gcc -O0 -g d.--no-builtin

Code:
  1. # gdb -./a.out
  2. Reading symbols from /root/a.out...done.
  3. (gdb) break strcpy
  4. Breakpoint 1 at 0x8048370
  5. (gdb) break printf
  6. Breakpoint 2 at 0x8048350
  7. (gdb) run
  8. Starting program: /root/a.out
  9.  
  10. Breakpoint 1, __strcpy_ssse3 () at ../sysdeps/i386/i686/multiarch/strcpy-ssse3.S:78
  11. 78      ../sysdeps/i386/i686/multiarch/strcpy-ssse3.S: No such file or directory.
  12. (gdb) c
  13. Continuing.
  14.  
  15. Breakpoint 2, __printf (format=0xbffff6a8 "Hello, world!\n") at printf.c:30
  16. 30      printf.c: No such file or directory.
  17. (gdb) c
  18. Continuing.
  19. Hello, world!
  20. [Inferior 1 (process 20109) exited normally]
  21. (gdb) quit


Code:
  1. 0804848c <main>:
  2.  804848c:       55                      push   %ebp
  3.  804848d:       89 e5                   mov    %esp,%ebp
  4.  804848f:       83 e4 f0                and    $0xfffffff0,%esp
  5.  8048492:       83 ec 30                sub    $0x30,%esp
  6.  8048495:       65 a1 14 00 00 00       mov    %gs:0x14,%eax
  7.  804849b:       89 44 24 2c             mov    %eax,0x2c(%esp)
  8.  804849f:       31 c0                   xor    %eax,%eax
  9.  80484a1:       c7 44 24 04 78 85 04    movl   $0x8048578,0x4(%esp)
  10.  80484a8:       08
  11.  80484a9:       8d 44 24 18             lea    0x18(%esp),%eax
  12.  80484ad:       89 04 24                mov    %eax,(%esp)
  13.  80484b0:       e8 bb fe ff ff          call   8048370 <strcpy@plt>
  14.  80484b5:       8d 44 24 18             lea    0x18(%esp),%eax
  15.  80484b9:       89 04 24                mov    %eax,(%esp)
  16.  80484bc:       e8 8f fe ff ff          call   8048350 <printf@plt>
  17.  80484c1:       b8 00 00 00 00          mov    $0x0,%eax
  18.  80484c6:       8b 54 24 2c             mov    0x2c(%esp),%edx
  19.  80484ca:       65 33 15 14 00 00 00    xor    %gs:0x14,%edx
  20.  80484d1:       74 05                   je     80484d8 <main+0x4c>
  21.  80484d3:       e8 88 fe ff ff          call   8048360 <__stack_chk_fail@plt>
  22.  80484d8:       c9                      leave
  23.  80484d9:       c3                      ret





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

Создано: 02 августа 2015 16:03 · Поправил: DenCoder
· Личное сообщение · #29

reversecode
Гы-гы! Точно!

ksol
Всё очень просто - чтобы брякнуться именно на strcpy(), не изменяя флагов компилятора, измените код так, чтобы в функцию передавались 2 переменных ))

я благодарю вас за указание отладчиков с гуи. Не могли бы вы
сказать чуть подробнее?

Code:
  1. wget ftp://sourceware.org/pub/insight/releases/insight-6.8-1a.tar.bz2
  2. tar -xvf insight-6.8-1a.tar.bz2
  3. mkdir insight-x86-win
  4. cd insight-x86-win
  5. ../insight-6.8-1a/configure --target=i86-none-uwin --prefix=/opt/insight-win
  6. make
  7. make install


В --target= Можно указать желаюмую конфигурацию, можно и под дос вроде как
см. файл configure.ac, как правильно задавать таргет-конфиги

далее по SSH можно забрать свой собранный Insight

Можно и под CygWin собрать, и под MinGW, можно и без них собрать под git, но в любом из этих 3х случаев ставить придётся достаточно. ИМХО под линуксом проще

--> The GDB GUI : FAQ<--

-----
IZ.RU




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 02 августа 2015 18:47
· Личное сообщение · #30

DenCoder - спасибо за ссылку и команды сборки.
Ещё хотел бы спросить: а это самое insight даёт что-либо относительно консоли?
reversecode - вы правильно указали на замену функций. В дизассем. соде
вместо strcpy стоит memcpy (текст с консоли ниже). Причём gdb останавливается
на ВР memcpy() и уже не хочет сходить с неё, пока не уничтожишь её командой
clear. В то время как с BP printf() отладчик идёт дальше по continue

Code:
  1. (gdb) list
  2. 1       #include <stdio.h>
  3. 2       #include <string.h>
  4. 3
  5. 4       int main() {
  6. 5        char str_a[20];
  7. 6
  8. 7        strcpy(str_a, "Hello, world!\n");
  9. 8        printf(str_a);
  10. 9       }
  11. (gdb) disassemble
  12. No frame selected.
  13. (gdb) disassemble main
  14. Dump of assembler code for function main:
  15. 0x08048374 <main+0>:    lea    ecx,[esp+4]
  16. 0x08048378 <main+4>:    and    esp,0xfffffff0
  17. 0x0804837b <main+7>:    push   DWORD PTR [ecx-4]
  18. 0x0804837e <main+10>:   push   ebp
  19. 0x0804837f <main+11>:   mov    ebp,esp
  20. 0x08048381 <main+13>:   push   ecx
  21. 0x08048382 <main+14>:   sub    esp,0x34
  22. 0x08048385 <main+17>:   mov    DWORD PTR [esp+8],0xf
  23. 0x0804838d <main+25>:   mov    DWORD PTR [esp+4],0x8048480
  24. 0x08048395 <main+33>:   lea    eax,[ebp-24]
  25. 0x08048398 <main+36>:   mov    DWORD PTR [esp],eax
  26. 0x0804839b <main+39>:   call   0x80482d0 <memcpy@plt>
  27. 0x080483a0 <main+44>:   lea    eax,[ebp-24]
  28. 0x080483a3 <main+47>:   mov    DWORD PTR [esp],eax
  29. 0x080483a6 <main+50>:   call   0x80482e0 <printf@plt>
  30. 0x080483ab <main+55>:   add    esp,0x34
  31. 0x080483ae <main+58>:   pop    ecx
  32. 0x080483af <main+59>:   pop    ebp
  33. 0x080483b0 <main+60>:   lea    esp,[ecx-4]
  34. 0x080483b3 <main+63>:   ret
  35. End of assembler dump.
  36. (gdb) break memcpy
  37. Function "memcpy" not defined.
  38. Make breakpoint pending on future shared library load? (or [n]) y
  39.  
  40. Breakpoint 1 (memcpy) pending.
  41. (gdb) break printf
  42. Function "printf" not defined.
  43. Make breakpoint pending on future shared library load? (or [n]) y
  44.  
  45. Breakpoint 2 (printf) pending.
  46. (gdb) run
  47. Starting program: /home/pion/cpp/PR2/char_array2
  48. Breakpoint 3 at 0xb7fefcc0
  49. Pending breakpoint "memcpy" resolved
  50.  
  51. Breakpoint 3, 0xb7fefcc0 in memcpy () from /lib/ld-linux.so.2
  52. (gdb) cont
  53. Continuing.
  54.  
  55. Breakpoint 3, 0xb7fefcc0 in memcpy () from /lib/ld-linux.so.2
  56. (gdb) cont
  57. Continuing.
  58.  
  59. Breakpoint 3, 0xb7fefcc0 in memcpy () from /lib/ld-linux.so.2
  60. (gdb) clear memcpy
  61. Deleted breakpoint 3
  62. (gdb) cont
  63. Continuing.
  64. Breakpoint 4 at 0xb7ec3314
  65. Pending breakpoint "printf" resolved
  66.  
  67. Breakpoint 4, 0xb7ec3314 in printf () from /lib/i686/libc.so.6
  68. (gdb) cont
  69. Continuing.
  70. Hello, world!
  71.  
  72. Program exited with code 016.
  73. (gdb)





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

Создано: 02 августа 2015 19:47 · Поправил: DenCoder
· Личное сообщение · #31

ksol пишет:
insight даёт что-либо относительно консоли?

Code:
  1. Insight is a version of GDB that uses Tcl/Tk to implement a graphical user inter-face. It is a fully integrated GUI, not a separate front-end program.


Собрать можно почти под любую платформу (так заявлено). UPD но не без хитростей это делается
Возможны варианты
back-end Insight на Windows, front-end gdbserver на linux.
back-end Insight на GUI linux, front-end gdbserver на Windows.
С gdbserver'ом или без, но на одной системе.

Добавлено спустя 1 час 08 минут
Вспомнил, что год с небольшим назад я пробовал связку ида/gdbserver - нормально работало, только
ида была 5.5, linux - ubuntu 13.10 server x64,
То ли эта новая ида тупит, то ли gdbserver не той версии для вообще иды. Автор Иды на старых версиях что ли пашет? В анвтивирусных компаниях тоже? ))
Нормально работало и дебажил нормально даже СЕРВИС, который в фоновом режиме, который на запуске 2 раза трёт свой образ новыми процессами
Не то, что там 2 треда отладить.... хз, в чём тут дело
надо будет найти время, чтоб в этом разобраться

-----
IZ.RU



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


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