安卓逆向学习之详解Hook含义及作用
Hook的具体含义?
在英文中,hook翻译出来是钩的意思,而在IT行业,这是一个术语;对于一个程序员来说,这是一个技术,当然也是是一个可以让逆向工程师耍帅的技能啦!
学习逆向,hook是一项必学的基础知识,必须要掌握好hook的知识,才能更加容易上手逆向技术。
那么在认识hook工具前,我们需要先了解Hook是什么。
Hook的作用?
hook英文单词意为“钩子”,很形象的,它的作用就是去调用或者篡改APP代码。
举一个简单的例子。
消消乐风靡的时候大受欢迎,相信男女老幼都对这款游戏不陌生。
开心消消乐这个小游戏,相信各位小伙伴都玩过。而在进行游戏时,闯关是很有成就感。游戏大神们自然是轻轻松松“unbelievable”、“amazing”!
而对于游戏渣来说,就很有可能闯关失败。并且游戏闯关失败后会跳出弹窗,提示让你充值一定数量的金币,好胜心强的小伙伴自然不会轻易认输,但是又不想因为这个小游戏充钱,怎么办呢?
这个时候我们安卓逆向的优势自然就突显出来了!如果我们不想充值,那么利用hook,可以直接反编译这款游戏APP,找到它控制我们充值的代码,通过Hook篡改充值代码,将需要充值改成不需要充值或直接绕过这条要求我们充值的代码,就可以实现无需充值跳过闯关。
我们可以形象地把hook的作用比喻为就像拿着一根中医的针,直插关键代码,正中要穴,解决我们的需求。
另外,再例如我们讲协议的时候,通过Hook还可以改变手机的特征码:
将androidhuawei20200103xxxx这样的特征改为androidhuawei20200528xx;
常见的Hook使用的框架?
常见的Hook使用的框架有:
sub框架:该框架作用于so层
xpsoed框架:作用于java层
frida框架:作用于java层与so层