Frida入门之靶场练习(续写)

文摘   其他   2024-03-29 14:54   陕西  

PS:这篇文章是续写了上篇文章:Frida入门之靶场练习。没看上篇文章的hxd再看这篇文章时,可能会稍微有一点没头绪,这里建议先去看下上一篇文章。

不知从哪里开始说起了,这里先简单回顾一下上一关的代码逻辑,然后引入正题吧。

判断加密后的密码与输入的密码进行比较,如果相等则跳转到FridaActivity1页面。

接下来我们跟进一下FridaActivity1,简单分析一下代码。

这段代码是一个Android应用的活动(Activity)类FridaActivity1,该类包含了一些方法和逻辑来处理密码验证,同时也继承了BaseFridaActivity。

1、 getNextCheckTitle()方法:重写了父类的方法,返回固定的字符串。

2、 onCheck()方法:处理密码验证逻辑的方法。先调用a(b(“请输入密码:”))方法对输入密码进行处理,然后与固定的加密字符串比较。如果验证成功,则调用CheckSuccess()方法,然后进入FridaActivity2界面并结束当前活动;否则调用父类的CheckFailed()方法。提示:“Check Failed!”

3、 a(byte[] bArr)方法:就是将输入的字节数组转为Base64编码的字符串。

4、 b(String str)方法:该方法是将输入的字符串进行GZIP压缩操作,并返回压缩后的字节数组。使用GZIPOutputStream进行压缩操作。

这里我们简单看下父类BaseFridaActivity的代码。

这个活动(Activity)类BaseFridaActivity,它继承了AppCompatActivity并实现了View.OnClickListener接口。这个类就不在过多的做介绍了,这里提供代码只是为了在FridaActivity1类中调用父类方法时让大家看到这些方法,其实这些对于写hook脚本关系并不是很大。

分析代码过后,我们重点看一下这个判断语句。

其实,这里就是判断a()函数返回的字符串是否等于后面的那串字符串,如果相等则成立进入FridaActivity2界面。所以,我们的hook脚本只需要调用一下a()函数,并且让a()函数返回这段字符串即可(其实这里并不需要调用a()函数,只需要返回那段字符串)。

接下来我们编写hook脚本,编写完成后并通过Frida -U AndroidDemo -l hook_a.js命令运行,然后点击进入下一关,此时发现已经OK 并且成功跳过。(这个hook脚本比较简单,所以这里就先不解释了)

下来我们进入了第2关,看下FridaActivity2这个类的代码。

其实这段代码还是很好理解的,只需要让if判断语句返回为真即可,这里需要注意的是setStatic_bool_var()和setBool_var()这两个方法。其中,一个是静态方法另一个是非静态方法(写hook脚本时,静态方法和非静态方法调用方式有些不同)。所以,我们这里只需要调用setStatic_bool_var()方法和setBool_var()方法,即可让if判断语句返回为真(True),同时进入FridaActivity3界面。

接下来编写我们需要的hook脚本,这里我就不在新建js文件了,就直接在hook_a.js脚本中继续写了。

静态方法直接调用,非静态方法可以理解为hook动态函数,通过找到instance实例,从实例调用函数方法。这里主要说下Java.choose()、onMatch:function(instance){…}和onComplete:function(){}。

Java.coose(): 通常用于在运行时监视和控制特定类的实例行为。与Java.use()不同,Java.use()是用于直接操作目标类。

onMatch:function(instance){…}和 onComplete(){}可以理解为是事件处理或回调函数。

onMatch:function(instance){…}:一般用于某种模式匹配成功时要执行的操作。

onComplete(){}:通常表示某个操作或任务完成时要执行的操作。在异步编程中使用较多。

PS:这里解释可能有些不清晰或者给本来理解的人带来了错误的解释 望见谅,最终还是以个人的理解为主。建议大家死记这格式多练习吧,有兴趣的读者,建议大家去官网看看文档。

这里不需要重新运行脚本,直接在hook的控制台中直接调用hook_challenge2()函数即可。

然后点击进入下一关即可通过。

通过这两篇简易的文章希望能给大家带来一些帮助,最后感谢大家的阅读和关注!

期待与您的下次相遇!!!

Relay学安全
这是一个纯分享技术的公众号,只想做安全圈的一股清流,不会发任何广告,不会接受任何广告,只会分享纯技术文章,欢迎各行各业的小伙伴关注。让我们一起提升技术。
 最新文章