Netbeans 6.8 + apktool_2.0.0b9 动态调试smali文件
前言
很早就知道用Netbeans能够单步调试smali,一直拖到现在才真正的自己实现了一次~ 下面是详细步骤!
0×1
环境及工具
a.apktool_2.0.0b9 下载地址:http://connortumbleson.com/2014/02/apktool-2-0-0-beta-9-released/
b.Netbeans 6.8版本 下载地址:http://dlc.sun.com.edgesuite.net/netbeans/6.8/beta/bundles/netbeans-6.8beta-ml-windows.exe
c.一个模拟器
0×2
详细步骤:(以test.apk为例)
第一部分:生成可供调试的apk
a.加-d参数进行反编译
|
1
|
java -jar apktool_2.0.0b9.jar d -d test.apk -o out
|
b.通过查看AndroidManifest.xml获得入口activity,然后找到oncreate()函数。在
|
1
|
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
|
后添加:
|
1
|
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
|
c.重打包
|
1
|
java -jar apktool_2.0.0b9.jar b -d out -o debug.apk
|
d.签名,然后安装debug.apk
成功生成了一个支持调试的apk文件
第二部分:netbeans设置
a.删除out目录下的build文件夹
b. 打开netbeans,选择“文件”-“新建项目”-“基于现有源代码的java项目”
c. 在“项目文件夹处”选择out目录
d. 在“源包文件夹”出选择out目录下的smali文件夹
e. 点击完成,项目创建完毕
第三部分:开始调试
a.在模拟器中运行刚刚安装的debug.apk,程序会处于挂起状态。
b.在netbeans中找到入口activity的oncreate函数,在刚才invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
下一行下断点
c. 在netbeans中,选择“调试”-“连接调试器”
d. 依次设置:
调试器:JPDA
连接器:SocketAttach
传输:dt_socket
主机:127.0.0.1
端口:8700 (端口号可以通过DDMS中看到)
超时:[可不填]
e. 确定,即完成连接调试,可以发现IP停在了刚才下断点的地方。
f. 可以看到,apktool2.0+netbeans 6.8支持显示寄存器的值。
查看端口号:

调试成功:

0×3
单步调试一个实例
在Challenge1Verifier.java文件中的某一行下好断点

F5让程序运行起来,在模拟器中选择关卡1、随意输入:

点击按钮,程序会断在刚刚下好的断点处,可以看到程序已经获取到了用户名和注册码

单步能够清楚的看到程序的流程, 这里就不具体的写出过程了。到最后比较处:

很清楚的能看到,通过用户名计算出来的值‘38808’和注册码进行比较!
正确一组:
abcd
38808
写在最后
动态调试smali网上资料很多,要是喜欢玩算法的话,动态跟踪smali是一个很不错的选择~
相关文章:
本文出自 0n1y3nd's Blog,转载时请注明出处及相应链接。
本文永久链接: http://0nly3nd.sinaapp.com/?p=576
Netbeans 6.8 + apktool_2.0.0b9 动态调试smali文件的更多相关文章
- 动态调试smali代码学习记录
预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<An ...
- Android studio动态调试smali
前面介绍了使用IDA动态调试smali,这种方法设置简单,不用重打包,用起来方便,但是如果变量类型设置错误则会马上退出调试,这是让人不爽的地方,而使用Android studio则不会. 0x01 ...
- 使用IDEA动态调试smali代码
原创,转载请注明出处. 一般java ide(如eclipse.idea)都可用来进行smali的动态调试,这里选择IDEA. 第1步:使用apktool反编译apk java -jar apktoo ...
- Android Studio动态调试smali代码
工具: Android Studio版本: 3.0.1 smalidea插件: https://github.com/JesusFreke/smali/wiki/smalidea. 反编译工具:本节先 ...
- AndroidStudio+ideasmali动态调试smali汇编
0x00 前言 之前对于app反编译的smali汇编语言都是静态分析为主,加上一点ida6.6的动态调试,但是ida的调试smali真的像鸡肋一样,各种不爽,遇到混淆过的java代码就欲哭无泪了 ...
- 动态调试smali代码
Android Killer对应用进行反编译为smali代码,看看Manifest文件中application标签里面是否有android:debuggable="true",没有 ...
- IDA动态调试so文件出现SIGILL
用ida6.6 调试android的so文件时经常会报SIGILL的错误,意思是指令非法.而且这种错误基本都是发生在系统函数内部,像我遇到过的mmap,fopen,fgets等等.在这些函数内部如果用 ...
- IDA动态调试SO文件
1. 所需工具 IDA Pro 6.6. 安卓SDK工具 2. 模拟器设置 将ida所在目录的dbgsrv文件夹内的android_server文件push到模拟器中. 设置777属性 启动调试服务器 ...
- apktool + eclipse 动态调试APK
用了会AndBug,尽管挺强大的可是作为习惯了OD.EDB作为动态调试工具的人,自然有些不习惯,于是乎寻求新的动态调试解决方式.但大多数都是NetBeans + apktool.想着还得多下一个IDE ...
随机推荐
- PHP:urlencode
urlencode是用于对字符串进行编码,使得所有字符都能被放入url中,而不会被解析器误解. 正如html中的<>这样的符号是标记符,如果正文中存在<,要把它转义为< url ...
- 桥接 NAT HOST-ONLY
无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 桥接 桥接网络是指本地物理网卡和虚拟网卡通 ...
- Tomcat服务器顶层结构和启动过程【转】
号外:2016 最流行的是哪一种 Java 应用服务器呢? 通过从部署的 1240 个 JVM 中得到的数据,我们能够确定出现了 862 个容器供应商,或者说是占到了运行环境的 70% 左右.这些容器 ...
- ajax实例及实现文本框异步搜素
search.jsp(WebContent/jsp/search.jsp) <%@ page language="java" contentType="text/h ...
- runtime——消息机制
本文授权转载,作者:Sindri的小巢(简书) 从异常说起 我们都知道,在iOS中存在这么一个通用类类型id,它可以用来表示任何对象的类型 —— 这意味着我们使用id类型的对象调用任何一个方法,编译器 ...
- Servlet学习三:不允许直接访问jsp处理方式一过滤器
转自:http://zy19982004.iteye.com/blog/1755189
- J2EE判断重复的数据
import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...
- php redis 消息队列
redis是什么东西就不多说了,网上文章一搜一大堆. 首先来说一下我要实现的功能: 类似一个消息中转站吧,如果有人要发送消息,先将消息发到我这里来,然后我这边进行转发,为的就是有一个统一的管理和修改时 ...
- opencv基础知识------IplImage, CvMat, Mat 的关系和相互转换
Mat,cvMat和IplImage这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化.而CvMat和IplImage类型更侧重于“图像 ...
- PHP DES加密
public function encrypt($str) { //$str = "hh"; $key = "key:123";//密钥 $cipher = M ...