Showing posts with label Debugging. Show all posts
Showing posts with label Debugging. Show all posts

Friday, November 23, 2012

Спокойно

За окном ночь, холодный украинский ноябрь. А я сижу в теплой уютной комнате, читаю спецификацию JP2 (JPEG2000), и разбираю .jp2 файл руками на боксы потому что внятного парсера не выгуглилось. Пытаюсь понять почему этот файл будучи засунутым в stream PDF файла валит самый новый со всеми исправлениями Acrobat Reader.

Мне спокойно. Хорошо когда точно знаеш в чем твоё призвание.

Monday, November 5, 2012

ASLR disabled

Часто Address Space Layout Randomization (ASLR) мешает исследованиям на Windows 7. Вот лекарство, запихнуть в *.reg файлик, применить:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"MoveImages"=dword:00000000

Thursday, November 1, 2012

Day Z: УАЗ исчез

Вчера мой напарник поведал мне по скайпу что УАЗ, который мы так лихо угнали и заныкали, исчез. То ли кто-то угнал, то ли сам по себе. Ну что тут скажеш. Как пришло так и ушло... Не играю уже пару дней, ковыряю ошибку в RealPlayer.

Tuesday, October 16, 2012

Пример простого переполнения

Нужно мне объяснить людям, которые не совсем в теме, что такое переполнение стека длинной строкой и как это работает в 32-битных программах под Windows. Ну я прикидываю что надо рассказать по теории - про адресное пространство, стек и т.п. Потом конечно начинаю думать какой бы пример переполнения показать. Решаю что сначала лучше показать "на кошках", т.е. на каком-то искусственном примере. Недолго думая, я открываю MS Visual C++ 2010 Express, создаю проект консольного приложения и по памяти накидываю в main.cpp известный всем код:

Monday, October 8, 2012

bpx

Как-то отвлекся и на автомате случайно набрал bpx вместо bp в WinDbg. Не сразу понял что сделал, а как дошло - нахлынули воспоминания.

Tuesday, October 2, 2012

Курю трассировку в WinDbg

Хочу сделать мультипоточное логирование выполненных команд по сложным условиям (только в таком-то модуле, только если не глубже чем n от текущего уровня, только если eax!=m и т.д. в том же духе) с дампом регистров и памяти после каждой выполненной инструкции - не всей конечно, а опять-таки по хитрым условиям. Ну посмотрим что получится...

Monday, October 1, 2012

ARM rulezzzz...

Чем больше куришь нюансы ARM, тем больше понимаешь какой это рулезный ассемблер. Например за счёт condition code suffixes можно делать просто чумовые оптимизации! Вот взять псевдокод:
int gcd(int a, int b)
{
  while (a != b) do
  { 
    if (a > b)
       a = a - b;
    else
       b = b - a;
   }
   return a;
}
Можно его конечно реализовать так:

Курю ARM ассемблер

Понедельник... Я всё-таки поспал пару часиков утром, но всё равно не выспался. Как и ожидалось, голова от недосыпа работает плохо, окружающая реальность невыносима без стимуляторов в виде чая и кофе. Но в этом собственно и суть. Усталый и невыспавшийся, я сегодня лягу в девять и мигом усну, а завтра встану рано утром. И потом уже смогу ложится и засыпать в нормальное время. Таким образом восстановится обычный режим сна.

Пользуясь тем, что всё равно ничего делать не могу толком, курю нюансы ARMовского ассемблера. Я знаю его сильно хуже чем ассемблер x86-64, поэтому по ходу дела узнаю много нового - например о трюках с использованием conditional execution. Вообще, если писать ассемблерный код руками, то conditional execution и barrel shifter заставляют многое переосмыслить в понятии "оптимальный код". Надеюсь завтра моя голова прояснится и я смогу заняться чем-то практически полезным.

Friday, September 28, 2012

Яндекс: теория не сработала

Теория не сработала, уязвимость не совсем уязвимость, а скорее просто стрёмный (без шуток, реально стрёмный!) рудиментный код который видимо забыли убрать перед релизом приложения в Android маркете. Ну оно и к лучшему наверное что не уязвимость :) Написал в Яндекс, посмотрим что ответят.

...В 15:20 пришел ответ от робота. Типа перенаправлено нужным людям, будет рассмотрено, держите связь с ними. Ну ок, пусть так.

...Пять вечера. Состоялась короткая переписка, уже с человеком. Человек подтвердил наличие стрёмного кода, но сказал что вознаграждение они выдать не могут т.к. приложение в котором я это всё нашел не участвует в конкурсе. Я посмотрел положения конкурса - таки да, не участвует. Ну и фиг с ним тогда :) В любом случае оно меня интересовало в последнюю очередь.

Thursday, September 27, 2012

Яндекс валяется

