![]() |
eXeL@B —› Вопросы новичков —› директивы ассемблера DB и SAR |
Посл.ответ | Сообщение |
|
Создано: 18 октября 2008 17:54 · Поправил: WantButCant · Личное сообщение · #1 Всем привет, работаю с Olly Debugger... потихоньку читаю статьи, пробую разбирать dll фаилы... и вот в одном фаиле (назначение коего - шифрование/дешифрование, как установленно) используется ряд директив DB (найти описание этой директивы мне удалось - а практическое её применение я не понимаю... и примеры найти не могу) для наглядности кусочек кода: Code:
(из интернета) Директива определения байта (DB) Из различных директив, определяющих элементы данных, наиболее полезной является DB (определить байт). Символьное выражение в диpективе DB может содержать строку символов любой длины, вплоть до конца строки. Объектный код показывает символы кода ASCII для каждого байта. Шест.20 представляет символ пробела. Числовое выражение в директиве DB может содержать одну или более однобайтовых констант. Один байт выражается двумя шест. цифpами. Наибольшее положительное шест. число в одном байте это 7F, все «большие» числа от 80 до FF представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +127 и -128. И насколько я понял SAR это одна из команд сдвига... примеров так же найти не удалось, может кто-нибудь разъяснить как они используются? P.S. из кода Олли не ясно - почему в комментах не на против всех DB стоит текст... настройки? ![]() |
|
Создано: 18 октября 2008 21:35 · Личное сообщение · #2 |
|
Создано: 20 октября 2008 21:02 · Личное сообщение · #3 |
|
Создано: 20 октября 2008 21:10 · Поправил: tempread · Личное сообщение · #4 WantButCan Если нужно определить данные в программе,то используется db (данные - это не только строки ,но числовые значения). Определить стопроцентно,является ли байты в программе асемблерными командами или же данными невозможно. Но Олька пытается это делать эвристическими методами. Если Олька ошибается,ей всегда можно помочь,указав что байты,которые она определила как данные,на самом деле команды(И Олька сразу послушно преобразует байты в соответствующие ассемблерные команды) ![]() |
|
Создано: 20 октября 2008 21:31 · Личное сообщение · #5 tempread пишет: Если нужно определить данные в программе,то используется db ... не совсем понимаю, что значит определить данные?... ведь код есть код, строка есть строка... и не совсем ясно - где определяются эти данные, ведь инструкция DB (в моём примере) содержит лишь 1 байт, т.е. какие-то данные и в ней (инструкции) не указано, где определять эти данные т.е. DB это сравнение каких либо байт? P.S. вроде в интернете нашёл разные справочники, но по ним всё же не ясно, как и для чего используется эта инструкция... во всяком случае, меня интересует использование DB применительно к шифрованию/дешефрации данных ![]() |
|
Создано: 20 октября 2008 21:53 · Поправил: tempread · Личное сообщение · #6 В твоем примере указано, что имеются такие-то байты. Оля их показывает как данные,посредством DB. Т.е. DB -это не команда, это просто указание того,что параметр этого обьявления является один байт. Т.е. DB(а также DW и DD) - это условное обозначение,просто в языке Ассемблер этим обозначением решили указывать данные. ![]() |
|
Создано: 20 октября 2008 21:59 · Личное сообщение · #7 |
|
Создано: 21 октября 2008 09:21 · Личное сообщение · #8 |
|
Создано: 21 октября 2008 09:54 · Личное сообщение · #9 DB - резервирование памяти для данных размером 1 байт.Оля может часто выдавать такие данные просто выделяешь определённый участок и в коннтекстовом меню Оли выбираешь Analisis=>During next...=>Commands. SAR - арефметический здвиг операндов в право ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]() |
|
Создано: 25 октября 2008 16:11 · Личное сообщение · #10 Спасибо ClockMan'y, конвертил эти страшные DB в команды, но теперь возникла следующая проблема: по всей видимости эти байты команд куда-то переписываются, т.е. они не исполняются из того места, где размещены... (думаю это способ защититься от дебага) 1) Как узнать куда они пишутся? 2) Как отследить работу этого ,переписанного куда-то, кода? ![]() |
|
Создано: 25 октября 2008 17:04 · Личное сообщение · #11 |
|
Создано: 25 октября 2008 17:38 · Личное сообщение · #12 часть длл, почему-то представлена данными, а не кодом состоящим из команд... т.к. этот код должен отвечать за шифрацию, не совсем понятно, почему он вызывается только 1 раз - с этого-то я и решил, что код куда-то пишется (как выяснил позже, только одно событие вызывает его), а нужный мне код в другом месте лежит - но всё в таком же формате ----------------------------------------------------------------- дело в том, что нагружать кого-либо своими проблемами сильноне хочу... вопрос связан с наболевшем, на этом форуме... (с lineage...), а разобрать я пытаюсь, как длл шифрует трафик (длл не стандартная, весом 944кб) могу конечно выложить и саму длл.. и остальные длл, с которыми она связана, а весь клиент вообще весит 4.89 гига... писать заявку на слом смысла нет, я хочу научиться ломать сам, есть статьи по ольке, но они расчитаны на вскрытие ключей, слом лицензий... а в случае с интернет приложением дело сложнее и нет специализированных статей под это (я во всяком случае не нашёл) ![]() |
|
Создано: 31 октября 2008 23:07 · Личное сообщение · #13 |
|
Создано: 01 ноября 2008 00:22 · Поправил: WantButCant · Личное сообщение · #14 |
|
Создано: 01 ноября 2008 00:42 · Личное сообщение · #15 |
|
Создано: 01 ноября 2008 07:54 · Личное сообщение · #16 |
|
Создано: 01 ноября 2008 07:56 · Поправил: WantButCant · Личное сообщение · #17 |
|
Создано: 01 ноября 2008 19:23 · Личное сообщение · #18 Удалить нельзя, править можно. Чем и убедительно прошу пользоваться вместо того, чтобы писать несколько постов подряд. Импорт-почитай не только сухие мелкомягкие доки, но и статьи про распаковку от зелёного к красному или распаковка это легко (или просто, не помню), там объяснено попроще, на ваме они есть. На название секции можешь внимание не обращать, оно может быть любым. Бряки на исполняемый код везде можно ставить. Сравнивать можешь через FC.exe, смотря какие различия. ![]() |
|
Создано: 02 ноября 2008 17:22 · Личное сообщение · #19 |
|
Создано: 02 ноября 2008 17:38 · Личное сообщение · #20 |
|
Создано: 02 ноября 2008 17:40 · Поправил: WantButCant · Личное сообщение · #21 тогда более подходящий вопрос - как можно отследить, какая команда вытащит определённую строку из стэка во время выполнения программы т.е. суть следующая: запускаю прогу отладчиком, дохожу до бряка - в стэк помещается строка и нужно узнать, где потом дальше эта строка вытащится... просто пересматривать код нереально долго, да и адресации косвенной много (порой и не знаеш, что и куда переходит) ![]() |
|
Создано: 02 ноября 2008 23:39 · Личное сообщение · #22 |
|
Создано: 03 ноября 2008 01:18 · Личное сообщение · #23 премного извиняюсь, если мои нубо-вопросы сильно раздражают... (в принципи, можно на них и не отвечать, буду мучаться сам), но всё же: успел я прочитать 12 (из 40-ка) статей по олли (там где ещё все примеры разбираются на разных вариациях crackme.exe)... была там и статья про брик-поинты, и хардварные объяснялись и прочие, но про бряки на стэк там, как ни странно, не говорилось (вроде упомянулось, что об этом будет сказано где-то в ... "кукуево") поэтому был бы рад ссылкам на конкретные статьи с конкретным содержание "как ставить бряки на стэк" (или т.п.) ![]() |
|
Создано: 03 ноября 2008 03:27 · Личное сообщение · #24 |
|
Создано: 03 ноября 2008 18:25 · Личное сообщение · #25 Stack пишет: почитай все статьи по теме с краклаба. Ну все-то не обязательно, главное мои прочесть ![]() WantButCant пишет: я хочу научиться ломать сам WantButCant, когда поймёшь, что такое Ассемблер для Интел, вот такие лаймерские вопросы отпадут сами собой. Если сразу научиться не кнопки нажимать, а в суть врубаться, процесс обучения пойдёт быстрее и значительно интереснее, а со временем ещё и отдача больше будет. Отвечать на вопросы типа "как ставить бряки на стэк" совершенно бесполезно. Такие вопросы рождаются у людей которые: 1 не читают документацию (к Ольке на русском кстати есть) 2 не понимают, что такое стек, бряк и т.д. 3 торопятся спросить как только вопрос в голове появился ----- Всем привет, я вернулся ![]() |
|
Создано: 04 ноября 2008 12:05 · Поправил: WantButCant · Личное сообщение · #26 |
![]() |
eXeL@B —› Вопросы новичков —› директивы ассемблера DB и SAR |