如何用gdb找到android so文件中的加密key

发布网友 发布时间:2022-04-21 19:58

我来回答

1个回答

热心网友 时间:2023-09-04 10:33

你好,我现在能够用NDK的如下方式写几个简单的文件,然后打包为SO,再用另外的一个.C文件调用SO,然后生成最终的供Android使用的SO文件,具体方式如下:
  下载一个从android模拟器里取system lib的工具busybox,然后调用命令
  $adb push busybox /dev/sample/busybox
  $adb shell chmod 777 /dev/sample/busybox
  $adb shell ./dev/sample/busybox tar -cf /dev/sample/libs.tar /system/lib
  $adb pull /dev/sample/libs.tar libs.tar
  这样就将模拟器下的 /system/lib 目录的所有库(so)文件打包并下载下来了,解压libs.tar就得到了我们所需要的所有库文件。
  接着将所有的文件copy 到 $(NDK)\build\prebuilt\windows\arm-eabi-4.2.1\lib\gcc\arm-eabi\4.2.1,这个时候基本的配置工作就结束了。
  然后建立tutorial01.c调用tutorial02.c中的方法,通过写makefile文件将之打包为SO
  CC = /cygdrive/e/android-ndk-1.5_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/arm-eabi-gcc

  CFLAGS = -g -O2 -fPIC -DANDROID -I ./ -I ../ -I /cygdrive/e/android-ndk-1.5_r1/build/platforms/android-1.5/arch-arm/usr/include
  SDFLAGS = -nostdlib -Wl,-T,armelf.xsc -Wl,-soname,$@ -Wl,-shared,-Bsymbolic -lc
  CRT_OBJS= -lz -lm

  # source files:
  SRCS= tutorial01.c tutorial02.c tutorial02.h

  all: libtutorial.so

  libtutorial.so: tutorial01.o tutorial02.o
  $(CC) $(SDFLAGS) -o $@ tutorial01.o tutorial02.o $(CRT_OBJS)

  tutorial01.o: tutorial02.h
  tutorial02.o: tutorial02.h

  clean:
  rm -f libtutorial.so *.o
  然后make,这个时候会报错 can't find "armelf.xsc", 在ndk的目录里搜索一下,搜到之后copy 到$(NDK)\build\prebuilt\windows\arm-eabi-4.2.1\lib\gcc\arm-eabi\4.2.1,然后make,成功。
  接着建立一个文件test01.c,动态加载so文件,然后写一个makefile文件,最后make成功。
  建立一个Android工程 testapp来测试其运行情况,实验表明是能够正确运行的。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top