![]() |
eXeL@B —› Вопросы новичков —› Взлом через покрытие |
Посл.ответ | Сообщение |
|
Создано: 12 января 2010 15:41 · Поправил: Adminka · Личное сообщение · #1 |
|
Создано: 12 января 2010 19:44 · Личное сообщение · #2 |
|
Создано: 12 января 2010 19:59 · Личное сообщение · #3 |
|
Создано: 12 января 2010 20:02 · Личное сообщение · #4 Крис в книжке "Искусство дизассемблирования" приводил пример взлома через покрытие с использованием OllyDbg и сказал, что не знает подобных инструментов для исследования программ, к которым нет исходных кодов. По гуглу тоже ничего. Программа может выполянть какие-то действия в случае неправильно введённых данных, но эти действия при правильных данных выполнены не будут. Действия суть инструкции в коде. Если сравнить инструкции, выполненные в первом и втором случаях, можно найти отличия и условия, при которых выполняется тот или иной блок кода. Это и есть взлом через покрытие. ![]() |
|
Создано: 12 января 2010 20:04 · Личное сообщение · #5 |
|
Создано: 12 января 2010 20:25 · Поправил: Adminka · Личное сообщение · #6 |
|
Создано: 14 января 2010 16:11 · Личное сообщение · #7 |
|
Создано: 14 января 2010 19:31 · Поправил: Adminka · Личное сообщение · #8 |
|
Создано: 14 января 2010 21:35 · Личное сообщение · #9 |
|
Создано: 14 января 2010 22:15 · Личное сообщение · #10 |
|
Создано: 14 января 2010 22:38 · Поправил: Adminka · Личное сообщение · #11 Archer 16-битная программа может быть под Win3.x и Win9x, причём из ДОСа она может не запускаться, говоря "this program requires Windows". IDA применяет сигнатуры для Turbo Pascal 6.0/7.0, так что вроде всё логично и обоснованно. SVLab Не знаю уж, какой там формат, описание NE формата у меня крайне скупое, из него ничего узнать нельзя, но количество сегментов около 100 штук впечатляет. В ДОС-программах и PE-файлах такое не встречается. ![]() |
|
Создано: 14 января 2010 23:30 · Личное сообщение · #12 Да нет, я не спорю, что в принципе невозможно. Но софт ниже, чем под НТ, нынче сомнения вызывает. В принципе на вышеназванных эмуляторах можно и винду запустить, вот только что за хреновина выйдет с трассой-непонятно. Впрочем, других вариантов вряд ли предвидется. Бросай эту затею лучше и ищи другие варианты. ![]() |
|
Создано: 14 января 2010 23:40 · Поправил: Adminka · Личное сообщение · #13 Суть в чём. Меня попросили помочь одной фирме с прогой, которая при вводе даты позже определённой не позволяла ничего делать, кроме как ввести "правильную" дату и сохранить документ с ней. То, что прога старая, не важно, эта фирма работает с ней уже лет 6, все данные в ней и не было бы этого косяка, если бы не 2010. Честно говоря, в новинку мне это всё было, вслепую тыкаться в дизассемблере по дальним переходам вида call far[di+0C] во всех этих ста сегментах, без перекрёстных ссылок на функции, хорошо хоть строка с ругательством при вводе "неправильной" даты лежала прямо в exe-шнике открытым текстом, и ссылка на неё нашлась, в SIce достаточно было поменять пару условных переходов и всё заработало. Остался только баг такой, что если ввести дату позже 2009 года, то selection лочится намертво в этом edit'е и дату сначала приходится вводить с 2009 годом, и в самом конце редактирования документа исправлять на 2010. Некритично, работать можно, но неприятно. На новый софт вряд ли перейдут, так что из принципа хочется потыкаться дальше. И раз функции вызываются таким вот образом, то в дизассемблере найти условный переход вряд ли получится. Пока у меня есть только вариант поставить breakpoint где-нибудь "повыше" захода в функцию показа "неправильного" сообщения (функции lock'а и message'а связаны, и то, и это происходит при "левой" информации) и под SIce'ом отследить, что выполняется при правильных и неправильных данных. Сейчас ещё 2 проекта висят, так что возможно ничего не выйдет, раз всё "как бы работает". Если понадобится помощь, попрошу, если будет сделано - напишу. Единственное ещё: весь архив весит 330Мб, там куча сохранённых документов, но мне как лицу доверенному можно ![]() Извините за длинный пост, 16-bit - это вроде моветон, но вот иногда надо, может, кому интересно, для чего. ![]() |
|
Создано: 16 января 2010 23:27 · Поправил: Adminka · Личное сообщение · #14 Отлично! Теперь ничего не лочится и всё работает! Если кому интересно, как, то см. предыдущий пост. Идея поставить breakpoint "повыше" захода в функцию показа "неправильного" сообщения оказалась не так плоха, к тому же SoftIce распознал некоторые функции в окрестности того места ("USER!SetFocus", в частности), так что всё сделано без трассы. Всем спасибо за помощь. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Взлом через покрытие |
Эта тема закрыта. Ответы больше не принимаются. |