linux arm版本运行apk,在Linux ARM上运行Android的ARM二进制文件

请注意,Android的仿生lib可能存在依赖关系,这可能不会出现在另一个Linux ARM上?

您可以通过运行readelf -Ss binary_name来查看符号(如果有),

例如,使用readelf -Ss logwrapper

Symbol table '.dynsym' contains 47 entries:

Num: Value Size Type Bind Vis Ndx Name

0: 00000000 0 NOTYPE LOCAL DEFAULT UND

1: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr0

2: 00000000 0 FUNC GLOBAL DEFAULT UND strlen

3: 00000000 0 FUNC GLOBAL DEFAULT UND __errno

4: 00000000 0 FUNC GLOBAL DEFAULT UND open

5: 00000000 0 FUNC GLOBAL DEFAULT UND close

6: 00000000 0 FUNC GLOBAL DEFAULT UND __stack_chk_fail

7: 00000000 0 OBJECT GLOBAL DEFAULT UND __stack_chk_guard

8: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_unlock

9: 00000000 0 FUNC GLOBAL DEFAULT UND pthread_mutex_lock

10: 00000000 0 FUNC GLOBAL DEFAULT UND read

11: 00000000 0 FUNC GLOBAL DEFAULT UND abort

12: 00000000 0 OBJECT GLOBAL DEFAULT UND __sF

13: 00000000 0 FUNC GLOBAL DEFAULT UND memcpy

14: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_init

15: 00000000 0 FUNC GLOBAL DEFAULT UND exit

16: 0000a170 0 NOTYPE GLOBAL DEFAULT 19 __dso_handle

17: 0000a008 0 NOTYPE GLOBAL DEFAULT 13 __INIT_ARRAY__

18: 0000a010 0 NOTYPE GLOBAL DEFAULT 14 __FINI_ARRAY__

19: 00000000 0 FUNC GLOBAL DEFAULT UND setgid

20: 00000000 0 FUNC GLOBAL DEFAULT UND writev

21: 00000000 0 FUNC GLOBAL DEFAULT UND dup2

22: 00000000 0 FUNC GLOBAL DEFAULT UND access

23: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr1

24: 00000000 0 FUNC GLOBAL DEFAULT UND memmove

25: 00000000 0 FUNC GLOBAL DEFAULT UND fork

26: 00000000 0 FUNC GLOBAL DEFAULT UND execvp

27: 00000000 0 FUNC GLOBAL DEFAULT UND strncmp

28: 00000000 0 FUNC GLOBAL DEFAULT UND strcmp

29: 00000000 0 FUNC GLOBAL DEFAULT UND ptsname

30: 00000000 0 FUNC GLOBAL DEFAULT UND setuid

31: 00000000 0 FUNC GLOBAL DEFAULT UND strerror

32: 00000000 0 FUNC GLOBAL DEFAULT UND vsnprintf

33: 00000000 0 FUNC GLOBAL DEFAULT UND unlockpt

34: 00000000 0 FUNC GLOBAL DEFAULT UND wait

35: 00000000 0 FUNC GLOBAL DEFAULT UND fputs

36: 00009318 0 NOTYPE GLOBAL DEFAULT ABS __exidx_start

37: 00009368 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end

38: 0000a15c 0 NOTYPE GLOBAL DEFAULT 18 __data_start

39: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS _edata

40: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS __bss_start

41: 0000a170 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__

42: 0000a188 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__

43: 0000a188 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__

44: 0000a188 0 NOTYPE GLOBAL DEFAULT ABS __end__

45: 0000a188 0 NOTYPE GLOBAL DEFAULT ABS _end

46: 00080000 0 NOTYPE GLOBAL DEFAULT ABS _stack

注意使用的符号,这是检查符号的提示,最后发出这个,readelf -d logwrapper

Dynamic section at offset 0x2020 contains 24 entries:

Tag Type Name/Value

0x00000003 (PLTGOT) 0xa0e8

0x00000002 (PLTRELSZ) 208 (bytes)

0x00000017 (JMPREL) 0x875c

0x00000014 (PLTREL) REL

0x00000011 (REL) 0x882c

0x00000012 (RELSZ) 16 (bytes)

0x00000013 (RELENT) 8 (bytes)

0x00000015 (DEBUG) 0x0

0x00000006 (SYMTAB) 0x8280

0x0000000b (SYMENT) 16 (bytes)

0x00000005 (STRTAB) 0x8570

0x0000000a (STRSZ) 490 (bytes)

0x00000004 (HASH) 0x8128

0x00000001 (NEEDED) Shared library: [libc.so]

0x00000001 (NEEDED) Shared library: [libstdc++.so]

0x00000001 (NEEDED) Shared library: [libm.so]

0x00000020 (PREINIT_ARRAY) 0xa000

0x00000021 (PREINIT_ARRAYSZ) 0x8

0x00000019 (INIT_ARRAY) 0xa008

0x0000001b (INIT_ARRAYSZ) 8 (bytes)

0x0000001a (FINI_ARRAY) 0xa010

0x0000001c (FINI_ARRAYSZ) 8 (bytes)

0x0000001e (FLAGS)

0x00000000 (NULL) 0x0

在运行时有三个动态链接的库,事实上,仿生库是从本机C和Android角度来看的libc.so,所以先仔细检查一下!

还有其他ARM libc.so将以ucLibC为幌子,因此里程可能会有所不同.唯一可以看到的方法是在Linux ARM下运行它以查看会发生什么,如果它因为分段错误或总线错误而爆炸,那么你就会知道.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值