apk反編譯方式

一、Apk反編譯得到Java源代碼

  下載上述反編譯工具包,打開apk2java目錄下的dex2jar-0.0.9.9文件夾,內含apk反編譯成java源碼工具,以及源碼查看工具。

  apk反編譯工具dex2jar,是將apk中的classes.dex轉化成jar文件

  源碼查看工具jdgui,是一個反編譯工具,可以直接查看反編譯后的jar包源代碼

?

  dex2jar 和 jdgui 最新版本下載,分別見google code:

  dex2jar(google code)

  jdgui(google code),最新版本請見?官方

?

  具體步驟:

  首先將apk文件后綴改為zip并解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的,將classes.dex復制到dex2jar.bat所在目錄dex2jar-0.0.9.9文件夾。

  在命令行下定位到dex2jar.bat所在目錄,運行

  dex2jar.bat classes.dex

  生成

  classes_dex2jar.jar

?

  然后,進入jdgui文件夾雙擊jd-gui.exe,打開上面生成的jar包classes_dex2jar.jar,即可看到源代碼了,如下圖:


  

  HelloAndroid源碼在反編譯前后的對照如下:

  ?

?

二、apk反編譯生成程序的源代碼和圖片、XML配置、語言資源等文件

  如果是漢化軟件,這將特別有用

  首先還是要下載上述反編譯工具包,其中最新的apktool,請到google code下載apktool(google code)

?

  具體步驟:

  下載上述反編譯工具包,打開apk2java目錄下的apktool1.4.1文件夾,內含三個文件:aapt.exeapktool.batapktool.jar

注:里面的apktool_bk.jar是備份的老版本,最好用最新的apktool.jar

?

  在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool.bat d -f abc123.apk abc123,如下圖:

  

  上圖中,apktool.bat 命令行解釋:apktool.bat d -f [apk文件 ] [輸出文件夾]

?

  反編譯的文件如下(AndroidManifest.xml為例):

?  

  將反編譯完的文件重新打包成apk,很簡單,輸入apktool.bat b abc123(你編譯出來文件夾)即可,命令如下:

  

  打包apk后的文件在目錄C:\HelloAndroid下,生成了兩個文件夾:

  build

  dist

  其中,打包生成的HelloAndroid.apk,在上面的dist文件夾下,Ok

?

?

三、 圖形化反編譯apk

  上述步驟一、二講述了命令行反編譯apk,現在提供一種圖形化反編譯工具:Androidfby

  首先,下載上述反編譯工具包,打開Androidfby目錄,雙擊Android反編譯工具.exe,就可以瀏覽打開要反編譯的apk

  

轉載于:https://www.cnblogs.com/YaoJianXun/p/5274920.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373435.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

優化Hibernate所鼓勵的7大措施

優化Hibernate所鼓勵的7大措施: 1.盡量使用many-to-one,避免使用單項one-to-many2.靈活使用單向one-to-many3.不用一對一,使用多對一代替一對一4.配置對象緩存,不使用集合緩存5.一對多使用Bag 多對一使用Set6.繼承使用顯示多態 HQ…

如何用c 控制mysql數據庫_用C語言操作MySQL數據庫

函數描述mysql_affected_rows()返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數。mysql_autocommit()切換autocommit模式,ON/OFFmysql_change_user()更改打開連接上的用戶和數據庫。mysql_charset_name()返回用于連接的默認字符集的…

數據結構(RMQ):POJ 3624 Balanced Lineup

Balanced LineupDescription For the daily milking, Farmer Johns N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things simple, he will take a conti…

Apache Thrift快速入門教程

