eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: helg, vsv1 (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Софт, инструменты —› new Syser Debugger by reversecode
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 21 мая 2017 04:33 · Поправил: reversecode New!
Цитата · Личное сообщение · #1

история реверса в оффтопе кто не видел --> Link <--
благодарностей не надо,
багов наверняка там еще много, как собственных так и в процесса реверса, TODO тоже еще есть
но в целом уже можно запустить, трейсить, ставить бп, добавлять вотчи, даже плагины, итд

интересны моменты(багрепорты) когда дебаггер будет падать

x32/x64 https://www.sendspace.com/file/t4lpr5 - недоступна, в розыске последняя версия кто успел сохранить

4 июня 2017, 20:59:10
http://rgho.st/67jjLSRTg


1607 210517
add handle int 3
fix mouse scroll
fix memory leak PEFile read import

0413 230517
fix crash on delete watch item
improve terminate debug
add FlushInstructionCache on WriteMemory
start debug from cmdline

2046 230517
improve reset(reload the input file) (WO hotkey)

1528 240517
hide BP(CCh) bytes from HexView, show original value
colored BP(code,data) in HexView
done re PopupMenu on HexView (hotkey not tested), operation toolbar in TODO
done re command(edit,move,compare) memory

0203 250517
done re ModuleList window
done re ascii/unicode string context ref
fix env path by add manifest

2224 250517
fix crash without dbg plugin
first build x64

1813 280517
fix mouse wheel scroll on x64
fix scroll by UPbtn bar
add ALT+ hotkey
fix fit hexview on x64
fix hexview change addr on edit addr area
fix align stackview on x64
fix str sym ref on \t
add resolve ctx ref on r8-r15 CPU reg x64
improve PE loader for x64, for resolve import/export sym
fix select bytes on hexview for x64
add show EB line jmp ref
chg addr/offs represent on codeview

0731 290517
fix PE Loader for x64, to read import/export for hibase > 32bit, as example kernelbase.dll
done re sym command, allow show/add symbol/use it for set breakpoint
fix readpe onload file, for correct read sizeof file for x64
fix search module range and module info status for x64

1258 040617
fix disable load x86 on syser x64
fix fmt fit addr exception violation on syser x64
fix PID/TID status and expr var
fix fit addr tab in code/data view for x64
fix 'p ret' cmd, run to return
implement SDK menu api
done re process list window (attach work, detach from target at todo)
starting re peexplorer window

1559 040617
fix load SyserColor.cfg from old SyserOption.exe util https://www.sendspace.com/file/l7r3pw

2058 040617
improve highlight keyword

api и пример плагина в архиве дистрибутива

x32



x64

| Сообщение посчитали полезным: zNob, difexacaw, shellstorm, plutos, r_e, dosprog, SReg, DICI BF, sefkrd, HandMill, Veliant, daFix, Vamit, ELF_7719116, v00doo, VanHelsing, -Sanchez-, Abraham, mak, Hugo Chaves, raiser, vden, MasterSoft, MarcElBichon, nice, chessgod101, stnt, 4kusNick, ==DJ==[ZLO], VOLKOFF, ClockMan, freudz, Dazz



Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 26 мая 2017 00:24 New!
Цитата · Личное сообщение · #2

F11 step branch о котором я писал последний раз в офтопе, перечитайте
его даже в x64dbg хотели добавлять....
он не реализован в ring3 сисера, только в ring0 есть
там нужен доступ на запись в MSR
или DR7... и хз даст ли винда поменять там тот бит... надо экспериментировать, тестировать.. посему пока будет как стептрейс

дизасм да, сыроватый, китайцы его наверное особо и не тестили

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



Ранг: 60.4 (постоянный)
Статус: Участник

Создано: 26 мая 2017 00:43 · Поправил: Haoose-GP New!
Цитата · Личное сообщение · #3

reversecode
x64 - вверх скроллится, вниз - не реагирует. x32 - и туда и сюда работает.
В обоих - не работают горячие клавиши Alt+{что-нибудь}. Ctrl+1/2 - работают.

Ранг: 300.0 (мудрец)
Статус: Участник

Создано: 26 мая 2017 12:39 · Поправил: Veliant New!
Цитата · Личное сообщение · #4

Поддержу немного тему.
Плагин-хайдер для нового сайсера.
https://yadi.sk/d/L0UKb6QK3JYPRY
https://www.sendspace.com/file/hwp40a
Распаковывать так же как и размещены в архиве - syser_hide.dll в Plugins, hide_generic.dll рядом с главным exe.

Кто хочет, может использовать hide_generic.dll в своих проектах. Грузится отладчиком через LoadLibrary и больше ничего делать не надо. Библиотека устанавливает хук на ZwWaitForDebugEvent в процессе отладчика и из обработчика устанавливаются все остальные хуки и патчится память в отлаживаемом процессе.
Конфиг зашит в самой dll в конце файла в виде ([\x00] - выключено, любой другой символ - включено):
Code:
  1. ZwQueryInformationProcess[x]
  2. ZwSetInformationThread[x]
  3. ZwClose[x]
  4. NtGlobalFlag[x]
  5. ProcessHeapFlag[x]
  6. IsDebuggerPresent[x]


Тестовый пример под отладкой


Upd: сам же нашел баг... в режиме syswow64 хуки не ставятся тк код отличается от версии x86

| Сообщение посчитали полезным: Gideon Vi, sendersu, nice, Dart Raiden, DICI BF, dosprog, 4kusNick



Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 28 мая 2017 19:06 New!
Цитата · Личное сообщение · #5

обновил, много всяких багов все еще в портировании на x64
долго фиксил peloader под x64 для резолва символов в дизасме, надеюсь все гуд

1813 280517
fix mouse wheel scroll on x64
fix scroll by UPbtn bar
add ALT+ hotkey
fix fit hexview on x64
fix hexview change addr on edit addr area
fix align stackview on x64
fix str sym ref on \t
add resolve ctx ref on r8-r15 CPU reg x64
improve PE loader for x64, for resolve import/export sym
fix select bytes on hexview for x64
add show EB line jmp ref
chg addr/offs represent on codeview

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


Ранг: 392.6 (мудрец)
Статус: Участник

Создано: 28 мая 2017 19:20 · Поправил: dosprog New!
Цитата · Личное сообщение · #6

Veliant пишет:
Плагин-хайдер для нового сайсера.

Что-то не качается ничего по обеим ссылкам.
Первая вообще не раскрывается,
по второй пишут, что "File unavailable".
Так и должно быть?
И иди знай, то ли это связано со всякими блокировками вконтактиков, то ли не связано, хз


updated
.. Вроде скачал.



Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 07:42 New!
Цитата · Личное сообщение · #7

продолжаем фиксить x64, обновил еще

0731 290517
fix PE Loader for x64, to read import/export for hibase > 32bit, as example kernelbase.dll
done re sym command, allow show/add symbol/use it for set breakpoint
fix readpe onload file, for correct read sizeof file for x64
fix search module range and module info status for x64

Ранг: 231.8 (наставник)
Статус: Участник

Создано: 29 мая 2017 13:38 · Поправил: TryAga1n New!
Цитата · Личное сообщение · #8

reversecode пишет:
интересны моменты(багрепорты) когда дебаггер будет падать

64 битная версия:
При поптыке открыть x86 приложение, все намертво зависает.

32 битная версия:
При попытке открыть незапротекченое Microsoft Visual C#11 приложение, висит.
Если EP находится в хидере, так же получаем полный висяк.
C нулевым EP тоже висит.
Решение хз, наверное криво написан парсер хидера


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 14:08 New!
Цитата · Личное сообщение · #9

с такими баг репортами можете сразу и фиксы предлагать

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

а второе даже и пробовать не с чем, шарпа вроде и нет под рукой.. в винде разве что поискать

Добавлено спустя 5 минут
http://bbs.pediy.com/thread-217773.htm
китайцы про обсид что то пишут, я так думаю там акксес виолайшин из за протекта ? т.е. не баг ?
или нужно сделать что бы игнорились эксепшены как в ольке ?

Ранг: 231.8 (наставник)
Статус: Участник

Создано: 29 мая 2017 14:14 New!
Цитата · Личное сообщение · #10

reversecode пишет:
или нужно сделать что бы игнорились эксепшены как в ольке

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


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 14:14 New!
Цитата · Личное сообщение · #11

TryAga1n пишет:
Решение хз, наверное криво написан парсер хидера

дебагер не парсит файлы которые запускает. банальный CreateProcess
должно видной обслуживаться и как то сигнализировать какими то ласт еррорами как минимум

Ранг: 231.8 (наставник)
Статус: Участник

Создано: 29 мая 2017 14:17 New!
Цитата · Личное сообщение · #12

reversecode пишет:
банальный CreateProcess

Ну тогда как минимум его нужно делать не из MainThread'a, а то очень не приятно, когда интерфейс зависает и приходится постоянно килять процесс через диспетчер


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 14:20 New!
Цитата · Личное сообщение · #13

да надо будет для начала посмотреть где там что там и от чего оно лагает

банальный парсер PE в сисере есть,
заставить его открывать и смотреть хидеры перед пиханием в крейт процесс. дело не сложное

отточить базовое ядро только для начала надо


Ранг: 516.5 (!)
Статус: Участник
Победитель турнира 2010

Создано: 29 мая 2017 14:57 New!
Цитата · Личное сообщение · #14

reversecode пишет:
а второе даже и пробовать не с чем, шарпа вроде и нет под рукой.. в винде разве что поискать


Извращения Corkami над РЕ форматом
https://github.com/corkami/pocs/tree/master/PE
и тут, если полистать
https://code.google.com/archive/p/corkami/downloads?page=1


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 18:14 · Поправил: reversecode New!
Цитата · Личное сообщение · #15

в этом нужен будет совет, от тех кто сражаются с пакерами и протекторами
можно полагаться на pe header всегда ? чувствительна ли к нему винда ?

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

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

так что нужен совет какие данные брать для проверки формата на валидность для запуска в отладчике

Ранг: 564.4 (!)
Статус: Модератор

Создано: 29 мая 2017 18:21 New!
Цитата · Личное сообщение · #16

Что касается архитектуры - можешь полагаться на PE заголовок.

Ранг: 193.7 (ветеран)
Статус: Участник

Создано: 29 мая 2017 19:10 New!
Цитата · Личное сообщение · #17

reversecode пишет:
китайцы про обсид что то пишут, я так думаю там акксес виолайшин из за протекта ? т.е. не баг ?


Видимо да. Обсид эксепшны кидает дай бог.Неверные команды, деление на ноль и т.д.

Ранг: 392.6 (мудрец)
Статус: Участник

Создано: 29 мая 2017 20:17 · Поправил: dosprog New!
Цитата · Личное сообщение · #18

reversecode пишет:
какие данные брать для проверки формата на валидность для запуска в отладчике

Так пускай CreateProcess() и проверяет. - так ли уж необходимо это усложнять?

reversecode пишет:
дебагер не парсит файлы которые запускает. банальный CreateProcess

Ну и нормально (?)


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 20:33 New!
Цитата · Личное сообщение · #19

я пока еще не смотрел в чем там проблема, но

судя по всему одного CreateProcess мало, и оно там(в винде) не проверяет что запускает
сорс отладчика есть в офтопе, там проверка если CreateProcess вернет 0,
ноль не возвращает, иначе бы отлуп был по открытию файла...
значит винда ничего не проверяет..... и возвращает не ноль

Ранг: 256.9 (наставник)
Статус: Участник

Создано: 29 мая 2017 20:36 · Поправил: difexacaw New!
Цитата · Личное сообщение · #20

reversecode

> какие данные брать для проверки формата на валидность для запуска в отладчике

Модуль валидный, если он может быть загружен. Следовательно для валидации его нужно загрузить штатными средствами, к примеру создать файловую секцию(SEC_IMAGE) и если она будет успешно создана, то образ валид.
Процесс создать тоже самое по сути, тоже образ мапится, но только там левые механизмы используются, так что излишне.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 20:54 · Поправил: reversecode New!
Цитата · Личное сообщение · #21

поигрался с STEP BRANCH
обсуждал ранее в офтопе
не заводится он...
краткий екскурс, винда позволяет через DR7 бит 8 и 9 добираться до MSR 0x1D9
ставим TF в EFLAGS
и 9 бит в DR7 (тоже что и 2 бит в 0x1D9)
и должны генерится #DB которые должна ловить WaitForDebugEvent

ставим оба флага, отпускаем треид
и
выполнения пролетает мимо всех инструкций, как будто никаких TF и BTF не стоит вообще
и завершается
никаких других евентов в WaitForDebugEvent кроме терминейта, не приходит...
т.е. установленный 9 бит в DR7 что то делает, только делает что то странное, ощущения что вообще степ трейс отключает
причем если бы он не устанавливался, то работал бы установленный TF в EFLAGS,
а так получается и TF игнорится... загадка

ех жаль, такая хорошая идея пропала

смотрел в свой ntoskrnl.exe
все присутствует, т.е. код который позволяет через DR7 9 бит включать BTF , есть
значит где то в другом собака зарыта...
заресечил бы кто ?

Ранг: 256.9 (наставник)
Статус: Участник

Создано: 29 мая 2017 21:12 · Поправил: difexacaw New!
Цитата · Личное сообщение · #22

reversecode

На скайлайке если не ошибаюсь только отображение мср на др, не юзайте это. Это фича нового железа.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 21:33 New!
Цитата · Личное сообщение · #23

core2duo и всякие Corei5 и выше это не такое уж и новое железо))
и оно не отображается, оно меняет

