Xin lưu ý rằng có thể có các phụ thuộc trên bionic
lib của Android có thể không có trên một ARM Linux khác?
Bạn có thể kiểm tra bằng cách chạy một readelf -Ss binary_name
để xem những biểu tượng nếu có,
Ví dụ, sử dụng 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
Chú ý những biểu tượng được sử dụng, đó là gợi ý của bạn để kiểm tra những biểu tượng, cuối cùng vấn đề này, 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ó ba thư viện liên kết động trong lúc chạy-thời gian, điều, Thư viện bionic
là libc.so
từ góc độ gốc C và Android, Vì vậy hãy kiểm tra kỹ lần đầu tiên đó!
Có các ARM libc.so
khác sẽ nằm dưới vỏ bọc ucLibC để số dặm có thể thay đổi. Chỉ có cách để xem, là để chạy nó dưới Linux ARM để xem những gì sẽ xảy ra, nếu nó bom ra với lỗi phân đoạn hoặc lỗi xe buýt, bạn sẽ biết sau đó.
Bạn vừa thử chạy nó dưới dạng './Sopclient'? Có vẻ như bạn đang cố gắng chạy nó với 'sh', điều này sẽ cố gắng diễn giải tệp dưới dạng tệp shell (do đó là lỗi). – mdm
Chạy dưới dạng './Sopclient' nói * -bash: ./sopclient: Không có tệp hoặc thư mục nào *. Nhưng sopclient nằm trong thư mục hiện hành và có thể thực hiện được – ov1d1u
Ngoài vấn đề thư viện hệ thống (bạn có thể sửa lỗi với thư viện android trong/system/lib và linker trong/system/bin), chương trình không thể có thể sử dụng trừ khi giao diện đến và đi là những giao diện bạn có thể sao chép. Ở phía bên bạn có thể có các API mạng tiêu chuẩn, nhưng trừ khi nó kết xuất các kết quả đến stdout hoặc các tập tin, bên gửi đi sẽ là một thách thức. –