Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Gs. |
Посл.ответ | Сообщение |
|
Создано: 19 декабря 2010 18:55 · Личное сообщение · #1 Здрасте. Вот семпл выводящий сообщение. Над исходным бинарем выполнен автоматический ресерч и морфинг, при котором выполнена генерация Gs-серий для линейных блоков Как это отлаживать, в частности трассировать ? |
|
Создано: 19 декабря 2010 20:07 · Личное сообщение · #2 В отладчике шестого вижуала все идет: Code:
но в нем ковырять конечно геморойно. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше |
|
Создано: 19 декабря 2010 20:16 · Личное сообщение · #3 |
|
Создано: 19 декабря 2010 20:29 · Личное сообщение · #4 Да, все идет нормально, и пошаговая трассировка(аналог Ф8 Олли) и запускается нормально под отладчиком. Просто адреса функций приходится высматривать в памяти - они в этой программе расположены в стеке, приходится смотреть значение EBP (0012ffb0) затем в памяти искать адрес и смотреть в Иде какая функция расположена по этому адресу, я лично так сделал, просто медленно получается. Я в нативные функции не заходил, просто взял адреса, посмотрел их названия и указал в коментариях. В принципе для небольшой программы разобраться можно что и где она делает. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше |
|
Создано: 19 декабря 2010 20:34 · Поправил: Clerk · Личное сообщение · #5 gena-m В оли по F8 ставятся брейки на следующую инструкцию, это например трейс процедурных ветвлений. Это бессмысленно, так как можно тупо зачекать чексумму макро, либо вобще запретить запись в память. Нормальный трейс выполняется посредством TF. Более того как только произойдёт разрыв блока при перезагруженном сегментном регистре ядро тутже его обнулит и далее при попытке выполнить код возникнет фолт. |
|
Создано: 19 декабря 2010 20:42 · Поправил: gena-m · Личное сообщение · #6 В Олли эта программа вообще не идет(трассировка), как ее заставить именно в Олли работать я не знаю, просто задача была сформулированна не конкретно для Олли а Как это отлаживать, в частности трассировать ?, поэтому я взял отладчик MSVC++, а в нем программа прекрасно идет. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше |
|
Создано: 19 декабря 2010 20:47 · Личное сообщение · #7 |
|
Создано: 19 декабря 2010 20:55 · Личное сообщение · #8 |
|
Создано: 19 декабря 2010 20:57 · Поправил: gena-m · Личное сообщение · #9 |
|
Создано: 19 декабря 2010 21:00 · Поправил: Clerk · Личное сообщение · #10 dermatolog Какие есчо переключения ? Шедулер обнуляет только ядерный Gs(на нулевом кпл) и ничего не знает про юзермодный. gena-m Разместите этот код в проекцию секции с доступом R/E. Тогда это будет практическим вопросом. Интересно как бы вы решали эту задачу. Мне не интересен никакой софт, например большинство аверских виртуальных машин пройдут его нормально. Вопрос не в этом. |
|
Создано: 19 декабря 2010 21:10 · Личное сообщение · #11 |
|
Создано: 19 декабря 2010 21:11 · Поправил: dermatolog · Личное сообщение · #12 Clerk пишет: Шедулер обнуляет только ядерный Gs(на нулевом кпл) и ничего не знает про юзермодный. Этого будет достаточно? Code:
P.S. На экране вижу и 0 и 2b. |
|
Создано: 19 декабря 2010 21:14 · Поправил: Clerk · Личное сообщение · #13 |
|
Создано: 20 декабря 2010 06:08 · Личное сообщение · #14 очередной сферический конь. хотите затруднить отладку вместе с анализом вот самый простой прием (для самых маленьких овощей) - за коллами размещаете несколько мусорных байт (или псевдомусорных или это могут быть какие либо параметры из которых например вычисляется адрес возврата) а перед возвратом колл прибавляет эти несколько мусорных байт к адресу возврата. дизасм переваривает это плохо и степ овер тоже делать не айс (особенно если за колом лежат параметры какието) а реализовать эту фишку очень просто и она реально хоть что то затрудняет. ----- power and the money money and the power |
|
Создано: 20 декабря 2010 07:43 · Личное сообщение · #15 |
|
Создано: 20 декабря 2010 09:35 · Личное сообщение · #16 |
|
Создано: 20 декабря 2010 10:06 · Поправил: gena-m · Личное сообщение · #17 Отладку не затрудняет, трассировку по ф8 (но не по ф7) и анализ - да, приходится делать трассу и писать парсер: Code:
после парсинга: Code:
если обьеденить оба метода, вот тогда будет тяжело. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше |
|
Создано: 20 декабря 2010 19:00 · Личное сообщение · #18 |
|
Создано: 20 декабря 2010 21:11 · Личное сообщение · #19 Clerk Я хотел сказать что по отдельности ни Ваш метод, ни метод doctor Ice, сложности для реверса не представляют, а вот обьеденив их можно получить большой гемор, поскольку код не видно и его трассу получить тяжело. Как это отлаживать, в частности трассировать ? Кстати трасса, сделанная в Олли, которую можно получить скриптом: Code:
----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше |
|
Создано: 20 декабря 2010 21:51 · Личное сообщение · #20 |
|
Создано: 20 декабря 2010 23:21 · Личное сообщение · #21 ну а если немного причесать алгоритм трассеровщика? если трассер встречает изменение гс то запоминает значение гс не меняя если встречает команду с префом гс то он может ее например рипнуть в свой буф (чтобы не снимать защиту от записи со страницы) в своем буфе изменить преф на другой сег рег который бы соответствовал селектору который бы был должен загружен в гс. ----- power and the money money and the power |
|
Создано: 20 декабря 2010 23:35 · Личное сообщение · #22 gena-m пишет: получить большой гемор, поскольку код не видно и его трассу получить тяжело. трассировщиков обламать можно и попроще например переполнениями буфа трассировки. способов масса. вот прикольный. берем например команду (все это можно делать на лету) mov eax, 5 морфим ее во чтото типа push 5 pop eax полученные 2 команды снова морфим и так пока буф морфа не вырастет до мега =) потом выполняем этот мег. ----- power and the money money and the power |
|
Создано: 21 декабря 2010 00:49 · Личное сообщение · #23 |
|
Создано: 21 декабря 2010 04:20 · Личное сообщение · #24 |
|
Создано: 21 декабря 2010 07:28 · Личное сообщение · #25 PE_Kill В любом случае останов приводит к генерации исключения и автоматической конвертации ядерного состояния задачи в контекст, при этом регистр Gs делается инвалидным. Вероятно Rock Debugger не использует брейки при трассировке, возможно это загрузка дефолтных селекторов(базы нулевые ведь), будет не удивительно если он не сможет протрейсить инструкцию для которой Gs = Fs. doctor Ice Загрузить Gs через сервисы не представляется возможным. Можно выполнить обратный ресерч, удалить Gs-серии. Но он будет проблемным. |
|
Создано: 24 декабря 2010 02:11 · Личное сообщение · #26 daFix > трассировка через Dr Если использовать эти регистры подобно RGP ? Хотя они и не доступны в юзермоде, но можно написать простейшую надстройку эмулирующую манипуляции Dr-регистрами, например установив её как VEH. | Сообщение посчитали полезным: mak |
eXeL@B —› Программирование —› Gs. |