安卓反编译揭秘(爱加密系列教程五):APK软件反编译 去广告
安卓apk反编译
反编译jar包
• jd-gui.exe
– 直接用此工具打开jar包
如何防止代码被反编译
• 由于apk是Android虚拟机加载的,它有一定的 规范,加密apk的Dalvik无法识别apk了。完全 避免是不可能的,总有人能够破解你的代码。 但是有几种方式来提高 被反编译取代码的难 度。
– 关键代码使用jni调用本地代码,用c或者c++编写, 因此相对比较难于反编译。 – 混淆java代码。混淆是不改变代码逻辑的情况下, 增加无用代码,或者重命名,使反编译后的源代码 难于看懂。网上开源的java代码混淆工具较多,一 般是用ant的方式来编译的
反编译
• • • •
程序的打包与安装过程 反编译资源文件 反编译dex文件 反编译jar包
程序的打包与安装过程
Android package(.apk)
Android project
Compliation And packaging
.dex files
Resource s.sources
Androidmanifest .xml
signin g
Device
反编译资源文件
• 工具
– apktool
• 将xml文件反编译出来,读取应用程序的资源信息
反编译dex文件
• dex2jar
– android应用程序中所有的字节码被放到 classes.dex文件中去 – 将classes.dex编译成classes_dex2jar.jar
Android反编译和编译
【Android 教程】反编译和编译第一:要在你的PC上建立Java的环境,才能执行编译工作。
具体方法我这个就不说了,你百度或者Google下就知道了,很简单的。
第二:下载必要的工具。
Apktool工具,下载地址/file/e65esebm下载后解压(有三个文件aapt.exe,apktool.bat,apktool.jar),为了方便。
将解压出来的文件放在CDM模式(win+R)默认的目录下。
比如,我的是Windows7 32位我的CDM模式默认目录是C:\USER\用户名。
第三:如果你是要编译系统文件的话,请将你要修改的rom里的framework-res.apk和com.htc.resources.apk(暂时叫做依赖包)用CMD模式“安装”下。
这样编译才不会出错。
我一开始就是在这里纠结了很久。
呵呵安装方法:把依赖包放在刚才放apktool的目录下。
(你也可以用指定目录的方法安装)cmd模式执行apktool if framework-res.ap k这个是安装framework-res.apkapktool if com.htc.resources.apk 这个是安装com.htc.resources.ap k第四:准备工作都做好了,现在就可以反编译和编译了。
将你要反编译的ap k放在ap ktool的目录下。
(你也可以用指定目录)cmd模式执行apktool d **X.ap k 这个是Decode也就是反编译比如反编译rosie 就执行ap ktool d rosie.ap k 就可以了(会在当前的目录下生成rosie的文件夹,修改就是在这个文件夹里进行)cmd模式执行apktool b **X 这个是build 也就是编译回去比如编译rosie 就执行ap ktool b rosie 就可以了(会在rosie的文件夹中生成一个叫dist 的文件夹,编译回去的ap k就是此文件夹中)另外说明:反编译和编译也可以用第三方工具而不用命令行。
用安卓apk反编译利器Apktool
用安卓apk反编译利器Apktool,教你去掉软件里的广告(只用于学习交流。
)给大家介绍下windows环境下使用Apktool的方法。
安装:1.先装JAVA环境,JDK/JRE都行,官网下载装过的就跳过吧!2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip3.解压apktool.jar到C:Windows 解压apktool-install-windows.zip到任意文件夹(例如:E:Android学习工具反编译ApkTool)4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。
会列出一些帮助的话就成功了。
Apktool命令:apktool d XXX.apk PATH //反编译XXX.apk到文件夹PATHapktool b PATH //从文件夹PATH重建apk到PATHdistout.apk//============================================================ ========================//案例:“超级指南针”的顶部有一条广告区,我们的目的就是把它去掉。
运行cmd进入Apktool所在目录(我的是:“E:Android学习工具反编译ApkTool”)后,使用Apktool命令操作,如下现在在“E:Android学习.工具反编译新建文件夹指南针”目录下就得到了反编译后的文件,用记事本打开其中的AndroidManifest.xml,找到与下面类似的代码段:也就是找到有一连串字符序列的地方,如上CD0E46BC8B9DF1394F1E5F6030067A71和DEE43EDE-D2DF-4B4D-A754-894C9E7F960E两处,这两处分别是架势广告与admob提供的id地址。
【推荐下载】apk反编译详解
apk 反编译详解2017/07/03 0 文章背景开发或学习Android 的时候,往往会涉反编译来借鉴别人的java 文件和布局等资源文件。
假如不小心把自己的源码弄丢了,也要经过反编译安卓在自己手机上的apk 来找回源码。
文章目标反编译工具分享反编译经验分享工具下载地址download.csdn/download/xinanheishao/9888288官方最新版本下载地址apktool: (要翻墙)https://code.google/p/android- apktool/downloads/list (不用翻墙)https://bitbucket/iBotPeaches/apktool/downloads/ dex2jar: code.google/p/dex2jar/downloads/listjd-gui: code.google/p/innlab/downloads/list工具介绍apktool 作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看dex2jar 作用:将apk 反编译成Java 源码(classes.dex 转化成jar 文件)jd-gui 作用:查看APK 中classes.dex 转化成出的jar 文件,即源码文件反编译详细步骤(app-debug.apk 为例)1、下载工具,并将其一一解压,的到一下文件,如图所示2、配置apktool 环境变量,注意观察我的apktool 在磁盘上的路径3、配置dex2jar 环境变量,注意观察我的dex2jar 在磁盘上的路径4、使用dex2jar 反编译java 文件a、新建一个文件夹,把要编译的apk 文件放入其中b、将要反编译的APK 后缀名改为.rar 或则.zip,并解压,得到其中的额classes.dex 文件(它就是java 文件编译再通过dx 工具打包而成的)c、将获取到的classes.dex 放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内。
Apk反编译
Apk反编译1.获取xml文件信息要用到apktool工具,利用工具包Androidby下的“Androidby反编译工具.exe”反编译syslog.apk反编译出来的文件夹syslog跟syslog.apk是在同一层:2.反编译dex获取java源代码Apltool只能编译smail,不能编译dex文件,所以要用到dex2jar文件用dex2jar文件下的“dex2jar.bat”操作,直接将syslog文件夹下的“classes.dex”拖到“dex2jar.bat ”文件下编译,得到“classes_dex2jar.jar”文件,该文件与“classes.dex”在同一层;利用dex2jar\jd-gui-0.3.5.windows文件夹下的‘jd-gui.exe’查看得到的‘classes_dex2jar.jar’文件查看结果如下:详细分析:1:注册消息:病毒注册并响应了3个消息,分别是:启动完成、监控拨出电话、接收短信,以便实现对应的功能。
注册服务:实现服务的定时启动2:权限:android.permission.READ_PHONE_STATE读取电话状态android.permission.MODIFY_PHONE_STATE修改电话状态android.permission.BROADCAST_STICKY允许一个程序广播常用intentsandroid.permission.PROCESS_OUTGOING_CALLS允许程序监视、修改有的是关播出电话android.permission.RECEIVE_BOOT_COMPLETED开机自动启动android.permission.UPDATE_DEVICE_STATS更新设备状态android.permission.INTERNAL_SYSTEM_WINDOW允许打开窗口使用系统用户界面android.permission.ADD_SYSTEM_SERVICE允许程序发布系统级服务android.permission.VIBRATE允许访问振动设备android.permission.SEND_SMS允许发送短息android.permission.RECEIVE_SMS允许拦截接收短信android.permission.READ_SMS允许读短信数据库android.permission.WRITE_SMS允许修改短信数据库android.permission.INTERNET允许连接网络android.permission.CHANGE_CONFIGURATION允许一个程序修改当前设置,如本地化android.permission.WAKE_LOCK允许使用PowerManager的WakeLocks保持进程在休眠时从屏幕消失android.permission.STATUS_BAR允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序android.permission.ACCESS_WIFI_STATE允许程序访问Wi-Fi网络状态信息android.permission.DEVICE_POWER允许访问底层电源管理android.permission.DISABLE_KEYGUARD允许程序禁用键盘锁android.permission.WRITE_APN_SETTINGS允许程序写入API设置android.permission.CHANGE_WIFI_STATE允许程序改变Wi-Fi连接状态android.permission.ACCESS_NETWORK_STATE允许程序访问有关GSM网络信息android.permission.CHANGE_NETWORK_STATE允许程序改变网络连接状态android.permission.BROADCAST_SMS允许程序广播一条短信回执android.permission.WRITE_SETTINGS允许程序读取或写入系统设置android.permission.WRITE_EXTERNAL_STORAGE允许写SD卡不法分子就通过这些来获取:1. str2 =localCursor.getString(localCurso r.getColumnIndexOrThrow("address")).toString();//读取电话号码2. Date localDate = newDate(Long.parseLong(localCursor.getString(localCursor.getClumnIndexOrThrow("date")).toString()));//读取时间3.((AlarmManager)paramContext.getSystemService("alarm")).set(2, SystemClock.elapsedRealtime() + paramInt * 1000,pendingIntent); //我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,启动后台4.Cursor localCursor =paramContext.getContentResolver().query(localUri, null,null, null, null);//通过游标查询出收件箱的地址5. 每隔1500s发送一次报告public static final int TimerReportInSeconds= 1500;6.如果接收到的短信以”,”开始,则清除控制信息,同时提取短信中的号码并发送报告。
Android apk反编译之android APK有效加密方法
Android apk反编译之有效防止破解和反编译加密方法对于Android开发者来说,自己开发的Android APP被破解是个让人头疼的事。
那有什么办法能防止Android apk反编译和破解呢?一般的混淆代码和防二次打包还有效么?我们通过下面的内容来验证一下!首先我们找一个经过混淆代码和防二次打包的Android APK,这样的Android APK包不难找!只要到爱加密APK源代码安全检测平台,检测一下就可以知道做过什么保护。
通过图片我们可以看到这款Android APK做了混淆代码和防二次打包保护,对于其他的Android APK中的DEX、RES、SO库等文件未做任何保护。
下面我就通过对APK源代码的安全分析,看看这Android APK的安全怎么样!首先我先将APK反编译,看看能不能拿到代码!经过简单的反编译我们就可以轻松的拿到APK里面的源代码,下面我们就修改一下里面的东西,看看之前的APK保护是否有效!1、配置用户权限(重要)2、添加必须组件(重要)完成这2个步骤我们的sdk就已经植入成功了,如图:那么我们怎么解决这款APK做的保护呢?不用着急,我们慢慢来!首先我们发现当登录的时候会提示签名信息不一致,导致不能登录!经过分析发现他是给apk做了签名信息认证,这时我们需要找到他获取签名信息的地方,如下图:到这一步就可以绕过这款APK的二次打包防护了,这样我们就可以登录了!登陆后我们可以看到这款Android APK已被植入广告!这里我要简单介绍一下APK的混淆代码、防二次打包的加密技术是怎么回事!混淆代码:Android APP的源码进行混淆后混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度。
但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大。
防二次打包:二次打包是指将APK拆包后重新打包,二次打包必将丢失原有的签名。
(apk手机端汉化教程系列)第八课去除广告汉化
第八课去除广告汉化今天的课程是去除广告汉化首先了解一下软件的广告原理一个软件若要显示广告,需要先导入SDK,并在AndroidManifest.xml中注册res\layout目录内的xml文件就包含有广告界面的配置代码,修改这些代码就可以去除广告界面。
另外还要屏蔽广告下载源,不然只是单单不显示广告界面而已,软件还会下载广告所需的数据,耗费流量目前Android的广告供应商有两个,一个是Admob,一个是Google Ads,前者已被后者收购,但两者SDK依然独立。
Admob的广告代码为:<com.admob.android.ads.AdViewandroid:id=”@+id/ad”android:layout_width=”fill_parent”android:layout_height=”wrap_content” />Google Ads的广告代码为:<com.google.ads.GoogleAdViewandroid:id=”@+id/adview”android:layout_width=”wrap_content”android:layou t_height=”wrap_content” />Admob的广告下载源:/ad_source.phpGoogle Ads的广告下载源:/pagead/afma_load_ads.js了解之后我们开始去除广告:分为去除广告下载源和去除广告界面两部去除广告下载源方法:找到今天的课件Wallpaper Wizardrii,使用右键WINRAR方式打开,把classes.dex拖出来,放到dex打包解包工具中,然后左键拖住classes.dex到dex.bat,选择1,解包,完成后会多出一个classes文件夹解包完成后打开Notepad++,选择搜索-在文件中查找,讲目录定位到刚才解包后的classes 文件夹查找目标中输入刚才讲到的广告下载源地址(若不知道软件用的是哪个供应商的广告的话,最好两家的下载源都搜索下)搜索完成后会显示出结果双击结果中的黄色区域,再双击上方栏的Find result-hits,就可以看到N多代码。
android反编译
Android APK反编译详解(附图)分类:Android 2011-08-28 22:42 29996人阅读评论(31) 收藏举报这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。
在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。
一、反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
以下是下载地址:dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI:/files/jdgui.zip具体步骤:首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java 文件编译再通过dx工具打包而成的;解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。
在命令行下定位到dex2jar.bat所在目录运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar生成jar文件的截图如下:运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了HelloAndroid源码(编译前的apk源码对照)如下:二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。
首先还是下载工具,这次用到的是apktool下载地址:/p/android-apktool/downloads/list下载:apktool1.4.1.tar.bz2和apktool-install-windows-r04-brut1.tar.bz2(两个包都下载)具体步骤:将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\*.apk C:\*文件夹,如下图:命令行解释:apktool d [apk文件 ] [输出文件夹]反编译的文件如下(AndroidManifest.xml为例):特别注意:你要反编译的文件一定要放在C盘的根目录里将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可,命令如下:打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:builddist其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok注:本android反编译教程,是在Windows 7 Ultimate 64bit ,测试通过上述反编译工具包下载另外,作为应用开发者,肯定不希望自己的代码被反编译的,下一遍博客中讲述如何通过混淆代码放在反编译:Android如何防止apk程序被反编译。
android安装文件之Apk反编译
Apk反编译1.首先通过抓包,获取QQ皮肤apk下载地址通过抓包分析得到下面地址http://117.135.129.37:8080/resource/NQQSoft/skin_2010/android/800x4 80/com_tencent_skin_outdoor.apk2.下载APK反编译反编译用到的4个zip包apktool-install-windows-2.1_r01-1.zip--务必把其中的apktool.jar放到/window/ 目录下apktool1.3.2.tar.bz2--反编译XML文件dex2jar-0.0.7-SNAPSHOT.zip--反编译java代码jdgui.zip--用于打开dex2jar 反编译的jar包a)反编译获取xml源码把tc_skin.apk放到apktool同文件夹下Win+R 运行CMDE:cd /d e:getSource\apktoolE:\ getSource\apktool>apktool d tc_skin.apk tc_skin <回车> I: Baksmaling…I: Decoding resource table…I: Decoding resources…I: Copying assets and libs…现在文件被decode到E:\getSource\apktool\tc_skin了,打开E:\getSource\apktool\tc_skin\res\layout\main.xml看,所有XML都可见了~b)反编译获取java源码用winrar解压tc_skin.apk,提取classes.dexCmd 下输入dex2jar classes.dex生产的classes.dex.dex2jar.jar 文件,即为反编译的源码。
最后用jdgui,打开jdgui生成的classes.dex.dex2jar.jar文件。
安卓软件APK编译反编译与汉化
APK是Android Package的缩写,即Android安装包。
APK是类似Symbian Sis或Sisx的文件格式,将apk通过电脑或传入手机即可安装程序。
apk文件实际是一个zip压缩包,可以通过解压缩工具解开*.apk文件。
平时最常用的一款进程结束软件 Advanced Task killer 作为本次课程的教学软件!Advanceed Task killer 任务关闭程序1.9.5所需工具下载本帖隐藏的内容java环境包必装,否则无法打包解包dex文件和签名apk/file/f68bcd579d汉化工具包:/file/cl780ugc①首先用win rar压缩工具将apk压缩包内的文件解压到一个文件夹内②解压好,会得到如下图的几个文件和文件夹现在留意META-INF 和res这两个文件夹,还有AndroidManifest.xml,classes.dex 和resources.arsc这3个文件,它们是每个软件都必须有的!assets可有可无,有的软件还有些其他的文件夹。
各个文件夹文件详解:META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全在最后做APK签名会详细解析。
res目录是存放资源文件的不同软件res目录的文件夹也不同,一般情况是:drawable(图片所在文件夹)drawable-hdpi(高分辨率图片所在文件夹)layout(界面布局xml文件所在文件夹)layout-hdpi(高分辨率界面布局xml文档所在文件夹)menu(一些菜单文件所在目录)raw(存放帮助类文档或其他资源的文件夹,如help.html;clock.zip)xml(其他一些xml文件所在目录)这款Advanced Task killer 软件就只有drawable,layout,xml这三个。
drawable这个文件夹一般都是存放软件中的图片。
有的软件要修改图片的,就要来这里找!一般游戏居多。
Android_反编译apk_到java源码的方法
Android 反编译apk 到java源码的方法分类:Android 2010-12-31 15:46 1931人阅读评论(1) 收藏举报Apk文件破解可见源码1.获取apk的资源图片直接用WinRAR打开,res/drawable直接拖拽出来即可。
2.获取xml文件信息虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址:https:///p/android-apktool/。
下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,DOS在cmd下进入apktool 所在路径,然后输入apktool d "XXX1" "XXX2",XXX1指的是你要反编译的apk文件,XXX2指的是反编译后文件存放的路径,如:apktool d "C:/taobao.apk" "C:/taobao"3 .反编译dex获取Java源代码Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址:/p/dex2jar/。
这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,jd-gui下载地址:http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip。
详细步骤:解压apk文件,直接拖拽(rar解压软件),找到classes.dex文件在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex 文件所在路径及名称(classes上面解压得到),如:dex2jar.bat D:/classes.dex;这样会生成一个classes.dex.dex2jar.jar文件,然后用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。
安卓APK文件怎样去除内置广告及修改图标和文字
安卓APK文件怎样去除内置广告及修改图标和文字一:首先会用到几个软件,一个是dex解包、打包工具、Notepad++ Portable(dex文本编辑工具)、以及签名工具和JAVA运行环境安装,其他软件可以到这个地址下载:/lk/sVkRQBi4HAJhu?sid=301二:把需要去广告的软件,右键用7-zip解压方式打开,把classes.dex拉出来。
三:用dex工具解压classes.dex文件(具体方法看包里面说明)。
打开Notepad++ Portable 搜索http:// (注意复制)四:如图双击搜索到的网址,在上面改为无效网址就可以了。
或直接删除引号里的网址,然后保存“全部”文件(这个修改时要注意,有的软件如果修改错误的话可能不能安装,可以网上搜一些是广告的连接。
我只是提供一个方法,具体大家多练习研究吧)引用:还有ads字样文件都可能是广告但开头的不是去广告步骤:1、去除广告下载源解包classes.dex(方法上面已讲过),用Notepad++ Portable搜索广告下载源地址(若不知道软件用的是哪个供应商的广告的话,最好两家的下载源都搜索下)2、去除广告界面① 将刚刚已经替换了classes.dex文件的apk安装包用反编译。
② 用Notepad++ Portable搜索广告代码(上面已列出)如图,将搜索路径定位到res文件夹(就是反编译后的res文件夹),代码只搜索开头就行了,如:com.admob.android.ads.AdView 和com.google.ads.GoogleAdView。
如图:搜索结果:③ 双击黄颜色区域,修改下图上方的代码android:layout_width="fill_parent" 修改为android:layout_width="0.0dip"android:layout_height="wrap_content" 修改为android:layout_height="0.0dip"修改后:将所有搜索到的代码按照上面修改,完成后保存五:封包classes文件夹(见包里说明),然后把classes.dex文件再次拖动到用解压方式打开的APK文件内。
Android软件代码反编译方法
Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似Sun JavaMe 的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。
dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中:D:\ProgramFiles\android-sdk-windows-1.6_r1\platforms\android-1.6\tools> dexdump.exe -d classes.dex > spk.dump.txt得到的文件内容,描述了类的信息,但是不怎么好阅读这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。
baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具操作方式如下:1.1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml >AndroidManifest.txt2.2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt3.3、java -jar baksmali-1.2.5.jar -o classout/d:\play\classes.dex复制代码baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段:1.2.3.view plaincopy to clipboardprint?4..class Lcom/paul/test/a;5..super Landroid/view/View;6.7.# static fields8..field private static final a:Landroid/graphics/Typeface;9.10.# instance fields11..field private b:I12..field private c:I13..field private d:Z14..field private e:J15..field private f:I16..field private l:[Ljava/lang/String;17.18.# direct methods19..method static constructor <clinit>()V20. .registers 221. sget-object v0,Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;22. const/4 v1, 0x023. invoke-static {v0, v1},Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)La ndroid/graphics/Typeface;24. move-result-object v025. sput-object v0,Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;26. return-void27..end method28.#29.# other methods ..........30.#31.# virtual methods32..method public onKeyUp(ILandroid/view/KeyEvent;)Z33. .registers 434. const/16 v0, 0x4235. if-eq p1, v0, :cond_836. const/16 v0, 0x1737. if-ne p1, v0, :cond_b38. :cond_839. invoke-direct {p0}, Lcom/paul/test/a;->d()V40. :cond_b41. const/4 v0, 0x042. invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V43. invoke-super {p0, p1, p2},Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z44. move-result v045. return v046..end method47..class Lcom/paul/test/a;48..super Landroid/view/View;49.50.# static fields51..field private static final a:Landroid/graphics/Typeface;52.53.# instance fields54..field private b:I55..field private c:I56..field private d:Z57..field private e:J58..field private f:I59..field private l:[Ljava/lang/String;60.61.# direct methods62..method static constructor <clinit>()V63. .registers 264. sget-object v0,Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;65. const/4 v1, 0x066. invoke-static {v0, v1},Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)La ndroid/graphics/Typeface;67. move-result-object v068. sput-object v0,Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;69. return-void70..end method71.#72.# other methods ..........73.#74.# virtual methods75..method public onKeyUp(ILandroid/view/KeyEvent;)Z76. .registers 477. const/16 v0, 0x4278. if-eq p1, v0, :cond_879. const/16 v0, 0x1780. if-ne p1, v0, :cond_b81. :cond_882. invoke-direct {p0}, Lcom/paul/test/a;->d()V83. :cond_b84. const/4 v0, 0x085. invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V86. invoke-super {p0, p1, p2},Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z87. move-result v088. return v089..end method90.复制代码认真一看,就知道:# static fields 定义静态变量的标记# instance fields 定义实例变量的标记# direct methods 定义静态方法的标记# virtual methods 定义非静态方法的标记以onKeyUp方法为例,其中定义了处理逻辑,if-eq p1, v0, :cond_8 表示如果p1和v0相等,则执行cond_8的流程:1.2. :cond_83. invoke-direct {p0}, Lcom/paul/test/a;->d()V4.复制代码调用com.paul.test.a的d()方法不相等:if-ne p1, v0, :cond_b 则执行cond_b的流程:1.2. :cond_b3. const/4 v0, 0x04.5. invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V6.7. invoke-super {p0, p1, p2},Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z 8.9. move-result v010.复制代码大概意思就是调用com.paul.test.a的setPressed方法,然后再调用父类View的onKeyUp方法最后1.return v0复制代码该方法,能把外部引用的lib包类也解析出来,能开到包的全貌。
Android开发学习总结(六)——APK反编译
Android开发学习总结(六)——APK反编译 学习和开发Android应⽤有⼀段时间了,今天写⼀篇博客总结⼀下Android的apk⽂件反编译。
我们知道,Android应⽤开发完成之后,我们最终都会将应⽤打包成⼀个apk⽂件,然后让⽤户通过⼿机或者平板电脑下载下来进⾏安装。
正常情况下,Android应⽤打包成apk之后,就⽆法再看到开发这个应⽤时使⽤的资源⽂件以及代码了。
但是我们通过⽹上提供了⼀些⼯具,还是可以将apk进⾏反编译的,apk反编译之后,我们就可以看到开发这个应⽤使⽤的资源⽂件(图⽚)、layout、样式、相关的实现代码等,apk反编译也算是Android开发中⼀个⽐较实⽤的技巧吧,当我们对别⼈开发好的应⽤感兴趣时,我们就可以通过这种技术⼿段将别⼈打包好的apk进⾏反编译,继⽽可以看到我们感兴趣的内容,(注:反编译不是让各位开发者去对⼀个应⽤破解搞重装什么的,主要⽬的是为了促进开发者学习,借鉴好的代码,提升⾃我开发⽔平。
)下⾯就来说说如何将⼀个apk反编译出来。
⼀、准备必要⼯具 ⼯欲善其事,必先利其器,⾸先我们要下载好反编译apk时需要的相关⼯具1.1、使⽤⼯具1. apktool (资源⽂件获取)2. dex2jar(源码⽂件获取)3. jd-gui (源码查看)1.2、⼯具介绍 apktool 作⽤:资源⽂件获取,可以提取出图⽚⽂件和布局⽂件进⾏使⽤查看 dex2jar 作⽤:将apk反编译成java源码(classes.dex转化成jar⽂件) jd-gui 作⽤:查看APK中classes.dex转化成出的jar⽂件,即源码⽂件1.3 apktool下载地址: 下载好之后得到⼀个如下图所⽰的jar⽂件 dex2jar下载地址: 下载完成之后,得到⼀个如下图所⽰的压缩包 jd-gui下载地址: 下载完成之后,得到⼀个如下图所⽰的压缩包: 到此,需要使⽤到的3个相关⼯具都下载好了,在这⾥说明⼀下jd-gui的下载,我从官⽅⽹站上点击下载时会经常出现如下图所⽰的问题 但是多试⼏次⼜可以下载了,所以如果有遇到这个问题的朋友们不妨多试⼏次,或者从别的地⽅下载jd-gui,jd-gui算是做Java开发的⼀个必备⼯具了,⽤它来将class反编译成java源代码是⾮常⽅便的,⽹上搜索⼀下⼀般都可以下载到,只不过版本不⼀定是最新的。
apk说明、反编译、汉化去广告
相关软件:1.Apktool2.notepad++3.Android_Tool_Box这个带签名,编译和反编译,可以换成别的。
自己在用很好环境软件1.XP下需要安装Microsoft .NET Framework V2.0运行库支持2.Java基础知识:Apk文件目录如下:- META-INF- res- anim- color- drawable- drawable-hdpi- drawable-land- drawable-land-hdpi- drawable-mdpi- drawable-port- drawable-port-hdpi- layout- layout-land- layout-port- xml- AndroidManifest.xml- classes.dex- resources.arsc- 多数情况都要汉化的是resources.arsc、classes.dex和res文件夹里的***.xml文件。
- META-INF文件夹里面存放的是证书文件,软件修改后需要将里面的证书文件删除(***.RSA、***.SF、***.MF三个文件)再重新签名,否则软件无法安装。
- res文件夹里存放的大部分是软件所需的资源及布局文件(drawable存放资源、layout、xml存放布局文件***.xml),部分需要汉化的单词、语句会在这些***.xml文件里。
- AndroidManifest.xml文件里包含了软件名称、版本、权限、引用的库文件等信息。
极少数软件在这个文件里会有单词、语句需要汉化。
- classes.dex文件是Java源码编译后的代码文件。
通常该文件里都有单词、语句需要汉化。
- resources.arsc文件是编译后的资源文件,大多数情况下,需要汉化的单词、语句绝大多数都在这个文件里,汉化的时候首先就要看这个文件。
* 另外,一些需要汉化的***.png图片文件、***.html文件、***.txt文件可能会在assets 文件夹或res/raw文件夹内。
Android开发:APK的反编译(获取代码和资源文件)
Android开发:APK的反编译(获取代码和资源⽂件)⼀、反编译⼯具: 1、APKTool: APKTool是由GOOGLE提供的APK编译⼯具,能够完成反编译及回编译apk的⼯作。
同时,它也有着安装反编译系统apk所需要的framework-res框架,以及清理以前反编译⽂件夹等功能。
APKTool的使⽤需要java⽀持。
2、dex2jar: dex2jar 是将android的.dex⽂件转换成Java的.class⽂件的转换⼯具,如果在转换过程中有问题的话,可以试⽤下其他的版本。
3、jd-gui: JD分为JD-GUI、JD-Eclipse两种运⾏⽅式,JD-GUI是以单独的程序的⽅式运⾏,JD-Eclipse则是以⼀个Eclipse插件的⽅式运⾏。
jd-gui只能查看,不能够将那些⽂件转换成.java⽂件。
⽂件下载地址: 提取码:eeir⼆、APKTool使⽤: 下载好的apktool⽂件夹中包含以下⽂件:aapt.exe、apktool.bat、apktool.jar、cmd.exe. 1、反编译: 将要反编译的apk⽂件复制到该⽂件夹下,打开cmd.exe,进⼊cmd中,执⾏命令:apktool.bat d hotword.apk (不复制也⾏,但是执⾏命令时要使⽤绝对路径写清apk⽂件放置的精确位置) 在apktool⽂件夹下可以看到hotword⽂件夹,⾥⾯存储的有res下的资源⽂件,和各种XML⽂件: 如果你给定的apk反编译⽂件已经存在,那么输⼊完该命令后会提⽰你,并且⽆法执⾏,需要重新修改命令加⼊-f指令: 这样会强⾏覆盖已经存在的⽂件。
2、回编译: 运⾏命令: 参数b代表回编译,hotword则是apk反编译出来的⽂件夹名。
apktool.bat d –f hotword.apkapktool.bat b hotword 回编译完成会在hotword⽂件夹⽣成⼀个dist⽂件夹和⼀个build⽂件夹,dist⽂件夹⾥⾯存放的就是回编译后不带有签名的apk⽂件,build⽂件夹⾥⾯还有⼀个apk⽂件夹,⾥⾯存放的是回编译后没有打包成apk的⽂件。
apk软件去广告 傻瓜教程
第一部分:软件准备。
1.apktool————对apk执行分解(反编译)和合成(编译)的工具2.dex————对classes.dex分解(dump)和合成(build)的工具3.APKsign————apk签名工具4.notepad++或者Em edit————文本编辑工具5.java环境变量配置————apk签名需要前三个工具打包为文件如下可下载:.zipnotepad 5.9_installer.zip第二部分:去广告原理。
先简单了解下软件的广告原理(可参考apk文件的组成,见帖/bbs/thread-38605-1-1.html)一个软件若要显示广告,需要先导入SDK,并在AndroidManifest.xml中注册。
Res\layout内的xml文件就包含有广告界面的配置代码,修改这些代码改变广告显示的大小就可以去除广告界面。
只是单单不显示广告,软件还会下载广告所需的数据,那么就要修改代码来屏蔽广告下载源。
目前Android的广告供应商有两个,一个是Admob,一个是Google Ads,前者已被后者收购,但两者SDK依然独立。
另外国内还有,但十分不常见。
Res\layout内的xml文件广告代码一般格式如下:Admob的广告代码为:<com.admob.android.ads.AdView android:id=”@+id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” />Google Ads的广告代码为:<com.google.ads.GoogleAdView android:i d=”@+id/adview” android:layout_width=”wra p_content” android:layout_height=”wrap_content” />广告下载源Admob的广告下载源:/ad_source.phpGoogle Ads的广告下载源:/pagead/afma_load_ads.js以上广告源是比较规范的广告源,但是现在市面的软件广告源十分不规范,即使屏蔽了上述广告源,软件还是可能显示广告的。
如何对APK包进行反回编译
【如何对APK包进行反回编译】及其工具
这里我们会用到两个小工具进行APK包的反编译和回编译。
注意:完成以上步骤需要 Java 语言软件开发工具包的支持。
APKTool:/s/1i3xLtad
APKSign:/s/1ntl1WmP
JAVA工具包下载地址:/soft/detail/14459.html
首先,下载并解压APKTool程序压缩包。
我们只需要找到这3个文件就可以了。
【APKTool】【apktool】【aapt】
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps5ACE.tmp.png
然后,我们将游戏的APK包放在对应文件的所在文件夹。
同时别忘了将其名字改为“123”,因为这是反编译的需要。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps4A88.tmp.pngfile:///C:\ Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps4A89.tmp.png
打开名为“apktool”的命令脚本,这时会弹出一个这样的窗口。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps4A8A.tmp.png。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
APK软件反编译去广告
具体步骤:
1.下载apktool
下载地址:https:///p/android-apktool/downloads/list
2.通过apktool 反编译apk。
命令行中输入以下命令:apktool.bat d -f aaa.apk (apk路径)反编译APK文件
3.开始修改XML布局文件
首先,我们进入反编译后的文件夹,以我的为例
进入C:\apk\com.youmi.android.sample\res\layout 目录下
用记事本打开activity_ad.xml(注:不同的程序广告所在的文件不一样,可以查看一下别的文件里,一般都是在res\layout 目录下的xml文件里。
)
可以看到下面一段代码
<LinearLayout
android:id="@+id/adLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal"
>
这段代码是用来展示广告的我们可以改成
<LinearLayout
android:id="@+id/adLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:visibility="gone"
>
这样广告就被隐藏起来了。
4.通过apktool 把修改后的代码编译会APK,输入apktool.bat b aaa (你编译出来文件夹)
5.最后记得给新的APK签名。
sign apk file: jarsigner -keystore test.keystore -storepass password -verbose TestApp-unsigned.apk name_alias
附录
Jarsigner命令详解
[-keystore <url>] 密钥库位置
[-storepass <口令>] 用于密钥库完整性的口令
[-storetype <类型>] 密钥库类型
[-keypass <口令>] 专用密钥的口令(如果不同)
[-sigfile <文件>] .SF/.DSA 文件的名称
[-signedjar <文件>] 已签名的JAR 文件的名称
[-digestalg <算法>] 摘要算法的名称
[-sigalg <算法>] 签名算法的名称
[-verify] 验证已签名的JAR 文件
[-verbose] 签名/验证时输出详细信息
[-certs] 输出详细信息和验证时显示证书
[-tsa <url>] 时间戳机构的位置
[-tsacert <别名>] 时间戳机构的公共密钥证书
[-altsigner <类>] 替代的签名机制的类名
[-altsignerpath <路径列表>] 替代的签名机制的位置
[-internalsf] 在签名块内包含.SF 文件
[-sectionsonly] 不计算整个清单的散列
[-protected] 密钥库已保护验证路径
[-providerName <名称>] 提供者名称
[-providerClass <类> 加密服务提供者的名称
[-providerArg <参数>]] ... 主类文件和构造函数参数
来源: 博客园爱加密。