Android Hook签名原理

昨天写了 Android签名验证——Hook签名第一步
今天研究了下Hook签名的实现,但是貌似还有点复杂,所以就不去实现了,
这里讲一下大致原理

签名获取

//大致获取签名信息流程
PackageManager packageManager=getPackageManager();//ApplicationPackageManager
PackageInfo packageInfo=packageManager.getPackageInfo(getPackageName(),PackageManager.GET_SIGNATURES);
Signature signature=packageInfo.signatures[0];
byte[] cert=signature.toByteArray();

懂得了签名信息获取,那么想Hook的话就看它从哪里来就行了。
所以此时,实现方法就很明了了——使用反射来更改当前Context下的PackageManager信息即可

  • Android中签名信息涉及到了 - 代理模式,由于自己能力有限,寻找到最小关键点比较难(就是不好找),即使找到,再通过反射一层一层去改也比较麻烦,所以我就不实现了。(因为我尝试了改里层的数据,但只是一次性的,通过外层改的话,挺麻烦,因为涉及到代理模式和很多参数构造)
  • 总之自己知道原理了,就没劲搞了

hook思路

1.通过反射更改 packageManager 代理对象//这个是肯定有效的
2.再向里缩小有效包围圈。
3.比如可以尝试修改 packageInfo 等
发布了77 篇原创文章 · 获赞 44 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/lemisky/article/details/100156259