http://gate.upm.ro/os/LABs/Windows_OS_Internals_Curriculum_Resource_Kit-ACADEMIC/WindowsResearchKernel-WRK/WRK-v1.2/base/ntos/ke/amd64/procstat.asm
вот пример из старого врк для амд
для интелла там только проверка на интел

Ранг: 256.9 (наставник)
Статус: Участник

Создано: 29 мая 2017 21:48 · Поправил: difexacaw New!
Цитата · Личное сообщение · #24

reversecode

В том году разбирали это на r0crew. Оказалось что железячная фича и ось не причём, но я не помню подробности, в принципе могу попробовать поискать, если телеграм хранит логи. Если хотите правильно сделать, то нужно почитать доки Интела по порту сей фичи и её поддержку, затем определить камень и что он поддерживает этот механизм, как обычно cpuid.
Может лучше это сделать стандартными методами - драйвер, msr, branch trace.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 29 мая 2017 21:56 · Поправил: reversecode New!
Цитата · Личное сообщение · #25

ну так естесно железная фитча MSR
но достучаться к MSR можно только в r0
а тут оказывается винда дает бекдор к этим регистрам, через биты DR7 регистра в r3
только вот все равно не работает...

ладно, разобрался с запуском x86 прог на x64 дебагере
CreateProcess работает, а чего ему собственно не работать, он то в емуляторе пускает,
все верно, вот только дебаг евенты уже другие приходят STATUS_WX86_BREAKPOINT
//Exception status code used by Win32 x86 emulation subsystem
такие не хендлятся, вот оно и висит в бесконечном цикле....