Thrift是一種跨語言RPC框架,最初是在Facebook上開發的,現在作為Apache項目開源。 這篇文章將描述如何以不同的模式(例如阻塞,非阻塞和異步)編寫Thrift服務和客戶端。 (我覺得后兩種模式的文檔較少&#xff…

數組拆分為新數組

package com.classes;//已知數組a,將奇數位置元素存到b數組中,偶數位置元素存到c數組中public class Shuzu1118_4 { public static void main(String[] args) { int [] a{3,6,9,1,4,7,2,5,8}; int [] b; //定義數組b int [] c; //定義數組c//先找出數組…

java數組交集_java數組的交集和并集

前兩天給我出了一道題,求數組的并集和交集,然后我試著寫一下,很尷尬,由于長時間沒有寫過代碼,一開始數組是如何定義的給忘了。當時我說了我的思路,不過也是很low的做法,查閱網上的一些資料&…

ADF聲明性組件示例

在我以前的文章中,我答應展示如何為智能值列表創建ADF聲明性組件。 因此,我將創建一個包含三個元素的組件:標簽,輸入文本和值的組合框列表。 那很容易。 我在工作空間中創建了一個單獨的ADF ViewController項目: 在此項…

VS2015 安裝包缺失(聯網安裝失敗)問題解決

Win7 x86 測試可行 * 如果前面有嘗試過安裝不成功, 一定要用卸載程序刪除已安裝的部分,否則會出亂子. 1. 或者是用虛擬光驅加載ISO, 或者是解壓到硬盤上, 都沒有關系. 2. 用管理員權限啟動CMD控制臺, 進入VS2015 安裝盤的根目錄 (vs_enterprise.exe 所在的目錄). 3. 執行命令 …

java藍橋暑假班_Java實現 藍橋杯VIP 算法提高 班級排名

算法提高 班級排名時間限制:1.0s 內存限制:256.0MB問題描述達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之后,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了&#xff…

$.ajax所犯的錯誤。success后面不執行

$.ajax({ type: post, url: ../AshxHandler/HandlerAddPhoto.ashx, data: { clientPath: photoName }, dataType: text, cache: false, success: function (data) { alert(1); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(上傳圖片出現錯誤&#xf…

WhateverOrigin –與Heroku和Play對抗相同的原產地政策! 構架

不久前,我在編碼 Bitcoin Pie時發現需要克服臭名昭著的Same Origin Policy ,該政策限制了運行在客戶端瀏覽器上的javascript可以訪問的域。 通過Stack Overflow,我找到了一個名為Any Origin的站點,這基本上是無需設置專用服務器即…

Solr集群更新配置的方式

solr集群中配置文件是經常更新的,頻率最高的也就是schema.xml和solrconfig.xml這兩個配置文件了,對于更新配置文件之前,我們先了解一下集群項目結構 由于在集群模式下,solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理…

java文本框雙擊可編輯_java swing 文本域雙擊變為可編輯

java swing如何實現文本域雙擊變為可編輯呢?給文本域添加鼠標事件監聽程序即可:resultTA1new AssistPopupTextArea();resultTA1.setEditable(false);resultTA1.setLineWrap(true);resultTA1.setWrapStyleWord(true);resultTA1.addMouseListener(new MouseAdapter() {Overridep…

點擊出現黑色背景的解決

-webkit-tap-highlight-color:rgba(0,0,0,0);轉載于:https://www.cnblogs.com/luckyXcc/p/6085582.html

OSGi簡介–模塊化Java

OSGi聯盟是這一擱淺的管理機構,它始于1999年。其最初目標是為網絡設備創建開放擱淺。 基于此思想,此規范也針對Java引入。 Eclipse在Java中是第一個。 他們于2004年6月推出了基于OSGi的Eclipse IDE。 OSGi是在Java中定義動態模塊的方法。 主要為Java實現…

HDU FatMouse's Speed 基本DP

題意:要求找到的體重遞增,速度遞減的老鼠,并且輸出最長的長度數,而且輸出各自的序列數。Special Judge 思路:先按體重由小到大排序,再找最長速度遞減序列。 轉移方程:mou[i].w>mou[j].w&am…

java xmpp openfire_搭建Xmpp服務器Openfire

step1、 安裝java環境這里是檢測是否安裝java的網頁如沒有安裝則進行以下步驟1、下載jdk7的mac版:jdk-7u79-macosx-x64.dmg2、安裝好之后,在命令行進入以下路徑查看#cd /Library/Java/JavaVirtualMachines/3、再查看你自己安裝的版本#ls版本為jdk-8u171-…

JavaFX移動應用程序最佳實踐,第1部分

到現在為止,所有對JavaFX感興趣的人都會知道,JavaFX Mobile發行了不久 前。 可以肯定的是,這真是令人難以置信。 我感到筋疲力盡,在發行期間我什至沒有精力去寫博客…… 但是到目前為止,我感到很恢復,并且希…

Spark程序運行報錯解決(1)

報錯內容:System memory 259522560 must be at least 4.718592E8. Please use a larger heap size. 解決:Window——Preference——Java——Installed JREs——選中一個Jre 后 Edit 在Default VM arguments 里加入:-Xmx512M 轉載于:https://w…

java setsolinger_java socket 的參數選項解讀(轉)

在MulticastSocket的源代碼里有設置多播的方法:public void setInterface(InetAddress inf) throwsSocketException {if(isClosed()) {throw new SocketException("Socket is closed");}checkAddress(inf, "setInterface");synchronized(infLoc…