導航:首頁 > 源碼編譯 > 混淆編譯

混淆編譯

發布時間:2022-02-05 20:31:54

Ⅰ 混淆的class文件怎麼進行反編譯

一般情況下java應用的開發者為了保護代碼不被別人抄襲,在生成class文件的時候都java文件進行了混淆,這種class文件用反編譯工具得到的結果很難看懂,並且不能進行編譯。
從研究的角度,淺析如何讀懂這種反編譯過來的文件。
例子一:賦值
反編譯過來的代碼如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始語句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
註解:
JVM INSTR swap ; //賦值語句
練習:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;

例子二:不帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始語句:
CrossTable crosstable = new CrossTable();
註解:
練習:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;

原始語句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
註解:
此語句實際上是:s2 += s.substring(j, i) + s6;
練習:
例子四:for循環
反編譯過來的代碼如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始語句:
for(int k=0;k < as.length;k++)
{
...
}
註解:
例子五:while循環
反編譯過來的代碼如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始語句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}

Ⅱ 什麼是Java混淆編譯器

由於Java程序運行時是動態連接的,因此編譯成的目標文件中包含有符號表, 使得Java程序很輕易被反編譯,混淆器可以打亂class文件中的符號信息,使反向工程變得非常困難。

Ⅲ javacompile混淆器怎麼混淆後的class文件還是可以被反編譯出來呢求高手指點....

混淆的作用並不是使class文件不能被反編譯
混淆的作用是使反編譯的代碼更難讓人閱讀,比如一些計算金錢的敏感邏輯里有如下的代碼(新金額=舊金額*某個倍率):
double newMoney=oldMoney*rate;
如果這樣的代碼直接編譯成class文件,別人反編譯這個class文件就能很清楚的看到金錢的計算關系,混淆後代碼可能就變成這樣的了:
double a=b*c;
這樣的代碼別人即使反編譯了,也是很難看懂其中的邏輯關系的

Ⅳ 如何混淆Java編譯後的類或jar,或將jar編譯成exe,使人無法反編譯獲得源代碼

混淆就可以了
我一直在用proguard4.5.1做Java項目的混淆

Ⅳ 對已經混淆的android代碼,如何進行反編譯

android代碼混淆是指安卓開發者或者組織為了防止自己的產品敏感信息或者技術機密被人破解,而在生成apk文件的時候,通過設置一些替換規則,使java文件中指定的代碼類的名字或者成員名字變為沒有任何意義的字母,然後編譯成class文件的過程。

已經混淆過的android代碼反編譯出來的都是一些沒有任何意義的名字,是很難讀懂的。沒有好的辦法。

Ⅵ typescript 怎麼混淆加密,編譯輸出js文件

選擇
configure
task
runner
自動創建
task.json
。該配置文件在工作空間的.vscode目錄下,這個目錄也是存放vscode配置的文件夾
vscode默認的task配置文件中給出了執行tsc

gulp模板配置。簡單介紹一下
task.json
的寫法
{"version":
"0.1.0",//
要使用的命令或者可執行文件的路徑"command":
"tsc",//
對應command參數,是否是一個命令,否則為執行文件路徑"isshellcommand":
true,//
是否在執行task任務時顯示控制台窗口"showoutput":
"always",//
對應command參數指定程序的參數"args":
["-p",
"src",
"--allowjs",
"-w"],//
不太明白這個,基本用不到"problemmatcher":
"$tsc",}

Ⅶ 能不能讓VS.net編譯完項目,自動對代碼進行混淆

1 把項目的生成路徑改成Release(通過項目的屬性-生成來修改)
2 把整個Release文件夾拷到另外一個地方,然後用防止反編譯軟體來生成新的exe,再覆蓋掉
3 在打包項目裡面把覆蓋完後的Release文件夾裡面內容添加進來,生成快捷方式以及卸載在此不詳細說明。

Ⅷ android ant混淆編譯打包生成jar文件,如何將jni生成的lib**.so庫文件同時打包

在混淆配置文件中添加這句

-keepclasseswithmembernames class * {
native <methods>;
}

Ⅸ 代碼混淆器打亂代碼的編譯結果有辦法破解掉嗎

應該可以 ,混淆器只是增加了反編譯的難度也而已

閱讀全文

與混淆編譯相關的資料

熱點內容
換裝app怎麼下載 瀏覽:52
京東眾包蘋果app怎麼下載 瀏覽:826
這就是手機app怎麼說韓語 瀏覽:148
python27安裝 瀏覽:502
遼寧用什麼app查詢社保 瀏覽:632
一對一付費聊天交友源碼 瀏覽:59
無所不能pdf 瀏覽:914
java從指定字元串截取 瀏覽:843
地鐵逃生伺服器已滿什麼意思 瀏覽:819
androidstudio工程名 瀏覽:432
下載高清圖片用什麼app 瀏覽:936
什麼app可以買裙子 瀏覽:591
大商創源碼210 瀏覽:291
phpwhile跳出循環 瀏覽:245
怎麼壓歲文件夾 瀏覽:889
幫人解壓的說說 瀏覽:740
登記本解壓預約流程 瀏覽:508
springboot載入配置文件源碼 瀏覽:124
程序員旅行箱 瀏覽:235
程序員月薪8萬個稅 瀏覽:510