RENG.RU

RE/System Programming
Текущее время: 16 дек 2017, 02:58

Часовой пояс: UTC + 6 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: arm decompiler от hex-rays
СообщениеДобавлено: 09 июн 2010, 18:06 
Не в сети

Зарегистрирован: 25 сен 2002, 07:37
Сообщения: 685
Откуда: Rus
кто-нть щупал? как оно?

_________________
/kab


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 11 июн 2010, 16:27 
Не в сети

Зарегистрирован: 12 дек 2002, 04:05
Сообщения: 103
Откуда: Saint-Petersburg
первые впечатления довольно неплохие, очень радует, что не надо платить дополнительно денег за это :mrgreen:

ИзображениеИзображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 11 июн 2010, 17:59 
Не в сети

Зарегистрирован: 25 сен 2002, 07:37
Сообщения: 685
Откуда: Rus
угу, я тож повертел. неидеально, но намного лучше, чем код разбирать в асме армовском...

_________________
/kab


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 15 июн 2010, 07:49 
Не в сети

Зарегистрирован: 31 июл 2002, 13:32
Сообщения: 450
а как там с линуксовым кодом (который все адресует через global offset table, или как его там), и с мешаниной армотумбов? На скриншотах - вында, там сам по себе код простой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 16 июн 2010, 11:56 
Не в сети

Зарегистрирован: 25 сен 2002, 07:37
Сообщения: 685
Откуда: Rus
дай пример кода

_________________
/kab


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 17 июн 2010, 08:04 
Не в сети

Зарегистрирован: 31 июл 2002, 13:32
Сообщения: 450
kab писал(а):
дай пример кода


Вложения:
Комментарий к файлу: пример android
qemu-img.rar [214.16 Кб]
Скачиваний: 664
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 17 июн 2010, 08:06 
Не в сети

