【安卓逆向】 浦X银行签名校验
前段时间有个朋友联系到我说有家安全公司招聘(哪家公司我就不说了) 但是面试题目第一题就难着了这我哪儿能忍直接干!拿到app的时候我心凉了一下这他妈银行我搞个锤子但是逆向工程师绝不认输!不多逼逼 直接重新签名安装果然不出意外崩溃 现在勒让我们捋捋思路在程序一启动就崩溃 说明校验是存放在入口点或者入口页面的初始化函数里面先掏出我们的逆向工具 jadx反编译一波找到AndroidManifest.xml文件里面 我们知道入口点比入口页面执行的时机要早直接先从入口点的onCreate()函数入手https://ke.yijincc.com/files/default/2020/01-21/1515015c7e05080785.pnghttps://ke.yijincc.com/files/default/2020/01-21/151502654b3f739868.png直接往下跟捋捋逻辑Java层其实没啥东西 只要你思路清晰一眼就能看出来这个onCreate()函数首先调用了一些super 然后注册了一些事件下面我们看到了一句代码https://ke.yijincc.com/files/default/2020/01-21/1515026d533c505433.pngInit这又在初始化什么??? 过去看看https://ke.yijincc.com/files/default/2020/01-21/15150375654d962812.pngSystem.loadLibrary加载了这个so库上面还有个native关键词修饰的getSignatures();函数 这就有点敏感了 心里已经10有8 9确定了签名校验在so层然后这个init又调用了一个native_init函数 传入了一个context既然如此就去so看看https://ke.yijincc.com/files/default/2020/01-21/1515037e29a0943350.pngSo文件还是挺多的 直接拖出来放进ida反编译一波 找到节区分析 逆向分析思路一定得要清晰先不慌搜索注册得函数 先看一波init跟init_array不清楚这部操作的小贴友们不要慌 推荐学习一下so文件的加载流程以及ELF文件结构(可能下篇文章会详细讲到 不过市面上也有很多百度一波就行看不懂就留言我抽空自己写一下以我理解的流程嚼碎了给你) 言归正转 接着来https://ke.yijincc.com/files/default/2020/01-21/15150487acd4514755.png没有东西可以松口气咯 要是再有东西就又多了几步了接着找到导出函数窗口搜索一波https://ke.yijincc.com/files/default/2020/01-21/15150590882a053714.png采用了静态注册问题不大 来到这个函数https://ke.yijincc.com/files/default/2020/01-21/1515059a5857815875.png没啥操作直接调用了_Z8init_libP7_JNIEnvP8_jobject这个函数初始化 跟进https://ke.yijincc.com/files/default/2020/01-21/151506a3e4bd202830.png又调用了_Z9check_appP7_JNIEnvP8_jobject函数跟进来到这个check_app函数里面https://ke.yijincc.com/files/default/2020/01-21/151507b2cdec397200.png发现这里调用了这个get_sign这个函数 我们往上看他传入了那些参数R0寄存器是R4传入的env R1寄存器就是R5传入的jobject R2寄存器就是调用上面的函数的返回值这里先不看现在分析到这里我们可以通过他的函数名称确定在这里get获取这个sign签名https://ke.yijincc.com/files/default/2020/01-21/1515302b7c57290767.png紧接着进行md5 sha系列的签名运算我们也可以看一下他的运行流程https://ke.yijincc.com/files/default/2020/01-21/151532423bae887847.png没有混淆就是为所欲为 找到了这个get_sign获取当前签名了就好办了直接改这个调用就行要是要改的干净一点可以从下面的判断入手 直接改nop指令你就得注意下面的寄存器相关的使用了稍不注意就gg改好以后直接运行 完美! 好了这个就讲到这里了听说月薪小20k流下了我月薪1800的泪水总结一下:现在安卓逆向的门槛还是挺低的 你们自己悟这个银行如果加壳(当然了银行基本不会加壳) 就费时间了还有就是对so文件的保护不够好关键点很好定位 基本不用动态就能分析出来混淆也没有不过混淆也没啥卵用 安全这块无非就是增加逆向分析的时间标签: Android逆向 银行软件也能搞,真厉害,虽然也是没怎么理解,收藏一下 大侠,请问什么时候有空讲解下雷电模拟器启动frida server后,wx,qq就启动出错是什么原理,谢谢 这个排版看得我脑壳疼 虽然 看不懂 给大牛点个赞! {:1_921:}支持!许多银行程序是加壳的 你月薪1800,我把这个APP吃了。 属实有点6,不愧是大佬 眼睛痛嗷,来学习学习 :lol厉害 感谢分享 你月薪少打了个0吧 你是谁啊,为什么在易锦上也有这个帖子{:1_904:}