Няшная / Говнокод #26076 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
void sensor_init_regctl(void)

{
  int iVar1;
  
                    /* Reading /rom/custom_setting_gm.ini
                       Setting I2CPortChange val from file */
  custom_setting_gm_get_I2C();
                    /* Checking for I2CPortChange in /rom/custom_setting_gm.ini
                       (default = 1) */
  iVar1 = GET_I2CPortChange_glob();
  if (iVar1 != 0) {system("rmmod gpioi2c"); usleep(50000);Regctl_main_function();system("insmod /npc/patch/gpioi2c2.ko");} return;}

void Regctl_main_function(void)
{
  uint uVar1; uVar1 = Regctl_set_ioctl5(0x90c00000,0x54);
  Regctl_set_2_dwWriteRegVal(-0x6f400000,0x54,uVar1 & 0xfffc3fff | 0x28000);
  return;
}

int Regctl_set_ioctl5(ulong param_1,ulong param_2)

{
  int __fd;  int iVar1;  ulong local_20;  ulong uStack28;  int *local_10;  int iStack12;

  local_10 = &iStack12;
  local_20 = param_1;
  uStack28 = param_2;
  __fd = pl_open_file("/dev/regctl",2,"dwReadRegVal",0x1b);
  if (__fd == 0) {
    printf("%s: error:  open dev/misc/regctl  fail \n","dwReadRegVal");
  }
  else {
    iVar1 = ioctl(__fd,5,&local_20);
    if (iVar1 == -1) {
      printf("%s: error:  regctl ioctl fail \n","dwReadRegVal");
      pl_close_file(__fd,"dwReadRegVal",0x26);
      __fd = 0;
    }
    else {
      pl_close_file(__fd,"dwReadRegVal",0x2a);
      __fd = *local_10;
    }
  }
  return __fd;
}
int Regctl_set_2_dwWriteRegVal(int param_1,int param_2,int param_3)

{
  int __fd; int iVar1; int local_24 [2];int local_1c; int local_18;int *local_c; local_c = local_24; local_24[0] = param_3;  local_1c = param_1; local_18 = param_2;
  __fd = pl_open_file("/dev/regctl",2,"dwWriteRegVal",0x3c);
  if (__fd == 0) {
    printf("%s: error:  open dev/misc/regctl  fail \n","dwWriteRegVal");
  }
  else {
    iVar1 = ioctl(__fd,1,&local_1c);
    if (iVar1 == -1) {
      printf("%s: error:  regctl ioctl fail \n","dwWriteRegVal");
      pl_close_file(__fd,"dwWriteRegVal",0x49);
      __fd = 0;
    }
    else {
      pl_close_file(__fd,"dwWriteRegVal",0x4d);
      __fd = 1;
    }
  }
  return __fd;
}

Помогите разреверсить код из прошивки камеры Rubetek RV-3414 (основана на SoC GrainMedia GM8136). Это код из Ghidra. Интересует функция Regctl_main_function.

dump из strace:
open("/dev/regctl", O_RDWR) = 3 <0.000901>
ioctl(3, _IOC(_IOC_NONE, 0, 0x5, 0), 0x7eee2c18) = 0 <0.000308>
close(3) = 0 <0.000256>
open("/dev/regctl", O_RDWR) = 3 <0.000422>
ioctl(3, FIBMAP, 0x7eee2c1c) = 0 <0.000105>
close(3)

local_20 и uStack28 - это struct?

Запостил: a0a1 a0a1, (Updated )

