吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8783|回复: 16
收起左侧

[Android 原创] AS新版动态调试教程

  [复制链接]
dook 发表于 2019-5-13 10:52
本帖最后由 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
图片2.png

找到Android Studio自带的 Device Monitor。界面上找不到,自己去目录找。
开启调试模式
图片3.png

图片4.png

手机界面变成如图
显示信息为等待debugger to attach
关闭DDMS  即Denvice Monitor
因为他会占用8700端口,导致后面端口转发失败。

记录下来该Online值,并设置端口转发
图片5.png

设置端口转发
图片6.png

在自己的需要调试的Smali代码下好断点
下好断点之后Run–>Attach to Local Process附加进程
然后
图片7.png

图片8.png

此处开始对阿里&看雪移动安全挑战赛第一题进行破解。需要拿到程序密码,
界面之存在一个输入框和登录的提交按钮。
根据开发者尝试可以知道点击登录之后必将出发一个OnClick事件。
随后判断输入是否为真实密码。
Android Studio两年没见,已经改的我完全认不出来了。
之前的界面布局查看工具已经惨无人样了。
DDMS也改掉了,直接搜索monitor,取出device monitor打开。
图片9.png

点击安卓图标,即可调出布局查看界面。
定位到Button按钮
可以查看到Button的Resource-id 为R.id.button
细心的开发者一般都知道R.id中的所有值都会存在一个public.xml文件中
全局搜索button(此處button代表的為id值) 并不是Button组件

图片11.png
提取该id的16进制码
全局搜索该16进制码,因为smali代码运行的时候必然需要根据16进制来找到该组件
即代码
Button button=findviewbyid(R.id.16进制字符串)
图片12.png

定位到关键代码查看
声明了一个寄存器V2保存16进制码
Button组件安卓里面继承的确实是view类
该语句可以理解为在com.example.simplee.....MainActivity类中,调用了findViewByID函数,I表示参数类型,即该16进制码。返回值为View类型 Button的父类。
可以基本判断这里是关键的代码了
判断账号密码的操作应该就在后面了。

在MainActivity$1中寻找到Onclick方法,为什么是这个文件,需要一定的阅读smali代码的能力了,$1表示类中的类,new setOnClickListener在MainActivity类中新建了一个类,所以会出现在这里,OnClick方法也可以判断在这个目录下了。

在OnClick方法下下一个断点,看提交按钮的运行情况。



图片13.png
断点已经下好,准备开始运行程序。
Onclick方法必须点击才会触发。
图片1.png
所以Studio开始调试的时候不能继续往下执行
是正常的,因为你也跟没点登录,程序没
执行到断点位置。
此处获取到我们输入的密码
图片15.png

后面调用了getTableFromPic  继续获取一下该序列的值。
图片16.png

继续往下执行有个GetPwdFromPic函数,凭字面意思就差不多知道这是密码了。阿里肯定不会这样把密码摆在眼前,应该还是有加密算法的。
图片17.png

用AndroidKiller反编译一下进入查看一下函数的Java代码,实在菜的自闭,看不懂这万恶的加密算法。打扰了。
事实证明一个好的逆向工作者肯定是要掌握一下加密算法的

图片2.png
不过这样就想难倒我?不可能
图片19.png

这里你获取的真实密码就一片汉字,我输入的密码肯定最后也会转换成汉字比对。懂我意思吧?
继续抓,看我们的00000变成了啥   它变成了丸丸丸丸丸
图片20.png

密码库再多有什么用,阿拉伯数字只有0-9
图片21.png

我把0-9输进去,看看对应是哪个字母不就完事了。花里胡哨的
图片22.png

V2的顺序是0-9,比对一下:581026
下面就是见证奇迹的时刻了
图片23.png

图片24.png

免费评分

参与人数 5威望 +2 吾爱币 +13 热心值 +5 收起 理由
yuan71058 + 1 + 1 写的再细点,排版再好点,就可能加精了
qtfreet00 + 2 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
撸大师 + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
cxp521 + 1 + 1 排版稍微有点乱,待会我再来

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-5-13 11:21
@dook 你这word复制过来的吧,格式太乱了,我给你编辑了下,把颜色和乱码去掉了,但还有一些图没贴进去正文中,需要你自己编辑下。
 楼主| dook 发表于 2019-5-13 17:20
Hmily 发表于 2019-5-13 11:21
@dook 你这word复制过来的吧,格式太乱了,我给你编辑了下,把颜色和乱码去掉了,但还有一些图没贴进去正文 ...

嗯,之前的学习笔记整理过来的。上传完之后我都愣逼了,感谢大佬百忙中抽出时间替我修改布局,拜谢了
撸大师 发表于 2019-5-13 10:57
龙战之魂 发表于 2019-5-13 11:20
其实先进行静态分析可以省去很多事
gunxsword 发表于 2019-5-13 12:33
写的不错,学习了,布局好像有点乱!
taxuewuhen 发表于 2019-5-13 16:10
感谢大神分享
onetwo931 发表于 2019-5-13 16:27
复杂,努力学习
 楼主| dook 发表于 2019-5-13 17:19
撸大师 发表于 2019-5-13 10:57
文章有一部分布局不太对

已经修改好了
 楼主| dook 发表于 2019-5-13 17:27
龙战之魂 发表于 2019-5-13 11:20
其实先进行静态分析可以省去很多事

主要是教新入门的朋友们动态调试的思路,静态分析确实会更简单,甚至可以直接修改Smali代码达到破解的目的。哈哈,主要是培养动态调试思路。大神随意哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 16:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表