В связи с конкурсом "Охота за ошибками", решил взглянуть на сервисы Яндекса. Возможный косяк в одном из их мобильных приложений нашелся сразу, и вот я уже пол часа пытаюсь зарегистрировать ихний "пасспорт" что бы проверить свою теорию. Но ихний сервер валится совершенно рандомно и я не могу завершить регистрацию, а мобильное приложение говорит что сервер типа не доступен, попробуйте поздже... Ну буду пробовать, чё.

Monday, September 24, 2012

Статья на Хабр про отладку native методов под Android

Статья вот. Чисто техническая хардкорная статья для тех кто в теме и желает быть в теме ещё больше. По-моему такие статьи и должны быть на Хабре. Однако почти сразу после того как я запостил эту статью, кто-то её минусанул. Статьи про любую сто раз пережеванную херню вроде "мои мега ценные мысли про суд яблочников против гнусмасов" набирают сотни плюсов. А техническая статья для которой неделю пришлось экспериментировать с неизвестными (по крайней мере в русско- и англоязычном интернете) материями - тут же получает минус. Возможно, я выбрал не тот ресурс и стоит писать куда-нибудь в более толерантное к моим задротстким статьям место?

Wednesday, September 5, 2012

Две статьи на Хабрахабр

По итогам раскопок и экспериментов на тему "отладка Smali кода с Apk-tool и NetBeans" писанул на Хабрахабр две статейки: раз и два. Может кому-то пригодится мой опыт :) Думаю покопать что-то на тему защиты, антиотладки, и конечно реверсинга native кода, тем более что в прошлом я с этим всем уже так или иначе сталкивался.

Saturday, September 1, 2012

Нет инструментов?

Чего-то я пока не нашел инструментов реверсинга для native приложений под Android. Понятно что аппаратные платформы под андроидом все разные, где-то ARM, а где-то и MIPS. Наверное в Google для того Dalvik и сделали, что бы обеспечить переносимость приложений на всём этом зоопарке железа. Но всё же хотелось бы какой-нить ARM-дизассемблер вменяемый и желательно бесплатный. В качестве debugger в принципе должен покатить gdb, но я его как-то не очень люблю если честно. Ладно, "будем искать" (с)

Пока писал этот пост, как-то тихо и незаметно пришла осень.

Thursday, August 30, 2012

Fink - всё

Учитывая что связка Apktool + NetBeans работает вполне прилично, я решил отложить Fink на неопределённое время (по факту - навсегда, но мне как-то не хочется в этом самому себе признаваться). Ну и ладно...

Breakpoints in Smali code

In one of my previous posts I wrote a step-by-step instruction how to debug Smali code with Apktool and NetBeans. However, there were no details about breakpoints, just a short note in steps 12 and 13
12. Set breakpoint. You must select line with some instruction, you can't set breakpoint on lines starting with ".", ":" or "#".
13. Trigger some action in application. If you run at breakpoint, then thread should stop and you will be able to debug step by step, watch variables, etc.
In this post I'm going to share more information about breakpoints in Smali code.

Monday, August 27, 2012

Debugging Smali code with apk-tool and NetBeans works!

Ho-ho-ho, it works now! Here is a (more or less detailed) how-to. To debug Smali code with apk-tool, you need
  1. Apk-tool 1.4.1 and NetBeans 6.8. Use these versions, not the latest ones! Currently, the latest versions of apk-tool and NetBeans do not allow to debug Smali code.
  2. Java, JDK and other stuff installed in your system to make Apk-tool and  NetBeans working

Sunday, August 26, 2012

Fink: первый блин

Первый запуск Fink показал, что подход был выбран простой и быстрый, но в корне не верный. Работает крайне нестабильно. Надо думать как в принципе сделать по другому. Пичалька, огорченьице, гневик...

Saturday, August 25, 2012

Fink is coming

Apk-tool and NetBeans do not work for me, so I'm coding my own tool called Fink. It's not a full-featured debugger; but anyway, it should help me to trace Smali inside an Android application, without Java sources. At least, I hope so :)

Friday, August 24, 2012

Отладчик уровня байткода для Android

Много гуглил, а потом с удивлением понял что для Android приложений видимо нету внятного отладчика уровня байткода Dalvik, т.е. что бы байткоды вроде
    # синтаксис Smali
    const-wide/16 v2, -0x1
    const/4 v1, 0x0
    const/4 v0, 0x0
можно было трассировать один за другим без исходников на Java. Отладка в debug mode с помочью apk-tool и старого NetBeans у меня так толком и не заработала. А другого ничего не выгугливается. Есть идея как это исправить, уже даже начал что-то говнокодить. Может получится, и может я не брошу эту идею на пол дороги как обычно бросаю неплохие идеи... эх, че-то у меня никакой мотивации по жизни.