так что надо ставить какую то проверку, созданный ли процесс через CreateProcess emu или нет
если на 64 и emu, значит тушим и выходим

по хорошему я бы сделал что бы x64 дебагером и x86 проги можно было отлаживать... но думаю утону
пусть это будет в TODO
а сейчас это просто как то ловить и зарезать такие проги

Добавлено спустя 28 минут
отладка x86 на x64 исправлена через IsWow64Process

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

Создано: 30 мая 2017 08:19 · Поправил: spinz New!
Цитата · Личное сообщение · #26

reversecode пишет:
ставим TF в EFLAGS
и 9 бит в DR7 (тоже что и 2 бит в 0x1D9)
и должны генерится #DB которые должна ловить WaitForDebugEvent

BTF - это же бит 1, бит 2 - reserved


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 30 мая 2017 12:13 · Поправил: reversecode New!
Цитата · Личное сообщение · #27

ну не бит, число

Code:
  1. char __cdecl SetBTF_sub_194C8()
  2. {
  3.         int v1; // [esp+0h] [ebp-8h]@3
  4.         int v2; // [esp+4h] [ebp-4h]@3
  5.  
  6.         if ( !BTF_PRESENT_byte_160200 )
  7.                 return 0;
  8.         ReadMSR_X_sub_19436(0x1D9, &v1, &v2); // #define IA32_DEBUGCTL 0x1D9
  9.                                                 // 
  10.         v2 |= 2u;
  11.         WriteMSR_X_sub_19492(0x1D9, v1, v2);
  12.         return 1;
  13. }


