服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

车联网安全系列安卓漏挖之IDA动态调试so文件

日期: 来源:华云安收集编辑:专攻ASM的


摘要

安卓漏挖第7步,学会动态调试so文件。


在上篇文章我们静态分析了so,并通过修改so绕过登录验证,本文用动态调试的方法去绕过登录验证。


确认登录验证代码是否在so库

把apk拖入jeb中,android:debuggable="true",可以调试,如果为flase,需要动态将它改成true。(jeb安装包在附件中,解压后,运行jeb_wincon.bat即可)



在jeb中查看Mainactivity这个入口类,按Q,把他反编译成java代码


可以看到它调用了 Native方法check


check(MainActivity.this.ct, User_Name,User_Pass)


简化看下,双击MainActivity中的myJNI() 

package demo2.jni.com.myapplication;public class myJNI {    static {        System.loadLibrary("JniTest");    }    public myJNI() {        super();    }    public native String check(Object arg1, String arg2, String arg3) {    } }



通过看代码,基本上就断定了程序的逻辑判断代码在so库中。


IDA静态分析so

参考上篇文章。

将apk解压,然后用IDA打开x86下的so。

这个so库中check函数的逻辑, 首先是检查签名  ,然后判断用户名是否为koudai,判断密码是否为black,如果都正确就返回登录成功,否则返回失败。


添加附加程序

IDA远程调试的依赖安装,我原来用的是ida7.6,远程调试这里好像不支持,所以换到7.7。


不同的ida版本适配不同的python版本,我用的是ida7.7,python用的是3.8.10。


看ida权威指南,要求安装包的时候,要用python -m安装。

Python -m Pip install keystone-enginePython -m Pip install six


上传并运行ida_server ,将IDAPro\dbgsrv 目录下的android_x86_server push 到模拟器/data/local/tmp/目录下,给777权限,并./运行。


adb push android_x86_serveradb shellcd /data/local/tmp/chmod 777 android_x86_server./android_x86_server


再起一个终端,进行端口转发 ,模拟器运行apk


>adb forward tcp:23946  tcp:23946


新起一个ida窗口 ,找到黑宝宝程序的包名,进行附加程序。




认识下动调时的IDA窗口


调试窗口



寄存器窗口



栈窗口 



模块窗口(里面都是些so文件)



线程窗口 



内存窗口



这些窗口对于新手有点不知如何布局,请参考[IDA动态调试窗口布局设计](https://xuanxuanblingbling.github.io/ctf/tools/2019/08/13/ida/)


开始动调

在modules窗口中Ctrl+F搜索找到libJniTest.so库, 点进去会有so中的函数方法的列表。找到check方法并点击,查看Debug窗口的汇编代码。


按tab键对其进行反编译却报错 

这是因为ida在动态调试的时候,没有解析函数段导致的。(看调试窗口中的地址是红色的) 点击代码,鼠标右键,选择create function,还是失败,参考 ( https://www.cnblogs.com/studyskill/p/7714485.html。)


选中代码一直到retn,然后右键发现找不到create function了,但是可以用快捷键p代替 ,然后再用tab键就可以反编译了。


在反编译窗口按空格,转成图形模式,看的逻辑会更清晰些,程序里面有三处关键跳转,分别用来判断签名是否一致,用户名是否一致,密码是否一致。



点击两个jz命令处,按f2下断点


标志位破解

按F9运行程序,然后在模拟器随便输入一个用户名和密码,点击登录, 看到程序断在了第一个断点跳转处,更改标志位ZF的值,原本是0,改成1。F8执行本条指令,发现IDA改变了原来的跳转方向。继续按F8到第二个断点处,更改标志位ZF的值,原本是0,改成1。F8执行本条指令,发现IDA改变了原来的跳转方向,按F9.可看到模拟器显示登陆成功。


修改内存破解

我们知道cmpsb是比较exi和edi中的值,在Hex窗口中,右键,synchro对齐到exi,可以看到是我们输入的用户名123,synchro对齐到edi,可以看到是koudai,那我们在hex窗口把exi中的值改成koudai。


那我们在hex窗口把exi中的值改成koudai,对应的16进制为6B 6F 75 64 61 69。


同样把下面密码校验的strcmp函数修改完成后,F9运行程序可以看到模拟器弹出登陆成功。


参考链接

https://www.52pojie.cn/thread-742686-1-1.html

https://xuanxuanblingbling.github.io/ctf/tools/2019/08/13/ida/

https://www.cnblogs.com/studyskill/p/7714485.html



相关阅读

  • 有诉求就扫码

  • 近日,任城区越河街道王母阁社区开展“任诚办”小程序宣传活动,充分发挥“任诚办”小程序便民、利民的效能,让居民体验到更加高效便捷的网格服务。活动中,网格员向居民发放了“任
  • java代码审计

  • 0x01代码审计的基本概念和流程1、代码审计的定义和背景Java代码审计是指对Java应用程序代码的分析,以确定是否存在安全漏洞和风险,并提出修复建议的过程。Java应用程序的开发
  • 安全敞口:应用程序和API攻击不断飙升

  • 近日,Akamai发布了《应用程序和API安全研究报告》,揭示了新兴的应用程序和API攻击形势,以更好地评估不断发展的TTP,并讨论了最新的保护技术。漏洞之年像Log4Shell和Spring4Shell
  • 956天 赚钱的小项目181 暴利的游戏方案

  • 看过的书,投资记录,内部交流圈的内容,赚钱项目的灵感,一些奇技淫巧...具体内容计划是:1. 每日随笔;2. 好东西分享,某神器软件、网站、小技巧...3. 投资想法;4. 阅读摘录。第一项:随笔
  • 一个“综合窗” 可办千件事

  • 帮代服务台前,工作人员在热情接待办事群众。宋彬彬 摄◎星沙时报记者 宋彬彬 通讯员 胡欢 陈硕慧整齐醒目的综合窗口、优质的“综合窗”服务、舒适的办事环境、便捷的办事体

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

  • 车联网安全系列安卓漏挖之IDA动态调试so文件

  • 摘要安卓漏挖第7步,学会动态调试so文件。在上篇文章我们静态分析了so,并通过修改so绕过登录验证,本文用动态调试的方法去绕过登录验证。确认登录验证代码是否在so库把apk拖入je
  • 华云安入选IDC Innovators:中国攻击面管理(ASM)技术

  • 近日,全球领先的IT市场研究和咨询公司IDC发布《IDC Innovators:中国攻击面管理(ASM)技术》报告。凭借前瞻的技术创新能力和深厚的技术实力,华云安脱颖而出,被IDC评为“攻击面管理
  • 华云安漏洞安全周报【第131期】

  • 根据国家信息安全漏洞库(CNNVD)统计,本周(2023.04.17~2023.04.23)CNNVD接报漏洞920个,其中信息技术产品漏洞(通用型漏洞)195个,网络信息系统漏洞(事件型漏洞)725个,其中华云安报送15份!CN