[转]结合HierarchyViewer和APK文件反编译获得APP元素id值

背景:

最近在使用Robotium进行Android自动化测试。遇到了一个问题:我需要获得一个View的id(int型数值)。此前我在http://maider.blog.sohu.com/255448342.htmlhttp://maider.blog.sohu.com/255485243.html两篇文章中讲述了如何打开手机上的View Server来使用HierarchyViewer。HierarchyViewer对查看UI组件固然有帮助,但要想获取一个元素的id还是不行的。请看下图:

我在HierarchyViewer中查看“发布”这个View,HierarchyViewer显示了一个@414a54c8id/flipper_head_action。注意:@后加一串16进制数并不是这个view的id,而只是一个对我们人类没有任何意义的指针值。

但是我们有这个元素的id名flipper_head_action。我们需要按图索骥,按这个id名找到对应的数值。

解决步骤:

1.下载反编译器dex2jar,和一个java源代码查看器jd-gui

下载地址:

https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.13.zip&can=2&q=

https://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=

2.解压第一步下载的东西,放在适当文件夹。

3.将要反编译的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到第2步解压得到的dex2jar.bat所在文件夹。

4.将命令行定位到dex2jar.bat所在文件夹,运行命令:

dex2jar.bat classes.dex

在同文件夹下生成:

classes_dex2jar.jar

5.打开第二步解压得到的jd-gui.exe,File-》Open File打开第四步生成的classes_dex2jar.jar

6.现在在jd-gui中的左侧导航中,定位到APP所在的包吧!(这个包名,你在HierarchyViewer里能看得到)。例图:

7.滚动jd-gui的左侧导航栏至较下方,可以看到反编译出的R文件。而其中有一个R$id就是我们要找的文件。

8.现在,在R$id文件中,搜索本文开始得到的元素id名字吧(flipper_head_action),我们得到了这个元素的id的int值为2131427472。大功告成!

本篇文章参考了:

http://blog.csdn.net/sunboy_2050/article/details/6727581

时间: 2024-10-13 05:08:45

[转]结合HierarchyViewer和APK文件反编译获得APP元素id值的相关文章

APK文件反编译

上次看了两篇反编译APK文件的文章,反编译了几个音乐播放器,自己借用其中一个应用的界面做了一个相应播放器.近期有比较多的空闲时间,所以打算做一个LBS旅行应用.但目前发现又不会反编译了,所以还是记录下来,下次再忘直接看自己的文章比较快.(注:以下为Windows环境下) 1:反编译Java源码(从dex文件->jar文件->java文件) 利用工具(1)dex2jar,下载地址:http://code.google.com/p/dex2jar/(不知道能不能连上) (2)jd-gui,下载地址

关于APK文件反编译方法(图文详解)

今天晚上利用个把小时,终于把apk反编译彻底弄明白了,现在详细讲解一下apk反编译的具体过程. 1.下载三个工具 APK Multi-Tool    作用:获取apk的配置资源文件 dex2jar-0.0.9.15  作用:将apk反编译成java源码(classes.dex转化成jar文件) jd-gui 作用:打开上面生成的jar文件(把.apk文件改成.zip或者.rar文件后,用压缩文件打开只能看到大量的.java文件,此时就可以利用此工具打开,就可以看到源代码已经所用到的库文件) [三

【Android】apk文件反编译

工具: 压缩软件:用于解压apk包 dex2jar:*.dex反编译为Jar包 jd-gui:查看Jar文件 (PS:不知道博客园如何上传附件,只能把工具挂到百度网盘了:http://pan.baidu.com/s/1jIwb3MY) 0x01:用压缩软件解压apk 0x02:dex2jar把*.dex编译jar包 (1)把需要反编译的*.dex文件拷贝到dex2jar根目录 (2)通过命令行cd进入dex2jar根目录 (3)执行命令 d2j-dex2jar.bat *.dex 编译成功后会发

android apk 文件反编译

最近,自己坑逼的把一个android 项目修改版本的代码删除了.这个项目居然还没上传到源代码管理器.幸好还有apk文件,修改的代码也不多可以反编译一下. 1.下载 dex2jar  获取源码工具  地址:https://sourceforge.net/projects/dex2jar/   下载 jd-gui     查看源码工具     地址:http://jd.benow.ca/ 2.解压 dex2jar  . 3.修改 apk 文件后缀为 .rar 或 .zip ,然后解压文件,找到解压文

APK防反编译技术

APK防反编译技术 下载地址:地址 我们的APK实际上就是一个ZIP压缩文件,里面包含有一个classes.dex,我们编译后生成的程序代码就全部在那里了,通过apktool等工具可以轻松地将它们反编译成smali代码.有了这些反编译出来的smali代码之后,我们就可以轻松地了解别人的APK使用的一些技术或者直接修改别人的APK.由于这些APK反编译工具的存在,我们迫切地希望能有方法去防止别人来反编译我们的APK,从而保护自己的商业机密和利益. 下载地址:地址 版权声明:本文为博主原创文章,未经

android apk 防止反编译技术第一篇-加壳技术

做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习.现在将最近学习成果做一下整理总结.学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步.这篇主要讲apk的加壳技术,废话不多说了直接进入正题. 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想

android apk 防止反编译技术第二篇-运行时修改字节码

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

Android Apk的反编译和加密

这几天在上海出差,忙里偷闲学习了一下Apk的反编译工具的基本使用.下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码. 一.Apk文件组成 Android的应用程序APK文件说到底也是一个压缩文件,那么可以通过解压缩得打里面的文件内容,不过很显然,当你去解压完去查看的时候,发现里面的很多东西和你想象中的不太一样.资源文件等xml文件基本打不开,即使打开了也都是乱码(而这正是Android进行加密过),有些应用会将图片资源等的也加密(如qq音乐). 而既然

android apk 防止反编译技术第四篇-对抗JD-GUI

又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372).运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203)和伪加密(http://my.oschina.net/u/2323218/blog/399326),如果有不明白的可以查看我的博客的前三篇中关于这