decompile APK + eclipse to debug

反编译第三方APK.并且调试第三方APK

用的工具如下:

 dex2jar

 baksmali.jar

smali.jar

re-sign.jar

jd-gui.exe

1.反编译APK获取的源码

   先解压缩APK 获取classes.dex,使用 dex2jar 获取 能看懂的jar,再导出所有源码到outSource文件夹中

2.将获取到的classes.dex 使用 baksmali.jar编译成 *.smali文件

java -jar E:\开发工具\Smali2Java\baksmali-2.0.3.jar -o classout/ classes.dex 

3.在入口Activity的OnCreate()方法中添加一句调试语句( 是smali文件哦)

a=0;// # virtual methods
a=0;// .method protected onCreate(Landroid/os/Bundle;)V
a=0;//     invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
a=0;//
a=0;//     .locals 1
a=0;//     .param p1, "savedInstanceState"    # Landroid/os/Bundle;
a=0;//
a=0;//     .prologue
a=0;//     .line 11
a=0;//     invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

4.打包修改后的*.smali文件到新的dex (破解就在这步,修改相关方法再重新打包变成破解软件,smali文件不好读,结合前面导出的源码还是可以找到对应方法的)

java -jar E:\开发工具\Smali2Java\baksmali-2.0.3.jar classout/ -o classes.dex   

5.将新的classes.dex添加到原来的APK包中

并使用re-sign.jar签名(re-sign.jar会自动使用debug签名)

6将应用安装到手机或模拟器(先要删除手机或模拟器上原版程序)

7新建eclipsejava工程引入outSource文件夹中的源码

8连接手机后再DDMS中观察到 应用监听的调试端口是多少

9 再启动Debug模式  Run> Debug -> Debug Configurations

就会发现 断点调试成功了

如果需要打正式包, 只要将第5步修改成 来完成签名即可 (该签名下不可以调试)

d2j-apk-sign  demo.apk   

时间: 2024-09-20 10:37:53

decompile APK + eclipse to debug的相关文章

在 Eclipse 中 Debug Maven 项目“source not found”问题解决

问题 在 Eclipse 中 Debug Maven 项目出现"Source not found",无法定位到断点的源码位置. 原因 Eclipse 中 Debug 时未关联上源码,所以找不见 解决:关联上源码 点击"Edit Source Lookup Path" 点击"Add" 关联上相关的项目源码,即可

eclipse使用debug模式启动web服务报错

问题描述 eclipse使用debug模式启动web服务报错,使用run方式就正常.报错异常如下:SEVERE: Catalina.start: org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)at org.apache.cata

关于eclipse的debug。

问题描述 关于eclipse的debug. 在使用debug模式时每次到断点就会停住,但有的时候想查本次操作的数据是否正确,就只能按住F8等debug结束.请教各位有什么快捷方法,可以在debug模式下跳过本次操作? 我知道F6是下一句代码,F5是进入方法,F8跳到下一个断点. 我的问题是:如何让本次操作在调试的情况下,直接通过无视断点,因为我需要很快得到运行结果又不想取消之前设置的断点,有这样的功能吗? 解决方案 转载至: 1.进入debug模式(基础知识列表) 1.设置断点 2.启动serv

调试-eclipse 断点debug不了

问题描述 eclipse 断点debug不了 今天用eclipse开发项目时,发现断点突然调试不下去了,不往下一行走,报错如下: eclipse设置如下: build.xml配置如下: 求大牛解惑 解决方案 是不是eclipse里的源代码跟编译后运行的class/jar包文件版本不一致造成的? 版本不一致,导致行号对不上. 一般情况下eclipse中断不进去都是这类原因. 解决方案二: eclipse没设断点还会debug的解决Eclipse Debug方法,命中次数与条件断点eclipse--

利用Eclipse远程Debug Jboss

     大家的应用发布以后,有时候需要直接在服务器上进行远程调试,以下是远程调试Jboss的方法我们的Eclipse用的是3.2.2,Jboss是4.2.2 1.设定Jboss的启动参数,把Debug端口放开      打开[jboss-4.2.2.GAbinrun.conf]文件,把47行的注释放开,如下所示 # Sample JPDA settings for remote socket debugingJAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=d

急啊~Eclipse的Debug中有个Variables窗口的错误信息

问题描述 以前查看变量的窗口现在显示如下信息Unable to create view: Argument not valid请问是怎么回事?java.lang.IllegalArgumentException: Argument not validat org.eclipse.swt.SWT.error(SWT.java:3358)at org.eclipse.swt.SWT.error(SWT.java:3297)at org.eclipse.swt.SWT.error(SWT.java:3

Eclipse的Debug调试技巧

作为开发人员,掌握开发环境下的调试技巧十分有必要.我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪里出现问题,经常需要增加日志,看变量的值,这样调试很麻烦.假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能.那能为你省下一些时间,也将会使你的生活更安逸.轻松. 首先我们需要注意三个点:不要使用System.out.println作为调试工具\使用一个日志分析器来阅读日志\启用所

Eclipse在Debug时不在指定位置暂停

今儿将一个项目改了很多,在Debug时在绿行停在非指定位置(没有打断点的位置),就是不在打断点的地方暂停,但是能正常run. clean.fresh.重启皆没用. 解决方案: 在BreakPoints窗口removeAll断点,然后重新在想要暂停的地方打断点,再debug就OK了.

Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名_Android

对已有的apk文件进行重新打包,前面 Android签名机制:生成keystore.签名.查看签名信息 已经介绍了.本文介绍另外两种需求. 使用默认的Debug签名打包 如果直接使用Eclipse开发新程序,默认就会被打上Debug的签名,这个是地球人皆知,但是如果你是想Repack别人并且想使用Debug签名该怎么办? 首先需要找到你本机的默认签名的,一般位于C:\Users\用户名\.android\debug.keystore下,拷出来,然后打包,打包命令: 复制代码 代码如下: jars