@dvsor

Что делает эта чудо-функция (ARM/Thumb) (SAMP ANDROID)?

Во время реверса клиента SAMP на андроид наткнулся на вот это чудо:
какая-то дичь
https://pastebin.com/5Ue6wYM0
ну или (бесполезный) псевдокод:
void __fastcall encrypt(int *a1, char *a2, unsigned int a3, int a4)
{
  int v4; // [sp+38h] [bp+8h]

  if ( !(a3 >> 2) )
    JUMPOUT(0x88922);
  sub_88868(a3 >> 2, (int)a2, a3, a4, v4);
}



немного листинга после этой функции до заведомо другой функции (насильно превратил в код, до этого там был обычный undefined):
ещё не много дичи

в 1 и 2 аргументах передаются массивы (точнее, ссылки на них) из 4 int'ов и из 8 char'ов соответственно. 3 и 4 аргумент - 8 и 32.
вызов чуда

.text:00094A6C                 ADD.W           R0, R6, #0x398 ; a1 - int[4]
.text:00094A70                 ADD.W           R1, R6, #0x3B8 ; a2 - char[8]
.text:00094A74                 MOVS            R2, #8  ; a3
.text:00094A76                 MOVS            R3, #0x20 ; ' ' ; a4
.text:00094A78

если что, в R6 находится SP

пробовал изменить границы, но там дохрена неопределенных переменных и ничего полезного соответственно нет...
надеюсь кто-нибудь поопытнее меня сможет понять, что делает эта функция со вторым аргументом.
и да, по моим тестам, она выдаёт каждый раз разный результат при одинаковых значениях.
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы