热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学android逆向能干,教我兄弟学Android逆向04

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?《教我兄弟学Android逆向》04的课后作业。教程笔记将ap

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

《教我兄弟学Android逆向》04的课后作业。

教程笔记

将apk反编译成smali文件

AndroidKiller

使用AndroidKiller分析apk,然后按照如下图所示操作,即可获取apk反编译之后的smali文件。

74323b8fd56bab459bee036e462c63f0.png

apktool

使用命令apktool d xxx.apk即可反编译apk并获得其smali代码。

在Android Studio中打开DDMS

AS3.0之后,在菜单栏的tools下就没有Android这个选项了,也就没法很快捷的打开DDMS工具,google官方文档对于此种情况下打开DDMS的方式的说明如下。Start Android Device Monitor

To start the standalone Device Monitor application, enter the following on the command line in the android-sdk/tools/ directory:monitor.

也就是可通过以下方式打开DDMS。找到AndroidStudio配置的SDK路径,如下图;

在SDK的android-sdk/tools/路径下找到批处理文件monitor.bat;

双击monitor.bat即可打开DDMS。

e02cd5a03681bc2c967964c96d191a7b.png

利用AS动态调试smali代码

调试前提

在要调试的apk的AndroidManifest.xml文件的application标签里要有android:debuggable="true"这句代码,没有是不能调试的。

所需工具Android Studio

AndroidKiller

DDMS

adb

Android设备/模拟器

……

基本步骤获取apk的smali代码,并且打开DDMS。

找到要调试APK的包名和入口的Activity(可以利用工具AndroidKiller查看)。

4a7c8ff78b4aa63f3f0f1bace70336ec.png安装要调试的apk到手机中,并用数据线连接手机,打开USB调试模式。打开命令行,输入命令 adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity 对apk进行动态调试。这条命令运行后手机屏幕将会进入到调试界面。(如果手机屏幕没有进入到调试界面说明USB没有连接好手机、或者USB调试模式没有打开、或者其他原因。)

查看Android Device Monitor(DDMS),记住下图圈起来的两个值 然后把DDMS关掉。(这里一定要关掉,因为它会占用8700端口,导致后面转发端口失败。)

8e3caedde1e0758b6a0dfa99dbac1c54.png打开命令行窗口,输入命令 adb forward tcp:8700 jdwp:19509转发8700端口。 (这里jdwp是自己Android Device Monitor中要调试app的Online值 )

打开AS,加载smali代码。如下图,对src文件夹右键–>Make Directory As —>Source Root。

947ecd2c6ae0fe96faadd528854554c5.png配置远程调试的选项,选择Run–>Edit Configurations并增加一个Remote调试的调试选项,端口选择:8700。

选择File–>Project Structure 配置SDK。

1e6e4aff0b55077d1ea583e3426cc418.png在Smali中下好断点,下好断点之后Run–>Debug’smali’,这里的smali是我们之前配置好的调试选项,此时运行手机上的程序,就可以开始调试了。

4f714f844547f7b55c972d6ed2e17ff1.png

课后练习

在第一次按照教程进行尝试时,进行到第9步时,并没有成功启动debugger,而是出现了如下图所示的报错,提示8700端口无法连接,于是重新进行端口转发(应该是等待调试的时间太长,手机与电脑的连接断开了),就可以成功调试了。

5fa1fe7e37a6a556a0f28907d6e1ee36.png

69689d3a8201fb9660e1e19d2ead1ca4.png

在自己尝试动态调试的过程中发现,debug窗口中的变量的具体值是可以通过点击下图所示选项进行修改的,但是watches窗口中的寄存器的具体值是没法修改的。

c212f8e810bcdaf9ecf696bce82e24ab.png

总结

在第一次完整的配置之后,对于同一个要调试的apk,动态调试的步骤可以简化为——3——>5——>在Android Studio中加载smali代码,然后下断点run debug进行调试

参考资料



推荐阅读
  • 我是python小白一枚,对kivy开发手机app产生了兴趣,并没感觉到kivy写代码有多难,折腾打包成手机apk倒是花了好长时间,走过了大大小小的坑,这里把经验记录下来,供大家参 ... [详细]
  • 转自:http:malideveloper.arm.comcndevelop-for-malisample-codeetcv1-texture-compression-and-alpha- ... [详细]
  • 在Android源码环境下编译系统App使用第三方jar包的方法(备忘)
    1将要使用的jar包放入App的根目录,即Android.mk所在目录2按如下方式编写Android.mk文件(########之间的行用于编译和使用jar包)LOCAL_PATH:$(ca ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 近来有一个需求,是需要在androidjava基础库中插入一些log信息,完成这个工作需要的前置条件有编译好的android源码具体android源码如何编译,这 ... [详细]
  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。OpenSSL系列文章:一、AndroidCMake轻松 ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • 下载安装并配置flutter
    1.去github上下载flutter安装包https:github.comflutterflutterreleasestag2.0.42.将安装包zip解压到你想安装Flut ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • *resraw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。*resraw和assets的不同点:1.resraw中的文件会 ... [详细]
  • 2021年最详细的Android屏幕适配方案汇总
    1Android屏幕适配的度量单位和相关概念建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章 ... [详细]
author-avatar
一个人失忆9988_347_289
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有