google Android resource

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

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值