Зарегистрирован: 31 июл 2002, 13:32
Сообщения: 450
Это первый попавшийся файл собранный для андроида. Там arm-linux, и есть отладочная информация, посмотри заодно подтянет ли ее IDA. Файла с мешаниной арм-тумб не найду, я как ушел с ВынМобайл, зарезал все наработки на ДВД и закинул на полку, лень искать :)
Там мешанина была в бутлоадерах и в прошивках радио части.
Код:
    a1dc:   e5873000    str r3, [r7]
    if (!strcmp(cmd, "create")) {
    a1e0:   e59f1e04    ldr r1, [pc, #3588] ; afec <main+0xe4c>
    a1e4:   ebfffe28    bl  9a8c <_init+0x358>
    a1e8:   e3500000    cmp r0, #0  ; 0x0

<_init+0x358> выглядит так:
add ip, pc, #0  ; 0x0
add ip, ip, #315392 ; 0x4d000
ldr pc, [ip, #4020]!

Вызов <_init+0x358> - это так вызов strcmp выглядит. В принципе, IDA такие конструкции вполне нормально воспринимает, так что, думаю, все разгребется в красивый код. Оригинальный код main() выглядит так, для сравнения:
Код:
int main(int argc, char **argv)
{
    const char *cmd;

    bdrv_init();
    if (argc < 2)
        help();
    cmd = argv[1];
    optind++;
    if (!strcmp(cmd, "create")) {
        img_create(argc, argv);
    } else if (!strcmp(cmd, "commit")) {
        img_commit(argc, argv);
    } else if (!strcmp(cmd, "convert")) {
        img_convert(argc, argv);
    } else if (!strcmp(cmd, "info")) {
        img_info(argc, argv);
    } else {
        help();
    }
    return 0;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 17 июн 2010, 13:34 
Не в сети

Зарегистрирован: 25 сен 2002, 07:37
Сообщения: 685
Откуда: Rus
дебаг подтянулся вроде, не знаю насколько полно.
а компилер сделал inline на функи img_*, так что там прилично много кода в main, в декомпиленном виде - несколько страниц.
кусок из начала (никакого редактирования базы не было, тупо загрузка и засовывание в декомпилер):
Код:
  v2 = a1;
  v3 = a2;
  v4 = bdrv_init();
  if ( v2 <= 1 )
    help(v4);
  v5 = *(const char **)(v3 + 4);
  v6 = *(const char **)(v3 + 4);
  ++optind;
  if ( strcmp(v6, "create") )
  {
    if ( !strcmp(v5, "commit") )
    {
      v12 = 0;
      while ( 1 )
      {
        v13 = getopt(v2, (char *const *)v3, "f:h");
        if ( v13 == -1 )
          break;
        if ( v13 == 102 )
        {
          v12 = optarg;
        }
        else
        {
          if ( v13 == 104 )
            help(104);
        }
      }
      v14 = optind;
      if ( optind >= v2 )
        help(-1);
      ++optind;
      v15 = *(const char **)(v3 + 4 * v14);
      v16 = bdrv_new(&aDiskDescript_0[176]);
      if ( v16 )
      {
        if ( !v12 )
        {
          v17 = 0;
LABEL_20:
          if ( bdrv_open2(v16, v15, 0, v17) < 0 )
          {
            v18 = v15;
LABEL_221:
            v146 = "Could not open '%s'";
            goto LABEL_222;
          }
          v19 = bdrv_commit(v16);
          if ( v19 == -13 )
            error("Image is read-only");
          if ( (unsigned __int8)(v19 + 13 < 0 ^ __OFADD__(v19, 13)) | v19 == -13 )
          {
            if ( v19 == -95 )
            {
              v20 = "Image is already committed";
              goto LABEL_28;
            }
          }
          else
          {
            if ( v19 == -2 )
              error("No disk inserted");
            if ( !v19 )
            {
              AND_printf("Image committed.\n");
              bdrv_delete(v16);
              return 0;
            }
          }
          v20 = "Error while committing image";
LABEL_28:
          error(v20);
        }

_________________
/kab


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 18 июн 2010, 07:33 
Не в сети

Зарегистрирован: 31 июл 2002, 13:32
Сообщения: 450
очень неплохо выглядит. Буду значит ждать когда кто-нибудь зарелизит :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 12 май 2011, 16:56 
Не в сети

Зарегистрирован: 31 июл 2002, 14:01
Сообщения: 684
А может кто-нибудь из владеющих доступом к subj-у поделиться впечатлениями после года использования? СтОит оно своих денег?

И, хоть и не совсем в тему, такой еще вопрос: может кто-то встречал обфускаторы кода под ARM?

Заранее спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 24 июн 2011, 15:17 
Не в сети

Зарегистрирован: 03 сен 2002, 01:48
Сообщения: 189
Dmit писал(а):
И, хоть и не совсем в тему, такой еще вопрос: может кто-то встречал обфускаторы кода под ARM?

В Navitel Navigator (версии ниже 3.5) под Windows Mobile раньше использовалась такая схема защиты кода: наиболее важные участки кода (десятки, если не сотни) расшифровывалось на лету полиморфными декрипторами, в том числе и многослойными, исполнялись и вновь возвращались к первоначальному виду. В версии 3.5 они это убрали, похоже были проблемы со стабильностью. Вернули ли это сейчас - не проверял.

А декрипторы выглядели примерно так:

Код:
loc:
LDR     R0, [R2]
STR     R0, [R1]
ADD     R1, R1, #4
SUB     R0, R0, #0x3D
NOP
ADD     R0, R0, #0xA
NOP
ADD     R0, R0, #0xC2
NOP
NOP
ADD     R0, R0, #0x44
ADD     R0, R0, #0xCE
ADD     R0, R0, #0x5F
NOP
ADD     R0, R0, #0xEB
SUB     R0, R0, #0x52
STR     R0, [R2]
ADD     R2, R2, #4
CMP     R2, R3
BLT     loc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 04 ноя 2011, 01:04 
Не в сети

Зарегистрирован: 31 июл 2002, 16:58
Сообщения: 541
Откуда: Kiev
Не появилось ли возможности пощупать subj?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: arm decompiler от hex-rays
СообщениеДобавлено: 07 ноя 2011, 16:51 
Не в сети

Зарегистрирован: 25 сен 2002, 07:37
Сообщения: 685
Откуда: Rus
arm в паблике не видел... кроме того, он исключен из пакета hex-rays и перенесен в отдельный (платный) пакет...

_________________
/kab


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 6 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB