分析:大概的看一下逻辑,也就是点击下一关,会调用onClick方法,onClick方法中会调用check方法,但是参数的是一个false,在check方法中,根据这个参数来选择是进入到下一关还是提示失败,如果我们不进行任何的修改,y永远也无法进入到下一关,所以呢我们要使用Frida,修改check方法的参数,使其变为true,来帮助我们进入下一关。
环境 越狱的iPhone6、iOS12.4.9、越狱工具Checkra1n、Mac电脑 1.在手机上安装Frida 打开Cydia, 搜索frida, 出现 Frida for A12+(A12及之后的版本) 与 Frida for pre-A12(A12之前的版本), 选择与手机适配的,这里我选pre-A12的版本。 安装完成后,接下来的操作,基本都在电脑上了。 注意:若搜索不到, 则在Cydi...
1 目标app为algorithmbase_10.apk。 点击CHECK会有加密后的字符串,看样子是Base64编码: 用jadx查看源码中关键代码: 输出的值由MainActivity类的静态方法encodeFromJni_10生成,该方法需要传入一个16个字符的随机字符串。 encodeFromJni_10是一个native方法: ...
输入结果,获得flag,66998就是最终结果。check结果没有问题~ 第三题 本题在第二题的基础上加入了native层对Frida的反调试。 Frida 反调试 v9=a1; v14=&v6; v13=16LL; v12=0; v11=16LL; v10=16LL; v15=__memset_chk(&v6,0LL,16LL,16LL); v6=2; inet_aton("0.0.0.0", &v8); while(1) ...
用到了CodeCheck类: 我们可以看到我们在文本框输入的信息—我们的“secret string”会被传送到一个名为bar的native函数中。我们在libfoo.so库中再次找到这个函数。查找这个函数的地址(像我们之前找init函数那样),然后用radare2来反编译它: Uncrackable root ...
然后这个check函数在这里声名: 我们如果直接hook这个check函数是不会成功的,所以我们要先找到这个dex文件: functionfifth(){Java.perform(function(){Java.choose("com.example.androiddemo.Activity.FridaActivity5",{onMatch:function(instance){//用classname来查看console.log("found instence get...
Frida is the brand that gets parents. That means you. We are not a lifestyle. Far from it. We are a solution-based brand. The 411 of parenting. The who-do-I-call-in-the-middle-of-the-night-cause-my-baby-won't-stop-screaming brand.
直接找到check的动态注册地址,跳转过去,并修改传入参数的定义。分析发现flag为20位 image.png 往后再看,发现似乎用了strcmp比对,那问题不就简单了吗。直接hook位于libc.so的strcmp函数 image.png 再写个函数,直接调用check方法,并随便传入20位数字或字母
输入结果,获得flag,66998就是最终结果。check结果没有问题~ 第三题 本题在第二题的基础上加入了native层对Frida的反调试。 Frida 反调试 v9 = a1;v14 = &v6;v13 = 16LL;v12 = 0;v11 = 16LL;v10 = 16LL;v15 = __memset_chk(&v6, 0LL, 16LL, 16LL);v6 = 2;inet_aton("0.0.0.0", &...
if(symbol.name.indexOf("NewStringUTF") != -1 && symbol.name.indexOf("Check") == -1){ console.log(symbol.name); newStringUTF = symbol.address; } } Interceptor.attach(newStringUTF, { onEnter : function(args){ console.log(args[1].readCString()); ...