Добавлено спустя 5 часов 1 минуту


spinz
не помню, есть разве разница в каком порядке грудятся drx регистры ? __writedr это непосредственная запись mov dr0, итд
Code:
  1. void loadDR_213067_sub_4635C()
  2. {
  3.         __writedr(2u, DRx_dword_1605C0[2]);
  4.         __writedr(1u, DRx_dword_1605C0[1]);
  5.         __writedr(3u, DRx_dword_1605C0[3]);
  6.         __writedr(0, DRx_dword_1605C0[0]);
  7.         __writedr(6u, 0);
  8.         __writedr(7u, DRx_dword_1605C0[7] & ~0x2000u);
  9. }

Code:
  1. void load_DR_1234567_sub_46326()
  2. {
  3.         __writedr(0, DRx_dword_1605C0[0]);
  4.         __writedr(1u, DRx_dword_1605C0[1]);
  5.         __writedr(2u, DRx_dword_1605C0[2]);
  6.         __writedr(3u, DRx_dword_1605C0[3]);
  7.         __writedr(6u, 0);
  8.         __writedr(7u, DRx_dword_1605C0[7] & ~0x2000u);
  9. }


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 1 июня 2017 02:49 New!
Цитата · Личное сообщение · #28

а под win64 SEH уже нету ? fs:[0]+0 уже не используется ?
а то что то ничего нагуглить не могу

