https://blog.csdn.net/a_1054280044/article/details/60465267
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_1054280044/article/details/60465267

前言:书本中对crackme02.apk的破解是分析关键词进行破解的,而本文使用另外的Smali分析方式,对样本进行分析。
样本:《Android软件安全与逆向分析》crackme02.apk
工具:AndroidKiller v1.3.1.0(AK) && Android Studio2.2.3(AS)
语言:Java,Smali
目的:Smali代码分析之前的准备工作

一、样本反编译

二、在AS下打开反编译出来的文件夹

三、安装原始apk到AVD中

命令行:adb install (crackme02的文件路径)
注:如出现安装失败可能有如下原因

  1. AVD中存在同名apk。 解决:需卸载后重安装或命令行:adb -r install (crackme02)
  2. AVD无连接。 解决:adb kill-server , adb device

    四、设置远程调试

    Run->Debug Configuration-> “+”->Remote Java Application
    修改HOST:localhost,Debug:8700

    五、使用adb以debug方式启动apk

    执行命令:Adb shell am start -D -n packageName/ActivityName
    其中packageName是主活动所在文件夹,ActivityName是主活动名称及其路径,可在AndroidManifest.xml中的android:name查看。
    这里我们执行:
    Adb shell am start -D -n
    com.droider.crackme0201/com.droider.crackme0201.MainActivity
    如果debug模式执行成功会有如下图

    六、准备调试程序

    1、启动Android Device Monitor.
    这里介绍两种方式启动,第一种方式在旧版本的AS中可行,但在我现在的AS版本却不行,似乎打开的文件夹不是app项目,就无法通过选项卡打开:
    (1)Tools->Android->Android Device Monitor
    (2)命令行中,进入 SDK tools/ directory 目录,输入下述命令:
    monitor
    参考:http://blog.csdn.net/qzw9231000/article/details/53115878
    2、选择对应的Device,这个Device有8700端口。

    3、设置断点
    这里我们在MainActivity.smali的
    .method private checkSN(Ljava/lang/String;Ljava/lang/String;)Z
    下一行设置断点。

七、开始调试程序!

debug!

发现程序停在了断点处,摁下f8一步步调试,并添加监视变量即可开始通过Smali代码对程序进行分析。

jpg改rar 

Android逆向笔记之AndroidKiller与Android Studio的使用的更多相关文章

  1. (1)-Android学习笔记之:初识Android系统架构和项目结构

    Android系统架构 Android程序结构 创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下 .gradle和.idea:这两个目录下放的都是And ...

  2. 物联网大赛 - Android学习笔记(一) Android概念

    一.Android 概念 Android是开放式的手机和电脑操作系统,是基于Linux系统做的上层开发. android可以做些什么? Android可以开发各种手机应用APP,也可以开发车载系统等, ...

  3. android学习笔记50——SQLiteOpenHelper、android实现系统自带样式

    SQLiteOpenHelper SQLiteOpenHelper是android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新. 一般的用法是创建SQLiteOpenHelper的子 ...

  4. android学习笔记(8)linearlayout与android:layout_weight学习

    一,linearlayout 线性布局,布局文件里设置多个linearlayout来达到总体线性布局的风格. android:gravity="right"对齐方式,居右对齐,gr ...

  5. android开发笔记(一)Android studio 输入法

    以前都是用的时候查资料做些增添即可,现在下决心系统学习下. 首先发现developer.Android.com在开发工具上开始推出了 Android Studio了,不过他自己没有sdk manage ...

  6. 【Android学习笔记】Mac下Android Studio开发环境搭建

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...

  7. Android学习笔记(三)Android开发环境的搭建

    一.配置JAVA环境 二.配置Android开发环境 可以安装adt-bundle-windows,该压缩包一般自带Eclipse.或者安装Android Studio,要注意SDK的版本是否符合要求 ...

  8. Android学习笔记(一)Android应用程序的组成部分

    Android应用程序由松散耦合的组件组成,并使用应用程序Manifest绑定到一起:应用程序Manifest描述了每一组件和它们之间的交互方式,还用于指定应用程序元数据.其硬件和平台要求.外部库以及 ...

  9. Android学习笔记_52_全面了解Android开发规范:性能及UI优化

    一.Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名.静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能 ...

随机推荐

  1. Android 4.4从图库选择图片,获取图片路径并裁剪

    转至 http://blog.csdn.net/tempersitu/article/details/20557383 最近在做一个从图库选择图片或拍照,然后裁剪的功能.本来是没问题的,一直在用 In ...

  2. Python——uuid

    uuid模块在Python 2.5以后引入,接口包括:不可变对象UUID(UUID类)和函数uuid1().uuid3().uuid4()和uuid5(),后面的四个函数用于生成 RFC 4122 规 ...

  3. vegan 包进行 Bioenv 分析

    Bioenv 分析通过 计算样本群落结构的距离矩阵和 环境因子的距离矩阵,计算两个距离之间的相关系数,挑选出最佳的环境因子组合: 默认情况下,计算 群落结构的距离矩阵时, 使用 Bray-Curtis ...

  4. APP投资 历史 十万到 十亿元的项目

    马云又投了课程表APP 1亿元.   还能输入106字 http://www.tuicool.com/articles/ARVN3qI#0-qzone-1-41007-d020d2d2a4e8d1a3 ...

  5. 页面 JavaScript 存在多个同名方法的调用分析

    在 JavaScript 中,不存在方法重载的概念,方法重载指的是可以定义不同类型的参数和参数个数的同名方法,然后可以按需调用. 如需实现按参数个数的不同去执行不同的方法主体,正确的做法是通过定义一个 ...

  6. 用pip批量更新所有包

    p.s在先,事实证明,把电脑里所有的python包一次性更新是吃力不讨好的工作,不过,这是另一回事,如果你一定要这么做,根据http://stackoverflow.com/questions/272 ...

  7. 和我一起学《HTTP权威指南》——客户端识别与cookie机制

    客户端识别与cookie机制 服务器需要区别是哪个客户端. 个性化接触 HTTP是匿名.无状态的请求/响应协议. Web站点希望: 对客户端的用户有更多的了解 追踪用户浏览页面的行为 因此,产生了几种 ...

  8. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  9. geoserver入门

    1.什么是Universal Transverse Mercator system 翻译名叫做通用横轴魔卡托系统,通常称为UTM.这个投影系从中心子午线把世界分成一系列6度的纵向宽区域. 2.什么是w ...

  10. Linux的wget命令

    wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径 例如: # wget http://www.linuxsense.org/xxxx/xxx. ...