安卓逆向】 浦发银行签名校验

    选择打赏方式

前段时间有个朋友联系到我  说有家安全公司招聘(哪家公司我就不说了) 但是面试题目第一题就难着了  这我哪儿能忍  直接干!  拿到app的时候我心凉了一下  这他妈银行我搞个锤子  但是逆向工程师绝不认输!  不多逼逼    直接重新签名安装  果然不出意外崩溃    现在勒让我们捋捋思路  在程序一启动就崩溃 说明校验是存放在入口点或者入口页面的初始化函数里面  先掏出我们的逆向工具 jadx反编译一波  找到AndroidManifest.xml文件里面 我们知道入口点比入口页面执行的时机要早  直接先从入口点的onCreate()函数入手直接往下跟捋捋逻辑  Java层其实没啥东西 只要你思路清晰一眼就能看出来  这个onCreate()函数首先调用了一些super 然后注册了一些事件  下面我们看到了一句代码Init这又在初始化什么???   过去看看System.loadLibrary加载了这个so库  上面还有个native关键词修饰的getSignatures();函数 这就有点敏感了 心里已经10有8 9确定了签名校验在so层  然后这个init又调用了一个native_init函数 传入了一个context  既然如此就去so看看So文件还是挺多的 直接拖出来  放进IDA反编译一波 找到节区分析 逆向分析思路一定得要清晰  先不慌搜索注册得函数 先看一波init跟init_array  不清楚这部操作的小贴友们不要慌   推荐学习一下so文件的加载流程以及ELF文件结构  (可能下篇文章会详细讲到 不过市面上也有很多百度一波就行  看不懂就留言我抽空自己写一下以我理解的流程  嚼碎了给你) 言归正转 接着来没有东西  可以松口气咯 要是再有东西就又多了几步了  接着找到导出函数窗口搜索一波采用了静态注册问题不大 来到这个函数没啥操作直接调用了_Z8init_libP7_JNIEnvP8_jobject  这个函数初始化 跟进又调用了_Z9check_appP7_JNIEnvP8_jobject函数  跟进来到这个check_app函数里面  发现这里调用了这个get_sign这个函数   我们往上看他传入了那些参数  R0寄存器是R4传入的env    R1寄存器就是R5传入的jobject   R2寄存器就是调用上面的函数的返回值这里先不看  现在分析到这里我们可以通过他的函数名称确定在这里get获取这个sign签名紧接着进行md5 sha系列的签名运算我们也可以看一下他的运行流程没有混淆就是为所欲为 找到了这个get_sign获取当前签名了就好办了  直接改这个调用就行  要是要改的干净一点可以从下面的判断入手   直接改nop指令你就得注意下面的寄存器相关的使用了  稍不注意就gg改好以后直接运行 完美! 好了这个就讲到这里了  听说月薪小20k  流下了我月薪1800的泪水  总结一下:现在安卓逆向的门槛还是挺低的 你们自己悟  这个银行如果加壳(当然了银行基本不会加壳) 就费时间了  还有就是对so文件的保护不够好  关键点很好定位 基本不用动态就能分析出来  混淆也没有  不过混淆也没啥卵用 安全这块无非就是增加逆向分析的时间 [color=rgba(0, 0, 0, 0.56)]


版权声明:若无特殊注明,本文为《CBB智能量化》原创,转载请保留文章出处。
本文链接:https://bk.qcsj.cc/post-779.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!