Ранг: 115.5 (ветеран)
Статус: Участник

Создано: 1 июня 2017 03:32 New!
Цитата · Личное сообщение · #29

reversecode, --> тут <-- можно посмотреть


Ранг: 256.3 (наставник)
Статус: Участник
Advisor

Создано: 1 июня 2017 03:38 New!
Цитата · Личное сообщение · #30

reversecode
посмотри плезир у себя, как сисер кодирует в архитектуре х64 инструкцию "MOV REG, 0x80000000"
в х64dbg какой то звиздец с этой константой.
XEDParse кодирует её отрицательной "MOV REG, -0x80000000", или это косяк декодировки капстона.
AsmJit при асмбле выдаёт полную жесть "41 B8 00 B4 C4 04| MOV R8D, 4C4B400"
Один Keystone иногда кодирует правильно "49 B8 00 00 00 80 00 00 00 00| MOVABS R8, 80000000", но не всегда, чаще выдаёт такое же как и AsmJit.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 1 июня 2017 04:02 New!
Цитата · Личное сообщение · #31

VOLKOFF
та это я видел, но что ложится в fs там не показано, у чела в статье сразу кусок дизасма
где 0 строкой
<00> mov [rsp+0x8],rcx
<05> sub rsp,0x28

вообщем наверное нужно свои примеры сбилдить и посмотреть

нужно всего лишь для красивой разукраски стеквотча, для x86 не делал... и вот думаю если делать, то можно ли будет так и для x64 разукрасить...

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

но если отталиваться от того что сисер дизасмит, то таким же образом я думаю он и ассемблит
а диасмит он так
DISASM 49 b8 00 00 00 80 00 00 00 00 Len 10 = ' mov r8,80000000'

Добавлено спустя 1 час 9 минут
печаль, асм в сисере 16/32

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

<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Софт, инструменты —› new Syser Debugger by reversecode
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS