vue壓縮後的反編譯
最近因為一些事所以需要得到師兄的某個apk的源代碼,但師兄說那個項目包已經刪了,哎,沒辦法,只能自己想辦法了。後來找到了反編譯apk的方法,現在拿出來分享下。其實這個方法網上都有,我只是記載一下自己這段時間的學習情況。
1.下載工具
首先,要反編譯需要下面這
4個工具:
dex2jar:將apk中的classes.dex轉化成Jar文件。
JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:輔助windows批處理工具。
2.解壓apk
直接右鍵解壓apk就行了,這沒什麼好說的。【解壓後會有個dex後綴的文件,下面會用到】
3.反編譯dex文件
1)解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
2)DOS行命令如下:dex2jar.bat
xx\classes.dex(xx是classes.dex文件所在的路徑)。
將在同目錄得到普通jar包:【classes_dex2jar.jar】,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
4.反編譯jar文件
1)解壓壓縮文件JD-GUI
2)運行該文件夾里的jd-gui.exe,打開上面生成的jar包,
即可看到源代碼了。
5.反編譯xml文件
為什麼要發編譯xml文件呢?因為直接解壓apk得到的xml文件是亂碼來的,我們需要用工具把它調會正常來
具體操作方法:
1)將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。
2)把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
3)在DOS命令行中輸入:apktool
d
xx\HelloWord.apk
HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
6.後話
不過,說到底反編譯還是反編譯,還是不能完全地還原出真正的源代碼的,比如一般會出現下面這樣的問題:
setContentView(2130903048);
在真正的源代碼中其實是這樣的:
setContentView(R.layout.welcome)
B. 怎麼保存這個網站的源碼這個是vue寫的模版,我想把這個源碼導出來,反編譯vue源碼
反編譯需要js.map文件;一般部署的時候回刪掉
C. vue-codemirror代碼格式化後,怎樣壓縮代碼
具體操作步驟如下:
1、設置proctionSourceMap為false。如果不需要生產環境的 source map,可以將其設置為 false 以加速生產環境構建。設置為false打包時候不會出現.map文件。
2、代碼壓縮。安裝uglifyjs-webpack-plugin插件,可以去除項目中console.log和debugger。
3、圖片資源壓縮。
安裝 image-webpack-loader 插件,可以將大圖片進行壓縮從而縮小打包體積。
4、開啟gzip壓縮。
D. 反編譯時提示如下錯誤怎麼解決
1、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。1、反編譯=回編譯後分別是
smali目錄 回編譯為 classes.dex 文件
res目錄 回編譯為 resources.arsc 文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali 。
所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。
3、出錯問題1
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
這些小小的錯誤都會導致回編時譯檢查出錯。
所以漢化時,注意對校,然後再回編譯。
建議使用一些高級的文本編輯器,支持語法高亮視圖的。
4、出錯問題2
最近發現有些APK文件 反編譯後,就算不漢化直接回編譯,都會出錯。
有可能的原因1,反編譯後XML文件語法中@符號 前面多了"\" (\@ ),
用文本編輯工具 直接替換【\@】為【@】,應該可以解決。
建議使用最新版本的反編譯工具。
5、建議大家使用新版本的APKTool工具,
當然如果新的有問題也可以試試舊的一、系統文件漢化再次強調
1、漢化Settings.apk(系統設置)、MMS.apk(信息)、Phone.apk(電話)、
等等系統文件,一定要先 安裝構架,具體看另個文件
<關於APKTool工具反編譯Settings.apk問題>。
2、系統文件漢化完後不需要簽名,直接替換漢化後的文件,就可以了。
主要是,系統文件放在系統目錄,無需再次讀取簽名獲得許可權,已經是高級了。
二、打包說明
1、通常漢化完回編譯後,會自動生成所有APK內的文件,或者自動生成*.APK文件。
但是建議大家不要直接使用該文件,進了使用替換法,替換掉你漢化後的文件,
如:resources.arsc,如果修改過的圖片,等等…
2、很多人對於APK文件 解壓縮或壓縮 都用「WinRAR」或「好壓」,這里不推薦。
希望大家安裝7-Zip這個壓縮工具,對於zip格式的支持是最好的。而且很方便,
不需要重新關聯apk 直接右鍵打開就行了。替換直接拖拉進去,就OK了一、回編譯出錯問題
(1.提示 strings.xml 最後一行錯誤,檢查是否</string>符號錯誤;
在漢化時,往往會不小心刪掉一些符號,如 "<" ">"符號等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
(2.提示 strings.xml 最頂部含中文代碼首行錯誤,編碼格式不對,轉換成 UTF-8;
(3.提示 public.xml 出錯,檢查改動過的 arrays.xml 是否代碼有錯誤的地方;
E. jar解壓後 如何把解壓出來的文件夾 重新編譯成jar
用winrar打包成zip,再改成jar即可:
1、假設您之前解壓的是下面的這些文件
F. 反編譯出源代碼後,怎樣修改並且編譯回去
反編譯完成並且修改代碼完成後,輸入代碼:apktool
d
framework-res
即可完成回編譯
回編譯後的新的
apk在framework/dis
文件夾裡面
如果反編譯的是系統文件,比如,SystemUI.apk
那麼必須進行掛載框架,反編譯時,必須敲入一下命令:(然後再重復7-9步驟)
apktool
if
framework-res.apk
apktool
if
SystemUI.apk
對於三星手機(比如9100、9108/9100G),如果反編譯SystemUI.apk要敲入一下命令進行框架掛載apktool
if
framework-res.apk
apktool
if
twframework-res.apk
apktool
if
SystemUI.apk
回編譯的命令是
apktool
b
XXX
(沒有後面的apk後綴)反編譯的命令是
apktool
d
xxx
(有後面的apk)
G. vue反編譯是什麼
就是webpack打包後的代碼,編譯成源代碼
H. 為什麼學習Vue框架
vue框架算是最近前端開發很好的工具。可以突破以前所沒有實時更新頁面。很有發展前景,很多大公司現在正在使用。
Vue框架誕生於2014年,其作者為中國人——尤雨溪,也是新人最容易入手的框架之一,不同於React和Angular,其中文文檔也便於大家閱讀和學習。Vue用於構建互動式的Web界面的庫,是一個構建數據驅動的Web界面漸進式框架,該框架遵循CMD規范,並且提供的設計模式為MVVM模式(Model->View->View-Model)和一個可組合的組合型組件系統,具有簡單的、靈活的API(介面)。該框架繼承了React的虛擬DOM技術和Angular的雙向數據綁定技術,是一款較新的功能性框架。
在這里介紹下什麼是虛擬DOM和雙向數據綁定:
1、虛擬DOM(Virtual DOM),顧名思義,從字面上理解就是虛構的DOM樹,當我們用傳統的原生API或者jQuery去操作DOM時,瀏覽器會從構建DOM樹開始從頭到尾執行一遍流程。即使計算機硬體一直在更新迭代,但是操作真實DOM的代價仍舊很昂貴,真實的DOM節點,哪怕是一個最簡單的div也包含很多屬性,所以頻繁的操作,會導致頁面卡頓,影響用戶的體驗。為了解決這個瀏覽器性能問題,虛擬DOM(Virtual DOM)就被設計出來了,其核心演算法是Diff演算法。它會將一次操作過程中對真實DOM所有更新的diff內容保存到本地的一個js對象中,最終將這個js對象一次性attach到DOM樹上,通知瀏覽器去執行繪制工作,避免了大量的無謂的計算量。
用js對象模擬DOM節點的好處是:頁面的更新可以先全部反應在js對象上,操作內存中的js對象的速度明顯要快的多。等更新完成後,在將最終的js對象映射成真實的DOM,交由瀏覽器去繪制。(提高了性能,並且運行速度快)
2、雙向數據綁定,在講雙向數據綁定前,我們要想說下單向數據綁定,單向數據綁定,就是把Model綁定到View上,當我們用JavaScript代碼更新Model時,View就會自動更新了(Model-->View)。那麼雙向數據綁定就是,用戶更新了View,Model的數據也會自動被更新(Model<-->View)。什麼情況下用戶可以更新View呢?舉個最直接的例子,填寫表單,當用戶填寫表單時,View的狀態就被更新了,如果此時MVVM框架可以自動更新Model的狀態,那麼就相當於我們把Model和View做了雙向數據綁定。其原理是我們要對input進行value 的屬性綁定(v-bind:value=」...」)將Model中的變數綁定到View上(Model->View)以及當用戶對input進行操作時,進行事件監聽(v-on:input=」...」)將View上的更新傳回Model中(View->Model)從而實現雙向數據綁定,在Vue中,以上操作過於繁瑣,便提供了v-model直接實現雙向數據綁定的效果。
在進行Vue項目開發過程中,我們可以通過script標簽引入式寫法來引入vue或者是nodejs自帶的包管理工具npm安裝vue。並且通過new Vue()進行新建一個Vue的實例對象,其下有很多屬性,包括el、data、methods、computed、watch等等,el為指向頁面的節點元素,data存儲數據,數據類型包括simple datatype(簡單數據類型)以及complex datatype(復雜數據類型),用插值表達式{{}}顯示,在插值顯示的時候,不需要寫上data,methods內存儲方法,通過fn()的形式調用方法,computed內存儲也是方法,但是其為計算數據,復雜邏輯的應該存儲在computed中,計算屬性是基於它們的依賴進行緩存的,由於computed帶有一層緩存,所以只有在它的相關依賴發生改變時才會重新運行,而methods則是調用一次生成一次,computed中的方法調用時不需要加()的,watch為監聽,監控,監聽data中的屬性值也可以監控對象,存在兩個參數(currentValue當前值和prevValue之前值)。
I. vue壓縮後的js可以反編譯出來嗎
vue壓縮後的js可以反編譯出來,反編譯方法為:
1、在桌面找到自己下載的瀏覽器軟體,點擊瀏覽器圖標。
J. 前端vue+typescript 的時候組件name 在生產環境被壓縮 導致keep-alive失效 求解決
估計你是用的include 或者 exclude,ts文件也是用的 class 寫的。這樣打包時默認壓縮了name,對應不上。在vue.config.js中加入下面的代碼,不壓縮class名就行
configureWebpack: config => {
config.optimization.minimizer[0].options.terserOptions.keep_fnames = true;
}