APP逆向百例五-Flutter逆向案例----某次元(AES+RSA)

现在售价依旧是99¥,计划更新100案例,平均一个案例1块钱,要什么自行车!

还原一下我逆向此app的方法

1.抓包分析:

我这边用socksDroid抓不到数据包,但是小黄鸟可以,那就用Reqable结合电脑端进行抓包,不纠结。

我们可以看到请求头中有个authentication这个经过测试多次携带同一个值不影响,所以我们把重点放在响应体的解密中。

这里给大家先给出一个细节,响应体的解密中有个"."这个重点圈起来后面要考:

2.使用blutter工具

这个不多说了写了好几期了,这次我就省略了。忘记的翻前几期笔记

最后导出ida的符号

3.分析ida中so文件

首先因为我们的目标是将密文进行解密,所以我们先去尝试搜索一下,decrypt:

出来这些 不算多,观察一下 我们发现了一个AES_decrypt和一个RSA_decrypt

我们先hook encrypt这个类下的函数,也就是先去尝试hook 这几个 因为他比较像flutter开发引入的类。

hook encrypt_encrypt_Encrypter::decrypt64_822d84 直接就hook到了明文了! 我们就不用向下hook了

hook代码:

// encrypt_encrypt_Encrypter::decrypt64_822d84
var addr = Module.findBaseAddress('libapp.so');
console.log(addr);
var funcAddr = addr.add(0x822d84);
console.log(funcAddr);
Interceptor.attach(funcAddr, {
    onEnter: function (args) {
        console.log("hook 11 到了------------------")
        console.log('arg0,',hexdump(args[0],{length:2000}))
    },
    onLeave: function (retval) {
        console.log("-------hook 11 到了结束-------------")
        console.log('返回值:', hexdump(retval))
    }
})

仔细观察一下hook的入参 是 . 后面的密文

在仔细观察一下hook日志 :

还输出了一串 16位的字符,入参是 "."前面的数据。那么我们现在就该思考到底是如何变成 这个16字符的,这个16位字符又有什么用。

我们多测试几次会发现hook到的 16位字符 是随机的,不确定的。

这里提示一下AES key 是 16位的,所以我们猜测是解密的key是由  "."前面的数据 一系列处理变成的,结合前面看到的RSA字眼,我们是不是可以大胆的猜测 是由rsa解密成aes的key 和 iv呢。

好到此为止都是我们的猜测,我们去用ida的X交叉编译 查看谁调用了他--此函数 encrypt_encrypt_Encrypter::decrypt64_822d84

我们 追一下:

发现上一层函数是:guoguo_api_utils_g_api_::apiDecrypt_8ab12c(__int64 a1)

仔细观察 里面确实有rsa的东西,而且还有AES_KEY 和 AES_IV的字眼,所以我们猜测是一个AES CBC模式

其实hook AES的函数能 hook到:这里我就不对赘述了

7601e635a9  45 53 2f 43 42 43 2f 50 4b 43 53 37 00 00 00 04  AES/CBC/PKCS7

看到这个reverse 反转 这个注意一下重点!!!

然后我们去先hook一下 AES的 IV 和 KEY 一般案例有的是定值,这里我们再确认一下是否是动态的,因为上面说的都是我们的猜测,只有去用frida hook 到才能证明自己的推论。

至此我们验证了key和Iv 都是动态的哦!

并且hook到的key和iv都是可以解出明文的:

KEY: QJHG7NWAQ6J7NZKV

IV : VKZN7J6QAWN7GHJQ

结合上面提到了 reverse

GET到了吗????老铁们!

接着我们去分析 aes的key是如何来的 , 上面我们看到了rsa的字眼结合密文 “.”前面的字符我们可以猜测是 经过RSA解密然后得到的动态key 然后key反转就是动态的iv

现在去hook RSA KEY: 得到rsa 私钥  私钥用来解密

用这个去解密 返回值的 ". "前面字符:成功可以的!

交流群与联系方式:

flutter-app逆向分析是指对于一个使用flutter框架开发的应用进行逆向工程分析。逆向工程是通过分析应用的代码、二进制文件等来了解其内部实现细节。 首先,我们需要获取该应用的安装包文件(APK或IPA文件),然后进行解包操作,将其转换为可读取的文件目录结构。 接下来,我们可以使用一些工具来提取应用的资源文件、代码文件等。对于flutter-app来说,可以提取出dart文件,这是flutter的主要代码文件,其中包含了应用的逻辑实现。 通过阅读dart文件,我们可以了解应用的代码结构、数据模型、界面设计等。可以分析应用的逻辑实现方法,包括各种函数、类、方法的调用关系。 同时,还可以通过分析相关配置文件、资源文件等来了解应用的各种设置、资源加载方式等。 在逆向过程中,还可以使用一些调试工具来进一步了解应用的运行机制。例如,hook工具可以拦截应用的函数调用,并捕获输入输出数据,用于进一步分析。 逆向分析的目的可以有很多,比如了解应用的工作原理、发现潜在的漏洞或安全问题、提供参考用于自己的开发等。 需要注意的是,逆向分析需要遵守法律规定。未经授权的逆向分析可能侵犯他人的知识产权,涉及到隐私等方面的问题。因此,在进行逆向分析之前,应该了解并遵守当地相关法律法规,避免产生法律纠纷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值