❶ 反編譯怎麼入門
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
不知道你到什麼程度...目前java 可以去看下孫鑫的 不難懂
❷ erlang 反編譯工具+方法
編譯好的erlang 的debug版本程序反編譯步驟如下(比如 a.beam):
1、{ok, {_, [{abstract_code, {_, Ac}}]}} = beam_lib:chunks(code:which(a), [abstract_code]).
2、io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(Ac))]).
這樣我們就得到的a.beam的預處理之後的程序。
如果我們想查看beam文件的匯編程序erts_debug:df(a). 執行完畢會得到a.dis文件,裡面就是對應的匯編程序
注意只有debug版本才能反編譯
❸ 求教個反編譯的方法
public static IEnumerable<T> Query<T>(this DbConnection cn, string commandText, params object[] parameters)
{
//var func = null;
List<T> list = new List<T>();
DbCommand dbCommand = DB.CreateCommand(commandText, cn, parameters);
IEnumerable<DB.PropInfo<T>> props = null;
Type typeFromHandle = typeof(T);
bool flag = typeFromHandle.IsPrimitive || typeFromHandle.IsValueType || typeFromHandle == typeof(string);
if (!flag)
{
props = DB.GetSettableProps<T>();
}
DbDataReader dbDataReader = dbCommand.ExecuteReader();
if (!dbDataReader.HasRows)
{
dbDataReader.Close();
return list;
}
if (flag)
{
while (dbDataReader.Read())
{
list.Add((T)((object)Convert.ChangeType(dbDataReader[0], typeof(T))));
}
}
else
{
List<string> list2 = new List<string>();
for (int i = 0; i < dbDataReader.FieldCount; i++)
{
list2.Add(dbDataReader.GetName(i));
}
var arg_10E_0 =
from n in list2
select new
{
n = n,
prop = props.FirstOrDefault((DB.PropInfo<T> p) => string.Equals(p.Name, n, StringComparison.Ordinal)) ?? props.FirstOrDefault((DB.PropInfo<T> p) => string.Equals(p.Name, n, StringComparison.OrdinalIgnoreCase))
};
//if (func == null)
//{
//func = (<>h__TransparentIdentifier0 => new
//{
//Name = //<>h__TransparentIdentifier0.n,
//Property = //<>h__TransparentIdentifier0.prop
//});
//}
var list3 = arg_10E_0.Select(item => new { Name = item.n, Property = item.prop });
while (dbDataReader.Read())
{
T t = Activator.CreateInstance<T>();
foreach (var current in list3)
{
current.Property.Setter(t, Convert.ChangeType(dbDataReader[current.Name], current.Property.Type));
}
list.Add(t);
}
}
dbDataReader.Close();
return list;
❹ 如何反編譯一個MOD
第一部分 下載forge源碼+建立MOD開發環境。
(1)下載forge源碼
注意下載src鏈接的版本,不要搞錯。比如,forge-1.7.10-10.13.2.1230-src.zip(以src.zip結尾)
注意到有很多下載地址,每一行是一個版本,選擇適合自己的版本。
右邊Downloads列有幾個鏈接,其含義如下:
(a)Changelog——更改日誌。
(b)Installer——jar格式的安裝包,使用與所有平台(Win/Linux/Mac)
(c)installer-win——專屬於Windows的安裝包。
(d)javadoc——自動生成的java文檔。
(e)src—forge源代碼。
(f)universal——單純的jar庫,非安裝包。
(g)userdev——面向開放者。
(2)下載之後加壓縮到某個文件夾。
只留下五個東西:gradle和src文件夾,build.gradle,gradlew和gradlew.bat。
其它的東西沒有用,可以刪除。
打開 Windows命令行,cd定位到剛才的文件。
運行:gradlew.bat setupDecompWorkspace --refresh-dependencies
等待forge反編譯完成。
第二部分,BON進行反混淆。
BON全名bearded-octo-nemesis,是由immibis開放的一個MOD反混淆工具。(immibis可是MOD屆大名鼎鼎的人,比如redlogic,Liquid XP,Advanced Machines等都是非常好用的模組)。
新建一個BON文件夾。
(1)下載userdev版本的forge。還是剛才上面那個地址,只不過這次下載userdev版本。
把下載到的文件放到BON文件夾。
(2)找到forge反編譯之後的文件。
這個文件在C:Users{username}目錄下的
.gradlecachesminecraft
etminecraftforgeforge1.7.10-{forgeversion}
比如咱們這個例子就是,1.7.10-10.13.2.1230。把這個文件夾復制一份到BON文件夾。
(3)下載BON
下載到一個BON.jar文件,放到上面的文件夾內。
(4)運行。
雙擊BON.jar之後運行。
Forge userdev.jar:選擇(1)下載的文件。
FG cache folder:選擇(1)復制出來的文件夾。
然後在輸入文件位置選擇你想反混淆的代碼,再選擇要保持的輸出。
操作(operation)注意選擇:反混淆模組。
點擊Go按鈕,等待完成。
反混淆之後的代碼一般以deobf結尾。
比如StevesFactoryManagerA93.jar,反混淆之後就是StevesFactoryManagerA93.deobf.jar。
這時候就可以用jd-gui無障礙的查看代碼了。
第三步 反編譯成源代碼
如果覺得用jd-gui查看不方便的話,可以考慮用fernflower進行反編譯。
fernflower是MCP官方用來發編譯minecraft代碼的神器,雖然沒有jd-gui操作簡便,但是它反編譯代碼的質量非常高。又是官方搭配minecraft使用,是用來反編譯代碼的不二之選。
如何獲得fernflower?
fernflower的官方代碼池,然而需要編譯不方便使用。
這里提供另外兩個方法:
(1)伴隨MCP發布的版本。
去mcp官方網址下載,目前適用於1.7.10的是9.08版。
解壓縮之後,runtime/bin目錄下面,復制出來。
(2)forge提供的版本
去上面提到的.gradle/caches/minecraft目錄下,有一個fernflower-fixed.jar文件。
目前尚不知道,mcp和forge版本的有啥差別。
復制到一個位置之後,打開命令行
java -jar fernflower.jar [要反編譯的包] [保存位置]
反編譯之後的代碼,就可以用記事本直接查看。
❺ 反編譯什麼意思,具體該怎麼用
反編譯:高級語言源程序經過編譯變成可執行文件,反編譯就是逆過程。計算機軟體逆向工程,又稱計算機軟體恢復工程,是指對其他軟體的目標程序(如可執行程序)進行「逆向分析和研究」,從而推導出設計思想、原理、結構、演算法、處理過程、操作方法等要素,等被其他軟體產品使用,在某些特定情況下可能會衍生出源代碼。反編譯可以作為開發軟體時的參考,也可以直接用於軟體產品中。
(5)反編譯方法擴展閱讀:
如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。
❻ Java反編譯使用方法我是新手,高手快來
要學反匯編語言的。。當然沒有看源代碼簡單,還可以通過反編譯調試自己想一下代碼是啥然後自己寫出偽代碼,要是想破解就該幾個跳轉就可以了。
❼ 有沒有比較完美的JAVA反編譯方法
1、Java反編譯插件 —— Jadclipse JadClipse是Jad的Eclipse插件,是一款非常實用而且方便地Java反編譯插件,我們只需將下載的插件包復制到eclipse的plugins目錄下,然後修改window -> Preferences -> Java -> JadClipse
❽ 如何反編譯一個exe文件,並修改裡面一句代碼
1、首先打開瀏覽器,網路搜索「反編譯工具ILSpy」,選擇一個安全的網站進行下載。
❾ 怎麼反編譯軟體
高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。 但是通常不能把可執行文件變成高級語言源代碼,只能轉換成匯編程序。 計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。 反編譯是一個復雜的過程,所以越是高級語言,就越難於反編譯,但目前還是有許許多多的反編譯軟體: VB: VBExplorer 、VB反編譯精靈和VBRezQ;只能反編譯界面圖像,好像代碼不能完全反編譯 JAVA: JAD ;java的反編譯比較常見,所以反編譯比較完全, 將class文件反編譯成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易語言:E-Code Explorer.exe(易格式可執行文件分析器)
❿ 軟體反編譯
只能修改其中的圖片、代碼,替換其中的資源
原代碼一般是得不到的