热门标签 | 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进行调试

参考资料



推荐阅读
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 解决Android应用在手机安装时出现安全风险提示的方法与对策
    解决Android应用在手机安装时出现安全风险提示的方法与对策 ... [详细]
  • 在尝试为 Unity 编译一个简单的 Java 库时,运行 `ant jar` 命令后遇到了 Java I/O 异常。具体错误信息为“无法启动程序 ${aAPT},错误代码 2”,这通常表示指定的文件或目录不存在。此问题可能是由于环境配置不正确或路径设置有误导致的。建议检查相关路径和环境变量,确保所有依赖项都已正确安装和配置。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
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社区 版权所有