google git android资源仓库:https://android.googlesource.com/
github安卓资源:https://github.com/android
android不同系统版本源码搜索引擎:http://androidxref.com/
android linker源码分析及so加壳:https://zhuanlan.zhihu.com/p/22652847
android got hook:https://shunix.com/android-got-hook/a
android插件化原理分析系列:http://weishu.me/ (github:https://github.com/tiann/understand-plugin-framework)
android jni内存泄露:http://blog.csdn.net/renxianzuo/article/details/6824716
动态库之动态符号表:http://www.cnblogs.com/ilocker/p/4611150.html
Android逆向之旅Android逆向之旅:http://blog.csdn.net/qq_32014215/article/details/76179441
android之jadx反编译工具:https://github.com/skylot/jadx?utm_source=androiddevtools.cn&utm_medium=website
android代码调试大全:http://blog.csdn.net/dd864140130/article/details/51560664
android编译源码及sdl:http://blog.csdn.net/dd864140130/article/details/51718187
android工厂镜像:https://developers.google.cn/android/images#bullhead
ELF文件section修复:http://blog.csdn.net/yi_nuo_wang/article/details/72626846
repo init -u git://github.com/CyanogenMod/android.git -b cm-12.0 // Cm12的代码, 基于android5.0
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0 // Cm11的代码, 基于android4.4, 大于23.4 GB
Ubuntu汇编IDE-SAMA:http://download.opensuse.org/repositories/home:/Dman95/xUbuntu_16.04/amd64/
010Editor:http://www.sweetscape.com/download/010editor/ http://www.360doc.com/content/17/0228/16/37835422_632714165.shtml
u3d:https://www.kanxue.com/book-24-98.htm
原文件编译汇编:
(1)arm-linux-androideabi-gcc --sysroot=/home/android/android-ndk-r9/platforms/android-18/arch-arm -o main main.c -g
(2) arm-linux-androideabi-objdump -d -S main > main_objdump.s
(3) adb shell oatdump --oat-file=/data/app/com.example.xxx-2/oat/arm/base.odex >test.txt
android字节码编译成本地机器指令:adb shell cmd package compile -m speed -f <package-name>
1.1 find . |xargs grep -ri "搜索内容" //搜索文件
find . -name 'sett*'
1.2 ndk-stack查找崩溃
1.3
dumpsys activity top //当前界面app状态
dumpsys activity oom //查看进程状态
1.4 smali文件调试 :https://www.cnblogs.com/goodhacker/p/5592313.html
.rel.text
重定位的地方在.text段内,以offset指定具体要定位位置。在连接时候由连接器完成。注意比较.text段前后变化。指的是比较.o文件和最终的执行文件(或者动态库文件)。就是重定位前后比较,以上是说明了具体比较对象而已。
.rel.dyn
重定位的地方在.got段内。主要是针对外部数据变量符号。例如全局数据。重定位在程序运行时定位,一般是在.init段内。定位过程:获得符号对应value后,根据rel.dyn表中对应的offset,修改.got表对应位置的value。另外,.rel.dyn 含义是指和dyn有关,一般是指在程序运行时候,动态加载。区别于rel.plt,rel.plt是指和plt相关,具体是指在某个函数被调用时候加载。
.rel.plt
重定位的地方在.got.plt段内(注意也是.got内,具体区分而已)。 主要是针对外部函数符号。一般是函数首次被调用时候重定位。可看汇编,理解其首次访问是如何重定位的,实际很简单,就是初次重定位函数地址,然后把最终函数地址放到.got.plt内,以后读取该.got.plt就直接得到最终函数地址(参考过程说明)。 所有外部函数调用都是经过一个对应桩函数,这些桩函数都在.plt段内。
过程说明:调用对应桩函数--->桩函数取出.got表(具体是.got.plt)表内地址--->然后跳转到这个地址.如果是第一次,这个跳转地址默认是桩函数本身跳转处地址的下一个指令地址(目的是通过桩函数统一集中取地址和加载地址),后续接着把对应函数的真实地址加载进来放到.got.plt表对应处,同时跳转执行该地址指令.以后桩函数从.got.plt取得地址都是真实函数地址了。
.plt段,存放重定位桩函数的。
重要区别
.rel.text属于普通重定位辅助段 ,他由编译器编译产生,存在于obj文件内。连接器连接时,他 用于最终可执行文件或者动态库的重定位。通过它修改原obj文件的.text段后,和并 到 最终可执行文件或者动态文件的.text段。
注:readelf -r a.o 查看 .rel.text。其类型一般为R_386_32和R_386_PC32
.rel.dyn和.rel.plt是动态定位辅助段。由连接器产生,存在于可执行文件或者动态库文件内。借助这两个辅助段可以动态修改对应.got和.got.plt段,从而实现运行时重定位。
.rel.dyn 对应地点在.got表内;.rel.plt 在.got.plt,注意不是在.text,这点和普通不同,也是重要点。
.rel.text由编译器产生,然后在连接时候,由链接器负责根据.rel.text对.text段进行修改,从而达到重定位目的;
.rel.dyn和.rel.plt由连接器产生,然后在运行时候,动态加载符号地址。
对于数据,根据.rel.dyn找到.got中的offset位置;
对于函数则通过.plt桩函数和.rel.plt段来获取函数真实地址,然后存在于.got.plt。
ibandroid.so——frameworks/base/native/Android
libandroid_runtime.so——frameworks/base/core/jni
libandroidfw.so——frameworks/base/libs/androidfw
libaudioutils.so——system/media/audio_utils
libbinder.so——frameworks/native/libs/binder
libbluedroid.so——system/bluetooth/bluedroid
libc.so——bionic/libc
libcamera_client.so——frameworks/av/camera
libcorkscrew.so——system/core/libcorkscrew
libcpustats.so——frameworks/native/libs/cpustats
libcrypto.so——external/openssl
libcutils.so——system/core/libcutils
libdbus.so——external/dbus/dbus
libdvm.so——dalvik/vm
libemoji.so——frameworks/opt/emoji
libETC1.so——frameworks/native/opengl/libs
libgccdemangle——external/gcc-demangle
libgui.so——frameworks/native/libs/gui
libgabi++.so——abi/cpp
libGLESv1_CM.so——frameworks/native/opengl/libs
libharfbuzz.so——external/harfbuzz
libhwui.so——frameworks/base/libs/hwui
libhardware_legacy.so——hardware/libhardware_legacy
libjpeg.so——external/jpeg
libmedia.so——frameworks/av/media/libmedia
libmedia_native.so——frameworks/av/media/libmedia_native
libnetutils.so——system/core/libnetutils
libstagefright_foundation.so——frameworks/av/media/libstagefright/foundation
libsonivox.so——external/sonivox
libspeexresampler——external/speex
libstlport.so——external/stlport
libssl.so——external/openssl
libui.so——frameworks/native/libs/ui
libutils.so——frameworks/native/libs/utils
libusbhost.so——system/core/libusbhost