Определение типа параметров функции

Тема в разделе "WASM.UNIX", создана пользователем toohtik, 22 фев 2009.

  1. toohtik

    toohtik New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2009
    Сообщения:
    10
    Привет! С ассемблером знаком весьма смутно, в пределах университетской программы.Сейчас программирую на С/С++ под UNIX (Mac OS). Так получилось, что надо дизассемблировать одну динамическую библиотеку (dylib) найти одну функцию и узнать какие она параметры принимает (тип, количество) и какие возвращает. Либу открывал через IDA. Функцию нашел, но по коду только смутные представления:
    Код (Text):
    1. __text:30A59EB0                 BL      _SBGetApplicationBadge
    2. __text:30A59EB4                 CMP     R0, #0
    3. __text:30A59EB8                 BNE     loc_30A59EE4
    4. __text:30A59EBC                 LDRSB   R3, [SP]
    5. __text:30A59EC0                 CMP     R3, #0
    6. __text:30A59EC4                 BEQ     loc_30A59EE4
    7. __text:30A59EC8                 LDR     R0, =(unk_38A85224 - 0x30A59EE0)
    8. __text:30A59ECC                 LDR     R1, =(unk_38A8718C - 0x30A59EDC)
    9. __text:30A59ED0                 MOV     R2, SP
    10. __text:30A59ED4                 LDR     R1, [PC,R1]     ; "stringWithUTF8String:"
    11. __text:30A59ED8                 LDR     R0, [PC,R0]
    12. __text:30A59EDC                 BL      _objc_msgSend
    13. __text:30A59EE0                 B       loc_30A59EE8
    14. __text:30A59EE4 ; ---------------------------------------------------------------------------
    15. __text:30A59EE4
    16. __text:30A59EE4 loc_30A59EE4                            ; CODE XREF: __text:30A59EB8j
    17. __text:30A59EE4                                         ; __text:30A59EC4j
    18. __text:30A59EE4                 MOV     R0, #0
    19. __text:30A59EE8
    20. __text:30A59EE8 loc_30A59EE8                            ; CODE XREF: __text:30A59EE0j
    21. __text:30A59EE8                 SUB     SP, R7, #8
    22. __text:30A59EEC                 LDMFD   SP!, {R4,R5,R7,PC}
    23. __text:30A59EEC ; ---------------------------------------------------------------------------
    24. __text:30A59EF0 off_30A59EF0    DCD unk_38A871EC - 0x30A59E88 ; DATA XREF: __text:30A59E78r
    25. __text:30A59EF4 off_30A59EF4    DCD unk_38A872DC - 0x30A59E9C ; DATA XREF: __text:30A59E90r
    26. __text:30A59EF8 off_30A59EF8    DCD unk_38A85224 - 0x30A59EE0 ; DATA XREF: __text:30A59EC8r
    27. __text:30A59EFC off_30A59EFC    DCD unk_38A8718C - 0x30A59EDC ; DATA XREF: __text:30A59ECCr
    Как я понял CMP R0, #0 делает сравнение 0 параметра функции с #0. #0 - это скорее всего строка? А R0, R1 ... Rx - это параметры функции? Что значит строка LDRSB R3, [SP] - по гуглу понял, что это загрузка из памяти?
    Далее следует вообще что то не понятное:
    LDR R0, =(unk_38A85224 - 0x30A59EE0) при наведении мышки на unk_38A85224 всплывает подсказка, в ней присутствует слово NSString - в Ojective C это строка. Т.е. как я понял идет объявление строки? Заранее спасибо!
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ЗЫ:
    Не пора ли WASM.ARM открывать ?
     
  3. ALLeX

    ALLeX Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    141
    Адрес:
    Ukraine
    EvilsInterrupt
    А почему нет? Вполне в тему. И я бы поучаствовал (если вопросы будут задавать по людски)
     
  4. toohtik

    toohtik New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2009
    Сообщения:
    10
    3 ответа и никакой конкретики. А я что не по людски задад вопрос?