㈠ 編譯程序中間代碼的生成對編譯器的前端和後端有什麼作用
編譯器粗略分為詞法分析,語法分析,類型檢查,中間代碼生成,代碼優化,目標代碼生成,目標代碼優化。把中間代碼生成及之前階段劃分問編譯器的前端,那麼後端與前端是獨立的。後端只需要一種中間代碼表示,可以是三地址代碼或四元式等,而這些都與前端生成的方式無關。也就是不論你前端是用fortran還是c/c++,只要生成了中間代碼表示就可以了,後端是不管你是用哪種語言生成的。
㈡ 如何獲取微信小程序前端源碼
微信小程序都是在本地運行的,所以我們可以在我們的手機內存中找到小程序的源碼文件。
如果你的手機已經root了,那麼可以直接查找/data/data/com.tencent.mm/MicroMsg/.../appbrand/pkg/路徑中有一段...,這里表示不確定具體一個,一般是很長的數字和字母組成的文件 ,可以先將所有的小程序文件夾刪除,然後重新進入你想要的小程序,這樣就可以確定是哪個文件了,當然,如果沒有root可以使用模擬器來拿,建議還是使用模擬器,更方便一些。
拿到了wxpkg文件,但是我們還差一步,需要將這個文件進行反編譯得到內部的各個文件才可以。
wxpkg 是經過微信加密的文件,無法直接通過解壓來獲得,如果開發比較深入的話,可以直接拿到github的star比較多的wxunpkg ,然後安裝運行去解壓,如果不是很擅長的話,可以直接使用已經做好的傻瓜式的桌面軟體,直接進行反編譯處理 。
原理介紹:網頁鏈接
軟體獲取:網頁鏈接
我的建議還是直接去看下github的源碼,了解下反編譯原理,然後nodejs語言不擅長可以拿其他的語言來嘗試處理下,算是學習也可以。
㈢ 談談java的反編譯
作者因最近分析一些JAVA程序 對JAVA的反編譯進行了一番了解 下面將我所了解的情況作以下介紹 希望對JAVA愛好者有所幫助 JAVA是採用一種稱做 位元組編碼 的程序結構 分為小程序(嵌入到HTML文件中)和應用程序(直接在命令狀態下執行)兩種類型 無論哪種結構 一旦用JAVAC 命令編譯後 均變成後綴為CLASS的同名可執行文件 這種文件是不可閱讀的代碼 經查閱了SUN公司的JDK(JDK )文檔資料後 我找到了一個據稱是可反編譯JAVA的JAVAP文件(EXE) 這個文件位於JDKBIN 下面 經按說明使用後 感到失望 原來這個 反編譯 僅可反編譯出JAVA程序的數據區(定義) 若干方法和類的引用等 這里我用了一個簡單例子來說明問題 JAVA的源程序hello_java java如下 import java applet *;import java awt *;public class hello_java extends Applet{public void paint(Graphics g){g drawString( Hello Java!n );}} 經用反編譯命令 javap c package public private hello_java hello java 得到的反編譯結果(hello java)如下 (有關javap命令的選擇參數請見其使用說明 這里 c表示選擇了反編譯)Compiled from hello_java javapublic synchronized class hello_java extends java applet Applet /* ACC_SUPER bit set */{public void paint(java awt Graphics);public hello_java();Method void paint(java awt Graphics) aload_ ldc # bipush bipush invokevirtual # returnMethod hello_java() aload_ invokespecial # ()V > return}從上述結果不難看出該反編譯未能將源程序全譯出來 像語句g drawString( Hello Java!n ); 就沒有 隨著程序量增加 未能編譯的JAVA語句還會更多 所以這個反編譯程序僅能起個參考作用 幸虧有了INTERNET 筆者通過YAHOO很快找到了一個JAVA反編譯 自由軟體 (SHAREWARE) 這個軟體叫MOCHA 據說是一位 來歲的加拿大的研究生所完成 僅是個 ? 版 原因是這位叫做H P VAN VLIET的小夥子患癌逝世了 十分可惜呀!經使用MOCHA反編譯軟體 感到這個軟體十分好用 筆者試反編譯多個JAVA程序 均得到很好的結果 這里給出如何使用這個軟體 首先 用WINZIP等將 mocha b zip 解開得到 mocha zip 文件 mocha zip 不須再解開 這個包內包括了反編譯的類文件 只需將其拷貝到JDK所在的目錄下 如 c:jdkbin 此外 須設置路徑 SET CLASSPATH=c:myclasses;c:jdkbinmocha zipMOCHA用法 java mocha Depiler [ v] [ o] Class class Class class java 調用Java虛擬機 mocha Depiler 指示要進行JAVA反編譯 v 選擇詳細輸出 o 選寫入已有的 mocha 文件 ClassX class 指出要反編譯類名注意 不需給出輸出的JAVA文件名 因為MOCHA自動產生一個與CLASS同名但擴展名為MOCHA的JAVA源文件 對於上例 可用命令 java mocha Depiler [ v] [ o] hello_java class得到的源文件 /* Depiled by Mocha from hello_java class *//* Originally piled from hello_java java */import java applet Applet;import java awt Graphics;public synchronized class hello_java extends Applet{public void paint(Graphics g){g drawString( Hello Java!n );}public hello_java(){}}我們不難發現 此文件與編譯前的JAVA源文件完全一樣!筆者曾經用MOCHA反編譯出最大為 K的源文件 均取得成功 在此 筆者向英年早逝的VLIET表示敬意 感謝他給我們留下這個工具軟體 如讀者下載MOCHA有困難 可給筆者來電子郵件 筆者可將MOCHA寄去 參考文獻 ) ) ) ) lishixin/Article/program/Java/Javascript/201311/25331
㈣ 反編譯是違法的嗎
反編譯是違法的,反編譯是指計算機軟體反向工程( Revers e engineering )也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
根據《共和國著作權法》規定有下列侵權行為的,應當根據情況,承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任:
(一)未經軟體著作權人許可,發表或者登記其軟體的;
(二)將他人軟體作為自己的軟體發表或者登記的;
(三)未經合作者許可,將與他人合作開發的軟體作為自己單獨完成的軟體發表或者登記的;
(四)在他人軟體上署名或者更改他人軟體上的署名的;
(五)未經軟體著作權人許可,修改、翻譯其軟體的;
(六)其他侵犯軟體著作權的行為。
㈤ 什麼是反編譯工具反編譯工具有什麼用
簡單來說,就是把一個已有的程序轉化為編程的命令行。至於使用反編譯的原因么……有的是為了研究一個程序以達到吸取別人的編程思路和經驗。當然也有的是為了盜版。或者是為了竊取別人的軟體。
㈥ 是不是所有的程序都可以反編譯得到原代碼
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
㈦ uniapp打包後的h5能反編譯嗎
不能。uniapp打包後app無法打開問題,因此h5是不能反編譯的。uniapp是一個使用Vue.js開發所有前端應用的框架,開發者編寫一套代碼,可發布到iOS、Android、Web響應式、以及各種小程序,比如微信、支付寶、網路、頭條、QQ、釘釘、淘寶、快應用等多個平台。
㈧ 想在我的軟體里加某功能,正好有個小程序有這個功能,但不能反編譯得到它的代碼,直接用,怎麼用
反編譯不一定成功,成功率比較低,您可以就小程序直接編譯到你的軟體就可以使用了(如果這個小軟體是必須安裝的,必須就安裝後的文件全部編譯)。
㈨ 用python2.7.1寫的小程序可以反編譯得到它的源代碼嗎
python是不能反編譯的,因為得到了一個python的程序,就是得到了它的源代碼。
python是解釋性語言,沒有編譯這一步驟,和c語言和java語言是不一樣的
㈩ 反編譯小程序時候的問題
把wuWxss.js的runVM改成這樣試下
functionrunVM(name,code){
letwxAppCode={},handle={cssFile:name};
letgg=newGwxCfg()
lettsandbox={
$gwx:GwxCfg.prototype["$gwx"],
$gwx5:GwxCfg.prototype["$gwx5"],
__vd_version_info__:GwxCfg.prototype["$gwx"],
__mainPageFrameReady__:GwxCfg.prototype["$gwx"],
__wxAppCode__:wxAppCode,
setCssToHead:cssRebuild.bind(handle)
}
letvm=newVM({sandbox:tsandbox});
vm.run(code);
for(letnameinwxAppCode)if(name.endsWith(".wxss")){
handle.cssFile=path.resolve(frameName,"..",name);
wxAppCode[name]();
}
}