Комментарии (55) RSS

  • Это к @bormand и @j123123, может быть к @ikanus-gray
    Ответить
    • Хуй знает как гидра переменные нумерует... Если по оффсету во фрейме - да, похоже на структуру.
      Ответить
  • uStack28 что-то нигде не используется, возможно это часть local_20, а в ioctl вторым параметром передается её размер 5. Судя по размеру структурка или массив.

    sizeof(ulong) == 4? Скорее всего 3 оставшихся бата от uStack28 для выравнивания.

    ЗЫ. бинарь лень разбирать.
    Ответить
    • Выровнял твои гланды, проверь.
      На, заебал.

      * g o a t s e x * g o a t s e x * g o a t s e x *
      g                                               g  
      o /     \             \            /    \       o
      a|       |             \          |      |      a
      t|       `.             |         |       :     t
      s`        |             |        \|       |     s
      e \       | /       /  \\\   --__ \\       :    e
      x  \      \/   _--~~          ~--__| \     |    x  
      *   \      \_-~                    ~-_\    |    *
      g    \_     \        _.--------.______\|   |    g
      o      \     \______// _ ___ _ (_(__>  \   |    o
      a       \   .  C ___)  ______ (_(____>  |  /    a
      t       /\ |   C ____)/      \ (_____>  |_/     t
      s      / /\|   C_____)       |  (___>   /  \    s
      e     |   (   _C_____)\______/  // _/ /     \   e
      x     |    \  |__   \\_________// (__/       |  x
      *    | \    \____)   `----   --'             |  *
      g    |  \_          ___\       /_          _/ | g
      o   |              /    |     |  \            | o
      a   |             |    /       \  \           | a
      t   |          / /    |         |  \           |t
      s   |         / /      \__/\___/    |          |s
      e  |           /        |    |       |         |e
      x  |          |         |    |       |         |x
      * g o a t s e x * g o a t s e x * g o a t s e x *
      Ответить
    • Да, скорей всего это структура.

      uint uVar1; uVar1 = Regctl_set_ioctl5(0x90c00000,0x54); printf("uVar1: %d\n", uVar1);

      Если заменить
      local_20 = param_1;
        uStack28 = param_2;
        iVar1 = ioctl(__fd,5,&local_20);

      на
      //пишу по памяти, не проверял
      typedef struct {
              unsigned int  a1;
              unsigned int  a2;
      }just_another_struct;
      just_another_struct my_struct;
        my_struct.a1 = param_1;
        my_struct.a2 = param_2;
        iVar1 = ioctl(__fd,5,&my_struct);


      то: в первом случае uVar1 - 0, в другом - положительная цифра
      Ответить
      • Сколько раз ты сел на хуй, прежде чем стал кодить на сях?
        Покайся, тут свои.
        Ответить
    • Второй параметр используется в regctl.ko. Ссылка на pastebin ниже
      Ответить
      • тада первый парам это указитель на структуру?

        #define SNESTI_JAITSO 5

        ioctl(pointer_to_jaitso, SNESTI_JAITSO) ?
        Ответить
        • В первом параметре хендл девайса. Аргументы ioctl в третьем.
          Ответить
          • int ioctl(int fd, unsigned long request, ...);
            запрос поступает к создавшему дивайс дройверу?

            а стек е, как в пинде?
            Ответить
  • * g o a t s e x * g o a t s e x * g o a t s e x *
    g g
    o / \ \ / \ o
    a| | \ | | a
    t| `. | | : t
    s` | | \| | s
    e \ | / / \\\ --__ \\ : e
    x \ \/ _--~~ ~--__| \ | x
    * \ \_-~ ~-_\ | *
    g \_ \ _.--------.______\| | g
    o \ \______// _ ___ _ (_(__> \ | o
    a \ . C ___) ______ (_(____> | / a
    t /\ | C ____)/ \ (_____> |_/ t
    s / /\| C_____) | (___> / \ s
    e | ( _C_____)\______/ // _/ / \ e
    x | \ |__ \\_________// (__/ | x
    * | \ \____) `---- --' | *
    g | \_ ___\ /_ _/ | g
    o | / | | \ | o
    a | | / \ \ | a
    t | / / | | \ |t
    s | / / \__/\___/ | |s
    e | / | | | |e
    x | | | | | |x
    * g o a t s e x * g o a t s e x * g o a t s e x *
    Ответить
      • На, заебал.

        * g o a t s e x * g o a t s e x * g o a t s e x *
        g                                               g  
        o /     \             \            /    \       o
        a|       |             \          |      |      a
        t|       `.             |         |       :     t
        s`        |             |        \|       |     s
        e \       | /       /  \\\   --__ \\       :    e
        x  \      \/   _--~~          ~--__| \     |    x  
        *   \      \_-~                    ~-_\    |    *
        g    \_     \        _.--------.______\|   |    g
        o      \     \______// _ ___ _ (_(__>  \   |    o
        a       \   .  C ___)  ______ (_(____>  |  /    a
        t       /\ |   C ____)/      \ (_____>  |_/     t
        s      / /\|   C_____)       |  (___>   /  \    s
        e     |   (   _C_____)\______/  // _/ /     \   e
        x     |    \  |__   \\_________// (__/       |  x
        *    | \    \____)   `----   --'             |  *
        g    |  \_          ___\       /_          _/ | g
        o   |              /    |     |  \            | o
        a   |             |    /       \  \           | a
        t   |          / /    |         |  \           |t
        s   |         / /      \__/\___/    |          |s
        e  |           /        |    |       |         |e
        x  |          |         |    |       |         |x
        * g o a t s e x * g o a t s e x * g o a t s e x *
        Ответить
        • На, заебал.

          * g o a t s e x * g o a t s e x * g o a t s e x *
          g                                               g  
          o /     \             \            /    \       o
          a|       |             \          |      |      a
          t|       `.             |         |       :     t
          s`        |             |        \|       |     s
          e \       | /       /  \\\   --__ \\       :    e
          x  \      \/   _--~~          ~--__| \     |    x  
          *   \      \_-~                    ~-_\    |    *
          g    \_     \        _.--------.______\|   |    g
          o      \     \______// _ ___ _ (_(__>  \   |    o
          a       \   .  C ___)  ______ (_(____>  |  /    a
          t       /\ |   C ____)/      \ (_____>  |_/     t
          s      / /\|   C_____)       |  (___>   /  \    s
          e     |   (   _C_____)\______/  // _/ /     \   e
          x     |    \  |__   \\_________// (__/       |  x
          *    | \    \____)   `----   --'             |  *
          g    |  \_          ___\       /_          _/ | g
          o   |              /    |     |  \            | o
          a   |             |    /       \  \           | a
          t   |          / /    |         |  \           |t
          s   |         / /      \__/\___/    |          |s
          e  |           /        |    |       |         |e
          x  |          |         |    |       |         |x
          * g o a t s e x * g o a t s e x * g o a t s e x *
          Ответить
  • a0a1, вы прямо как 12-летний подросток, пытаетесь заебать весь мир своими никому не интересными проблемами.
    Что, если нет модерации на ресурсе, значит, надо тут же снимать штаны и начинать срать во все стороны?
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8