LINUX.ORG.RU

ARM shared lib на архитектуре i686


0

2

Приветсвую. Есть библиотека: (для андроида)

ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped
Нужно ее использовать на линукс машине для некоторых задач, исходников нет, заголовков нет.

Основной смысл, это найти в ней функцию, или несколько для одной задачи, и использовать ее.

Хотелось бы услышать варианты развития событий, так как очень нужно.

дизассемблировать, перевести в код на x86(в ассемблерный код, например).

Других вариантов нет.

anonymous
()
arm-elf-objdump -b binary -m arm -EL --prefix-addresses -D lib.so

получил кучу текста вида:


lib.so:     file format binary


Disassembly of section .data:
0x00000000              ; <UNDEFINED> instruction: 0x464c457f
0x00000004 andeq        r0, r1, r1, lsl #2
        ...
0x00000010 eoreq        r0, r8, r3
0x00000014 andeq        r0, r0, r1
0x00000018 andseq       r9, r3, ip, lsr #11
0x0000001c andeq        r0, r0, r4, lsr r0
0x00000020 addeq        lr, r0, ip, lsr r3
0x00000024 streq        r0, [r0, #-2]
0x00000028 eoreq        r0, r0, r4, lsr r0
0x0000002c eoreq        r0, r8, r5
0x00000030 andseq       r0, r3, r4, lsl r0
0x00000034 andvc        r0, r0, r1
0x00000038 rsbseq       r7, r7, r8, ror r2
0x0000003c rsbseq       r7, r7, r8, ror r2
0x00000040 rsbseq       r7, r7, r8, ror r2
0x00000044 muleq        r4, r0, r7
0x00000048 muleq        r4, r0, r7
0x0000004c andeq        r0, r0, r4
0x00000050 andeq        r0, r0, r4
0x00000054 andeq        r0, r0, r1
        ...
0x00000064 rsbseq       sl, fp, r8, lsl #20
0x00000068 rsbseq       sl, fp, r8, lsl #20
0x0000006c andeq        r0, r0, r5
0x00000070 andeq        r1, r0, r0
0x00000074 andeq        r0, r0, r1
0x00000078 rsbseq       sl, fp, r8, lsl #20
0x0000007c rsbseq       fp, fp, r8, lsl #20
0x00000080 rsbseq       fp, fp, r8, lsl #20
0x00000084              ; <UNDEFINED> instruction: 0x000503bc
0x00000088 andeq        pc, r7, r0, asr #22
0x0000008c andeq        r0, r0, r6
0x00000090 andeq        r1, r0, r0
0x00000094 andeq        r0, r0, r2

как дальше мне с ним быть?

libbkmz
() автор топика
Ответ на: комментарий от libbkmz

замени -D на -d -j .text в опциях

а потом го читать книжки по ассемблеру x86, и когда начнёшь что-то понимать по асму arm

anonymous
()
Ответ на: комментарий от Harald

ну и где он не дизассемблировал? дизассемблировал же :)
инструцкии на ARM-ассемблере есть ? есть

то что он получил не инструкции а каша.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

Ну переписывать скорее всего не получится, там довольно много кода, а есть вариант сделать ее как обычную либу и использовать функции из нее?

И да, как мне получить список функций?

libbkmz
() автор топика
Ответ на: комментарий от Harald

о, вот и школота набижала

что по-твоему находится в секции .data?

ну и вообщем-то это на код ниразу не похоже

anonymous
()
Ответ на: комментарий от anonymous

что по-твоему находится в секции .data?

ааа, упс, точно, не заметил

Harald ★★★★★
()

Да не слушай ты их. Дизассемблировать и переписать под x86 - сложно. Оберни эту библиотеку в программу, запускающуюся на арме, а дальше используй QEMU, чтобы запустить программу, и свяжи ее каким-нибудь RPC с тем, что тебе нужно.

Deleted
()
Ответ на: комментарий от Deleted

Не совсем понял, тоесть мне нужно написать программу которая будет работать на арме под QEMU? Какие есть простые варианты? Питон умеет ctype в арме?

libbkmz
() автор топика
Ответ на: комментарий от exception13

А это разве не очевидно? Хотя можно и system, но это будет overkill.

Deleted
()
Ответ на: комментарий от libbkmz

Питон умеет ctype в арме?

вам батенька в школе про процессорные архитектуры и наборы команд не рассказывали? вы делаете меня facepalm.gif

exception13 ★★★★★
()

Основной смысл, это найти в ней функцию, или несколько для одной задачи, и использовать ее.

проглядел. тогда тебе точно нужна IDA Pro. ибо так удобнее и быстрее разбирать как это работает.

exception13 ★★★★★
()
Ответ на: комментарий от libbkmz

Не совсем понял, тоесть мне нужно написать программу которая будет работать на арме под QEMU?

Да.

Какие есть простые варианты?

Бери %random_language%, поднимай кросскомпиляцию этого языка под нужную тебе систему и нужную архитектуру, поднимай систему, на которой твоя библиотека и твоя программа будут работать, под QEMU. Задача программы - получать вызовы по какому-нибудь IPC/RPC, вызывать соответствующие функции библиотеки и возвращать результат по тому же IPC/RPC.

Однако, если библиотека под андроид, а не нормальный Linux, придется подолбаться.

Питон умеет ctype в арме?

Умеет все то же, что и на x86.

Deleted
()

А что делает эта библиотека? Может есть нативные аналоги, либо их можно быстро написать.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от AptGet

Эта библиотека из одного проприетарного продукта, через которую, вероятно, я смогу получить доступ к файлу в их собственном формате.

libbkmz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.