① 如何反編譯一個MOD
這樣怎麼能夠放在一起運行呢:我們可以使用一套固定的名稱索引起來,而另一些名稱可能當時的猜測是錯誤的,後來進入Mojang參與Minecraft開發的Searge。
Minecraft Forge,一套主流的Minecraft Mod API,如果Mod開發者想要提供其他Mod的兼容支持,那麼就需要鏈接其他Mod的類,包括默許反編譯等行為。當然:畢竟這些名稱是從無到有猜測出來的,總有一些名稱當時猜不出來。
首先,Mojang並不為其開發的Minecraft游戲提供源代碼,同時,而非混淆的代碼(deobf和sources)是供開發者使用的。
詳細說來,此時因為開發環境使用的是未混淆名,所以引入的其他Mod也必須使用未混淆名,也就是題主所看到的deobf(提供編譯後的後綴名為.class的文件)和source(直接提供後綴名為.java的源代碼)兩個JAR,所以其實這個映射表,針對Minecraft的修改行為(也就是我們通常所說的Mod和插件)從Minecraft發布不久就有人著手去做了,後來Mojang在Minecraft的最終用戶許可協議(EULA)中明確表示了對Mod的支持。半混淆名又名SRG Name,以紀念MCP的領導者,運行Minecraft的時候把混淆名同樣變成半混淆名,這樣Mod就可以使用半混淆名正常工作了。
所以正如題主所見。這個映射表就應該是這個樣子的:
不過這樣就出現了一個問題,打包Mod和運行Mod的時候都使用這套名稱不就可以了?所以映射表就變成了這樣:
半混淆名有著形如func_xxxxxx_x或者field_xxxxxx_x的形式,我們要從Minecraft這一游戲本身說起。然而在開發Mod的時候:編譯並打包Mod的時候把其中的未混淆名變成半混淆名,在直接Mod文件並運行的時候,其中的代碼已經使用的是半混淆名了,其提供的游戲文件也是混淆過的,其中的類沒有包名,在運行的時候使用的正是這套方式,就把上面提到的一些無意義的字母組合(又稱Notch Name),一般情況下不會發生變動,類名方法名等也全都是abcdef這種無意義的字母組合。
不過。但是,舊的Mod使用的是修改前的名稱,而新製作的Mod使用的是修改後的名稱,Minecraft的Mod數量也非常之多,目前至少有上萬個Minecraft Mod活躍在各個論壇社區中。
在Minecraft發布不久就出現了專門反編譯和反混淆Minecraft代碼的組織,這一組織就是MCP(Mod Coder Pack),MCP提供的若干個映射表?機智的人民群眾很快就想到了一個辦法,變成了有意義的方法名類名(又稱MCP Name)等,是經常修改和補充的簡單來說,就是題主看到的混淆代碼(universal)是供玩家使用的
② exe反編譯易語言
不行。
若要破解易語言寫的程序,你可以用monkeycz寫的E-Code Explorer進行反編譯,再結合OD,但也不會轉換成.e的源碼。它只是在分析和解密易程序,都是匯編語言,所以樓主的要求,沒什麼可能實現了。呵。
③ 什麼叫做反編譯啊
反編譯
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
④ 安卓反編譯apk代碼沒修改只是把軟體名字改了
首先要說明一點,反編譯是個灰色地帶,是會觸犯版權問題的。完全正當的用途不多,比如惡意軟體的分析。
如果你真的想學反編譯,去吾愛破解論壇上,認真把上面的教程都學一遍。這絕對不是什麼簡單的事情,需要大量的工作經驗作為支撐。換句話說,如果你沒有相應語言足夠的實戰開發經驗,學反編譯無異於蛇吞象。
安卓app是使用JAVA進行開發的,對安卓app的反編譯就是對JAVA程序進行反編譯。而JAVA的由於其本身原理的原因,從JAVA程序反編譯為代碼是比較簡單的,不容易出錯,並且整個過程是傻瓜式的。不像其他語言,比如C++,程序會徹底變為機器語言,就不容易直接使用軟體恢復成代碼了。
因此,為了保證自己的代碼不被他人反編譯,我們開始使用代碼混淆技術。簡單的例子,某個方法名本來是setUserName(String userName),這樣的名字別人一看就知道是用來幹嘛的,而使用了混淆之後,這個方法的名字就有可能變為c(String s),這樣就不能夠知道這個方法是做什麼的了。換句話說,混淆能夠急劇地增加反編譯者的工作量,使之無法修改和獲取自己app的真正代碼。
總結一下,反編譯不是鬧著玩的,也不是修改一個所謂的「名字」就能夠完成任務的。如果想要真正地修改APP,必須從頭開始,把混淆的代碼都恢復成原本的代碼,至少,你也得知道被混淆之後的代碼中,哪裡是幹嘛的。
同時也希望題主不要以身試法。
⑤ 怎麼反編譯D-Link路由器固件程序並發現它的後門
基於上面的字元信息可以看出,這個/bin/webs二進製程序是一個修改版的thttpd,提供路由器管理員界面操作功能。看起來是經過了台灣明泰科技(D-Link的一個子公司)的修改。他們甚至很有心計的將他們很多自定義的函數名都輔以「alpha」前綴:
明泰科技的自定義函數
這個alpha_auth_check函數看起來很有意思!
這個函數被很多地方調用,最明顯的一個是來自alpha_httpd_parse_request函數:
調用alpha_auth_check函數
我們可以看到alpha_auth_check函數接收一個參數(是存放在寄存器$s2里);如果alpha_auth_check返回-1(0xFFFFFFFF),程序將會跳到alpha_httpd_parse_request的結尾處,否則,它將繼續處理請求。
寄存器$s2在被alpha_auth_check函數使用前的一些操作代碼顯示,它是一個指向一個數據結構體的指針,裡面有一個char*指針,會指向從HTTP請求里接收到的各種數據;比如HTTP頭信息和請求地址URL:
$s2是一個指向一個數據結構體的指針
我們現在可以模擬出alpha_auth_check函數和數據結構體的大概樣子:
struct http_request_t
{
char unknown[0xB8];
char *url; // At offset 0xB8 into the data structure
};
int alpha_auth_check(struct http_request_t *request);
alpha_auth_check本身是一個非常簡單的函數。它會針對http_request_t結構體里的一些指針進行字元串strcmp比較操作,然後調用check_login函數,實際上就是身份驗證檢查。如果一旦有字元串比較成功或check_login成功,它會返回1;否者,它會重定向瀏覽器到登錄頁,返回-1;
alpha_auth_check函數代碼片段
這些字元串比較過程看起來非常有趣。它們提取請求的URL地址(在http_request_t數據結構體的偏移量0xB8處),檢查它們是否含有字元串「graphic/」 或 「public/」。這些都是位於路由器的Web目錄下的公開子目錄,如果請求地址包含這樣的字元串,這些請求就可以不經身份認證就能執行。
然而,這最後一個strcmp卻是相當的吸引眼球:
alpha_auth_check函數中一個非常有趣的字元串比較
這個操作是將http_request_t結構體中偏移量0xD0的字元串指針和字元串「xmlset_roodkcableoj28840ybtide」比較,如果字元匹配,就會跳過check_login函數,alpha_auth_check操作返回1(認證通過)。
我在谷歌上搜索了一下「xmlset_roodkcableoj28840ybtide」字元串,只發現在一個俄羅斯論壇里提到過它,說這是一個在/bin/webs里一個「非常有趣」的一行。我非常同意。
那麼,這個神秘的字元串究竟是和什麼東西進行比較?如果回顧一下調用路徑,我們會發現http_request_t結構體被傳進了好幾個函數:
事實證明,http_request_t結構體中處在偏移量 0xD0處的指針是由httpd_parse_request函數賦值的:
檢查HTTP頭信息中的User-Agent值
將http_request_t + 0xD0指針指向頭信息User-Agent字元串
這代碼實際上就是:
if(strstr(header, "User-Agent:") != NULL)
{
http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");
}
知道了http_request_t偏移量0xD0處的指針指向User-Agent頭信息,我們可以推測出alpha_auth_check函數的結構:
#define AUTH_OK 1
#define AUTH_FAIL -1
int alpha_auth_check(struct http_request_t *request)
{
if(strstr(request->url, "graphic/") ||
strstr(request->url, "public/") ||
strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)
{
return AUTH_OK;
}
else
{
// These arguments are probably user/pass or session info
if(check_login(request->0xC, request->0xE0) != 0)
{
return AUTH_OK;
}
}
return AUTH_FAIL;
}
換句話說,如果瀏覽器的User-Agent值是 「xmlset_roodkcableoj28840ybtide」(不帶引號),你就可以不經任何認證而能訪問web控制界面,能夠查看/修改路由器的 設置(下面是D-Link路由器(DI-524UP)的截圖,我沒有 DIR-100型號的,但DI-524UP型號使用的是相同的固件):
訪問型號DI-524UP路由器的主界面
基於HTML頁上的源代碼信息和Shodan搜索結果,差不多可以得出這樣的結論:下面的這些型號的D-Link路由器將會受到影響:
DIR-100
DI-524
DI-524UP
DI-604S
DI-604UP
DI-604+
TM-G5240
除此之外,幾款Planex路由器顯然也是用的同樣的固件程序:
BRL-04UR
BRL-04CW
⑥ 百度雲os系統怎樣反編譯狀態欄
1、下載網路os,放到廚房裡面合並apk和odex(這一步的主要目的是為了讓反編譯工作順利進行)
2、提取合並後的framework-res.apk和Baisystemui.apk
3、設置framework-res.apk為構架環境
4、反編譯Baisystemui.apk
5、打開res、value目錄下的drawables.xml文件,搜索
<item type="drawable" name="status_bar_background">#ff000000</item>
6、找一個透明的狀態欄圖片,重命名為status_bar_background.png,把這個圖片放到res、drawable-hdpi目錄下面
本帖隱藏的內容7、找到res\layout下面的status_bar_expanded_switch.xml文件,打開,找到第6、12、33行,找到那句話
layout="@yi:layout/yi_list_item_header"
需要做的就是把它改為:
layout="@layout/switch_activity_item"
然後,保存,回編譯。
⑦ 怎麼反編譯settings.apk
事項:
1.反編譯系統文件必須是從官方提取的.APK文件。(因為APK只能實現一次反編譯,就是說如果這個文件已經反編譯過了,就不能再次反編譯,就算你反編譯了也不能回編譯。)
2.編譯工具論壇上很多可以自己搜索下載,存放的位置文件夾最好不帶中文。
3.覆蓋原文件時一定要切記,先移動到系統文件夾下,然後修改許可權,然後在覆蓋原來APK(不然會怎麼樣,我相信大家懂的{:soso_e144:} )
4.就算附件中有反編譯工具也要自己搭建好java環境(因為一切反編譯的工具都是建立在JAVA環境的基礎上的)
開始教程:
1.關於JAVA、環境變數,請搜索教程帖
2.環境變數設置成功後,就是提取你手機上的Settings.apk。
3.進行反編譯,(我想有一定美化基礎的應該很會簡單的),反編譯後得到Settings文件夾打開然後\res\values-zh-rCN\找到strings文件,右鍵打開,打開方式選擇看你習慣。
修改好以後選擇保存,回編譯。
回編譯好的APK用滑鼠右鍵單擊 選擇用好壓打開然後將resources.arsc 拖拽出來。然後在把JU1.1的Settings.APK提取出來也用好壓打開,將剛才拖拽的resources.arsc 文件在拖拽到JU得APK中。然後點覆蓋。然後在將其移動到SYSTEM\APP里 就OK了(記得修改許可權)
這個需要在手機上操作
打開RE管理器,打開裡面的system,找到build.prop.長按彈出對話框,選擇:使用文本編輯器打開(右上角要改為讀寫哦)
第四行的:ro.build.display.id= 等號後面就是你想要輸入的不要過長哦~
第八行的:ro.build.version.release= 同上
修改完成後,點擊左虛擬鍵,也就是設置鍵,選擇:保存並退出。
你會在build.prop下面發現它的備份文件,刪除,重啟,OK~全部完成~
⑧ MOT能反編譯嗎M16C/R8C瑞薩單片機論壇
我能,如,M16C_26,M16C_28,M16C_62等系列! 每個系列舉例一個型號:M30260xxx, M30280xxxx, M3062x或M3062L等,F匯編出來直接在原機運行!還有C51系列,AVR系列,TI的DSP生成的OUT文件都能F匯編! Q1580708025Q
⑨ 有沒有可以反編譯安卓數據包的軟體(obb格式)
安卓手機上有一款軟體叫 apktool 的反編譯軟體應該可以解決你的問題 去論壇找找看
提供機鋒地址:http://bbs.gfan.com/forum.php?mod=viewthread&tid=6028134
祝你成功
忽然發現我看錯了 是obb數據包啥
obb是外部擴展的資源文件,加密的
要在linux下面,掛載obb文件,必須知道它的密碼,要具備的知識太多了
⑩ .Net Reflector反編譯工具如何將注釋顯示出來
顯示不出來,編譯的時候去掉了。只有查看源代碼或者用VS等引用類庫才能看到。