import
lief
def
swap(obj,sym1,sym2):
s1
=
obj.get_symbol(sym1)
s2
=
obj.get_symbol(sym2)
temp
=
s2.name
s2.name
=
s1.name
s1.name
=
temp
if
__name__
=
=
'__main__'
:
lib_src
=
lief.parse(
"libnative-lib.so"
)
lib_code
=
lief.parse(
"libcodeProvider.so"
)
print
(lib_code)
swap(lib_src,
"Java_com_lzy_lieftest_MainActivity_Test1"
,
"Java_com_lzy_lieftest_MainActivity_Test2"
)
segment_added
=
lib_src.add(lib_code.segments[
1
])
code_test3
=
lib_code.get_symbol(
"test3"
)
code_innerCallFunctionRep
=
lib_code.get_symbol(
"innerCallFunctionRep"
)
lib_src.add_exported_function(segment_added.virtual_address
+
code_test3.value,
"test3Rep"
)
lib_src.add_exported_function(segment_added.virtual_address
+
code_innerCallFunctionRep.value,
"innerCallFunctionRep"
)
lib_src.write(
"libnative-lib1.so"
)