a1046830 发表于 2019-10-12 22:32

某游戏手机动态密保锁算法逆向2---OTP算法逆向思路

本帖最后由 a1046830 于 2019-10-12 22:37 编辑

本来我打算贴出我的HOOK代码和JAVA代码,看了上一个帖子的回复,我把最新版本的APK下载下来看了下,emmmm......第二个帖子还是只说下我的思路好了,毕竟这个是账号动态密码验证,有关游戏安全性。虽然不是那种破解逆向算法就能盗号的,但是毕竟这是别人的商用的......

要生成六位动态密码,两个重要参数,一个是设备号加密之后生成的byte[]数组(OTPKEY),一个是北京时间。
其中的byte[] v0 = this.g()函数,但是由于jeb无法反编译不了,感兴趣的查看smaili代码,然后它的返回值指向类构造函数



同样也无法反编译,所以查看smali代码或者说用android killer反编译是可以查看的。
但是这个类构造函数中也有参数,这个可能是框架初始化。
cmd打开它本地文件夹/data/data/包名这个文件夹会发现数据库和一大堆文件,我开始一位它框架初始化之后把数据放在这些文件夹中,结果发现我走偏了
虽然可能otpkey存放在这些这些文件中,但是查看代码会发现otpkey在初始化存放的时候是和其他数据md5加密后存放的,所以这些文件夹等于没用

所以有个思路android hook(Frid a)。用挂起方式创建进程,在框架初始化的时候hook g()这个函数(需要重载)输出返回值就可以拿到otpkey,我hook 是拿手机(android 9.0),模拟器的话使用最新的frida效果有点拉胯。
关于frida的使用参见下面两篇文章,入门很简单,就是简单的python+js
一篇文章带你领悟frida的精髓(基于安卓8.1
初识Frida--Android逆向之Java层hook (一)
顺便介绍下OTP算法
OTP,HOTP,TOTP基本原理
(大家看着下饭就好了,图个乐)

a1046830 发表于 2019-10-12 22:34

链接好像挂了,我补下链接
frida使用:
https://github.com/hookmaster/frida-all-in-one
https://blog.csdn.net/zouyuanxc/article/details/80492465
OTP算法原理:
https://blog.csdn.net/weixin_37569048/article/details/80257368

jics007 发表于 2019-10-13 00:51

很好的思路!举一反三!某易的其实相差无异!

fcyyx 发表于 2019-10-13 22:54

账号动态密码验证

a952106160 发表于 2019-10-14 01:21

你好,能不能留个联系,向你学习!

a1046830 发表于 2019-10-14 11:01

a952106160 发表于 2019-10-14 01:21
你好,能不能留个联系,向你学习!

私聊我吧,一起交流

a952106160 发表于 2019-10-25 03:19

支持一下
页: [1]
查看完整版本: 某游戏手机动态密保锁算法逆向2---OTP算法逆向思路