Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 12.01.2021
Сообщений: 1
1

Понимаем Си код Hex_rays от IDA PRO, [для гуру C языка]

12.01.2021, 21:41. Просмотров 1102. Ответов 0
Метки нет (Все метки)

В общем, декомпелировал .so библиотеку , в ней нашел нужную функцию, функция сапа по себе должна делать вычисления с переданными в нее переменными a1,a2,a3. Использую плагин Hex_rays в ida pro, так как в ассемблере ноль, а в си хоть год опыта есть, хотя судя по всему мне его ой как не хватает чтобы понять этот код.
В a1 передается = 0xC9A6010C , в a2 = 0xF1FFDFEF
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
signed int __fastcall SEC_calc_erc(unsigned int a1, unsigned int a2, _DWORD *a3)
{ 
   unsigned int First_Sub_Input_Int; // r6
   unsigned int Second_Sub_Input_Int; // r5
   char v30;
   char *v6; // r7
   int v10;
   int v7; // r3
   char *s;
  char v29[16];
  unsigned int Assign1; // r1
  unsigned int Assign2; // r2
   unsigned __int8 v39;
  v31 = -957500609;
  memset(&s, 0, 0x18u);
  memset(&v30, 0, 0x10u);
  memset(v29, 0, 0x10u);
  memset(&v39, 0, 8u);
  memset(&v43, 0, 4u);
 First_Sub_Input_Int = a1;
  Second_Sub_Input_Int = a2;
 v6 = &v30;
  v7 = 0;
  do
  {
    Assign1 = Second_Sub_Input_Int >> v7;
    Assign2 = First_Sub_Input_Int >> v7;
    v7 += 8;
    *v6 = Assign1;
    (v6++)[4] = Assign2;
  }
  while ( v7 != 32 );
  s = &v30;
  v10 = sub_5C4((int)&s, 16, (int)&v31);
  if ( v10 == -4 )
    return -2;
  if ( v10 )
    return -1;
  do
  {
    *(&v39 + v10) = v29[v10];
    ++v10;
  }
  while ( v10 != 8 );
}
В начале, в целом понятно:
C
1
2
3
4
5
6
7
8
9
10
  v7 = 0;
  do
  {
    Assign1 = Second_Sub_Input_Int >> v7;
    Assign2 = First_Sub_Input_Int >> v7;
    v7 += 8;
    *v6 = Assign1;
    (v6++)[4] = Assign2;
  }
  while ( v7 != 32 );
функция смещает переданные данные a1,a2,a3 четыре раза по одному байту в char *v6 которые связан с v30,
тут:
C
1
(v6++)[4] = Assign2;
функция вообще увеличивает адресс на один и кладет утда смещенный байт который в assign2.
А вот, что дальше я вообще не могу понять:
C
1
2
  s = &v30;
  v10 = sub_5C4((int)&s, 16, (int)&v31);
что тут передается под &s? 1 байт который был последний смещен в адрес v30? или v30 все таки массив из 16 байт, так как memset(&v30, 0, 0x10u); намекает на это.
&v31 - как я понял он передает сам адрес в sub_5C4
сам sub_5C4 внутри выглядит вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int __fastcall sub_5C4(int a1, int a2, int a3)
{
  int v3; // r0
  int v5; // [sp+0h] [bp-10h]
  int v6; // [sp+4h] [bp-Ch]
  int v7; // [sp+8h] [bp-8h]
 
  v7 = a3;
  v6 = -1;
  v5 = a1;
  v3 = _return_address();
  sub_5E4((int)&v5, 0x150C7Cu, v3);
  return v6;
}
тут я вообще не понял он возращает по итогу v6 который выше приравнивает к -1, Тогда получается работа с a1,a2,a3 прекращена, и как вообще -1 пихается сюда?
C
1
2
3
4
5
6
  do
  {
    *(&v39 + v10) = v29[v10];
    ++v10;
  }
  while ( v10 != 8 );
Вообщем нужна любая помощь комрады, заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2021, 21:41
Ответы с готовыми решениями:

Ассемблерный код вируса (IDA Pro)
Здравствуйте. Помогите пожалуйста разобраться с ассемблерным кодом. До этого никогда не учил, а...

Плагин на питоне для IDA PRO
ДОБРЫЙ ДЕНЬ! Помогите подключить плагин на python для IDA PRO!

Написать плагин для IDA PRO на Python
Помогите написать плагин для IDA Pro на python! Суть работы плагина: поиск одинаковых строк в...

Штатные средства IDA PRO для сохранение дампа памяти встроенного отладчика
Здравствуйте уважаемые специалисты. Вот произвожу отладку кода архиватора на IDA PRO В процессе...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2021, 21:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ida pro
таварищи подскажите де добыть сей софт(ida pro) с кряком google шо-то не помог

Поиск в Ida Pro
Добрый день! Извиняюсь если такой вопрос уже был но как в Ida Pro выполнить поиск по radiobutton?...

Настройка IDA Pro v7
У меня ОС - Microsoft Windows 8.1 Professional x64. Установлена Microsoft Visual Studio 2015 и...

IDA PRO and atmega2561
Кто нибудь добавлял описание atmega2561 в avr.cfg для IDA Pro? Сам добавил, вот только сомневаюсь,...

Скрипты в IDA Pro Advanced.v6.1
Тринируюсь писать скрипты, вчера уже написал один рабочий. Хочу удлинить прогу, и в заданое...

IDA PRO загрузить файл
Здравствуйте уважаемые специалисты. В часто задаваемых вопросах по IDA PRO мало внимание уделено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.