某游戏手机动态密保锁算法逆向1---smali算法定位
本帖最后由 a1046830 于 2019-10-12 18:27 编辑界面长这样的
它的位动态每隔30秒变化一次,用jeb打开它的APK,反编译之后,它的代码长这样
函数混淆得很严重,不过没有关系。有个很快捷的方法定位它的动态密保生成算法,需要两个工具 Android SDK 和手机模拟器(android 5.1),打开SDK tools中的此工具,然后模拟器上运行此程序
接着
会出现软件主界面截图,鼠标一滑就能看到各个按钮和UI设计的id和包名
找到它的ID了,然后用android killer打开APK进去搜索,发现可疑目标
仔细一看 下面还有id是firstPwd、secondPwd...sixPwd这不就是6位密码吗。。。。那就搜索firstpwd,出现UnlockFragment.smali,点进去反编译(我不习惯Android killer 我用JEB打开看)
反编译查看源码,看到了这个函数,应该就是6位动态密码的设置了,看到有个OTPKEY,猜测这个是OTP算法,看到这个界面引用一个包import com.yoo_e.android.token.OTPKey;打开com.yoo_e.android.token.OTPKey。
里面代码不多,所以很快就能定位到算法
这个是一两年前的版本,在前两个月的版本中UnlockFragment.smali里的六位动态密码设置函数长这样
这个个更简单,就点击函数跟踪一下,一路套娃,全是函数a。。。。。。到这一路继续,最后也能跳到OPTKEY
这个版本的算法源码更好看一些,而且更舒服的是我最后将算法用JAVA写出来测试的时候这上边的代码我几乎没变
其实这个版本定位算法还有个个简单的方式,它里面有大量的Logcat,所以直接cmd adb logcat 看到一大堆有用的东西
之后搜索然后跟踪函数还是能定位到算法。定位到算法不难,就是有些花时间,而且她的函数全是abc看得眼花。
要用JAVA实现算法的话其实有点麻烦,它OTP算法里面有个byte数组是由设备号加密生成的,不怎么好找。我放到我下一篇帖子里贴出来
(主要是要在求职区发帖找工作需要三篇技术帖。。。。我只能水一下,大佬们看看图个乐)
lmy800 发表于 2019-10-12 20:29
................GWW会不开心的。。。
我之前已经把这个提交给他们公司了。我刚才看了下,他们也发布了新版本,应该有修改我说的吧,我发的帖子是我拿上几个版本apk逆的。 山阴路往哪走 发表于 2019-10-12 21:03
看的不是很明白啊
可能是我写得比较粗糙,这个核心就是根据UI控件ID 搜索到smali文件之后jeb查看函数调用就可以了。 表示看不懂,大神威武。 这太真实了 ................GWW会不开心的。。。
看的不是很明白啊
向高手看起呀。 厉害了~~~~~~~学习下 感谢分享教程
页:
[1]
2