AS新版动态调试教程
本帖最后由 dook 于 2019-5-13 17:38 编辑动态调试(新版):
前言:最近碰到动态调试问题,我先是看了一遍旧版动态调试
发现该调试方式只有在Apktool2.1版本一下能用,但是该版本以下的Apktool
,基本已经不能反编译现在的Apk了,该方法基本算是废弃了。
例题:2015阿里&看雪移动安全挑战赛-第一题
下载链接:
链接:https://pan.baidu.com/s/13ITs043SWWjD8DH9JmQjmQ 密码:jh3r
说明:该文章偏向于逆向新手,过程中如有错误,大牛轻喷。解题过程或许有点取巧,
但是重在了解了动态调试的过程,并给新手一个思路,到底动态调试要达到什么目的。
正文:
该方法非常快速,并且界面舒爽。
直接使用Android Killer打开APK,在AndroidManiFest文件中添加android:debuggable=”true”
将反编译后的project目录导入到Android Studio。
在File->setting->pluging->导入支持查看smali的安装包Smaliidea
在运行配置中添加一个remote调试模式,端口设置8700
找到Android Studio自带的 Device Monitor。界面上找不到,自己去目录找。
开启调试模式
手机界面变成如图
显示信息为等待debugger to attach
关闭DDMS即Denvice Monitor
因为他会占用8700端口,导致后面端口转发失败。
记录下来该Online值,并设置端口转发
设置端口转发
在自己的需要调试的Smali代码下好断点
下好断点之后Run–>Attach to Local Process附加进程
然后
此处开始对阿里&看雪移动安全挑战赛第一题进行破解。需要拿到程序密码,
界面之存在一个输入框和登录的提交按钮。
根据开发者尝试可以知道点击登录之后必将出发一个OnClick事件。
随后判断输入是否为真实密码。
Android Studio两年没见,已经改的我完全认不出来了。
之前的界面布局查看工具已经惨无人样了。
DDMS也改掉了,直接搜索monitor,取出device monitor打开。
点击安卓图标,即可调出布局查看界面。
定位到Button按钮
可以查看到Button的Resource-id 为R.id.button
细心的开发者一般都知道R.id中的所有值都会存在一个public.xml文件中
全局搜索button(此處button代表的為id值) 并不是Button组件
提取该id的16进制码
全局搜索该16进制码,因为smali代码运行的时候必然需要根据16进制来找到该组件
即代码
Button button=findviewbyid(R.id.16进制字符串)
定位到关键代码查看
声明了一个寄存器V2保存16进制码
Button组件安卓里面继承的确实是view类
该语句可以理解为在com.example.simplee.....MainActivity类中,调用了findViewByID函数,I表示参数类型,即该16进制码。返回值为View类型 Button的父类。
可以基本判断这里是关键的代码了
判断账号密码的操作应该就在后面了。
在MainActivity$1中寻找到Onclick方法,为什么是这个文件,需要一定的阅读smali代码的能力了,$1表示类中的类,new setOnClickListener在MainActivity类中新建了一个类,所以会出现在这里,OnClick方法也可以判断在这个目录下了。
在OnClick方法下下一个断点,看提交按钮的运行情况。
断点已经下好,准备开始运行程序。
Onclick方法必须点击才会触发。
所以Studio开始调试的时候不能继续往下执行
是正常的,因为你也跟没点登录,程序没
执行到断点位置。
此处获取到我们输入的密码
后面调用了getTableFromPic继续获取一下该序列的值。
继续往下执行有个GetPwdFromPic函数,凭字面意思就差不多知道这是密码了。阿里肯定不会这样把密码摆在眼前,应该还是有加密算法的。
用AndroidKiller反编译一下进入查看一下函数的Java代码,实在菜的自闭,看不懂这万恶的加密算法。打扰了。
事实证明一个好的逆向工作者肯定是要掌握一下加密算法的
不过这样就想难倒我?不可能
这里你获取的真实密码就一片汉字,我输入的密码肯定最后也会转换成汉字比对。懂我意思吧?
继续抓,看我们的00000变成了啥 它变成了丸丸丸丸丸
密码库再多有什么用,阿拉伯数字只有0-9
我把0-9输进去,看看对应是哪个字母不就完事了。花里胡哨的
V2的顺序是0-9,比对一下:581026
下面就是见证奇迹的时刻了
@dook 你这word复制过来的吧,格式太乱了,我给你编辑了下,把颜色和乱码去掉了,但还有一些图没贴进去正文中,需要你自己编辑下。 Hmily 发表于 2019-5-13 11:21
@dook 你这word复制过来的吧,格式太乱了,我给你编辑了下,把颜色和乱码去掉了,但还有一些图没贴进去正文 ...
嗯,之前的学习笔记整理过来的。上传完之后我都愣逼了,感谢大佬百忙中抽出时间替我修改布局,拜谢了{:1_893:} 文章有一部分布局不太对 其实先进行静态分析可以省去很多事 写的不错,学习了,布局好像有点乱! 感谢大神分享 复杂,努力学习 撸大师 发表于 2019-5-13 10:57
文章有一部分布局不太对
已经修改好了 龙战之魂 发表于 2019-5-13 11:20
其实先进行静态分析可以省去很多事
主要是教新入门的朋友们动态调试的思路,静态分析确实会更简单,甚至可以直接修改Smali代码达到破解的目的。哈哈,主要是培养动态调试思路。大神随意哈
页:
[1]
2