本文目錄一覽:
- 1、javascript反編譯
- 2、易語言,post、JS、多線程、apk反編譯,一年學會,什麼水平?
- 3、混淆過的js代碼如何還原?
- 4、混淆的class文件怎麼進行反編譯
- 5、vue壓縮後的js可以反編譯出來嗎
- 6、JS代碼混淆了,怎麼反混淆回去?
javascript反編譯
小弟,javascrip是腳本語言,是解釋執行的,不會去編譯的,你的這段可能是通過某種方法加了密的javascript代碼,只能是知道他用什麼軟體加的密,否則解不開。
易語言,post、JS、多線程、apk反編譯,一年學會,什麼水平?
學會? 你指的什麼學會? post的無非就發包, 也沒幾個命令 你本身就懂點編程的話, 研究一天就知道怎麼搞。 要是沒基礎,看幾節教程我估計都差不多了。 JS? 你應該是想把網站的JS混淆代碼給還原吧? 比如一些操作加密的, 估計你想學的也是拆解一些js函數解密也不是真想學這門腳本語言, 那熟悉下語法就夠了, 還是那句話, 有編程基礎 愛研究 沒幾天就入門了, apk反編譯? 我想你是想做那些apk的發包吧? 也就那幾個步驟 抓包,獲取數據,分析,反編譯apk ,找到加密位置,還原出來,寫發包代碼,, 你說的學會真的很廣, 因為入個門要是有一門語言作為基礎 ,再學別的是挺容易的。 1年肯定夠你了解那些東西, 但是精通, 我估計一年 一門語言學到精通都有點懸。。。
混淆過的js代碼如何還原?
1:利用IE開發人員工具(IE8開始已經自帶,IE7以前需要下載安裝IE Developer Toolbar)進行反混淆,
2:代碼實現
混淆後的測試代碼
eval(function(p,a,c,k,e,d){e=function(c){return(ca?””:e(parseInt(c/a)))+((c=c%a)35?String.fromCharCode(c+29):c.toString(36))};if(!”.replace(/^/,String)){while(c–)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return’\\w+’};c=1;};while(c–)if(k[c])p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c]);return p;}(‘1(“0-6”);2 4(){1(“0-5”)}8 3=2(){1(“0-7”)};4();3()’,9,9,’憂鬱的匹格|alert|function|b|a|反混淆測試2|反混淆測試1|反混淆測試3|var’.split(‘|’),0,{}))
開始實施:
1.新建一個網頁xxx.html
2.加入一個div容器 id=”divTest”
3.最關鍵的一步--賦值執行:(在上面混淆的代碼中,將eval()中的內容提取出來賦值(或直接列印)給document.getElementById(‘divTest’).innerText )
document.getElementById(‘divTest’).innerText=function(p,a,c,k,e,d){e=function(c){return(ca?””:e(parseInt(c/a)))+((c=c%a)35?String.fromCharCode(c+29):c.toString(36))};if(!”.replace(/^/,String)){while(c–)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return’\\w+’};c=1;};while(c–)if(k[c])p=p.replace(new RegExp(‘\\b’+e(c)+’\\b’,’g’),k[c]);return p;}(‘1(“0-6”);2 4(){1(“0-5”)}8 3=2(){1(“0-7”)};4();3()’,9,9,’憂鬱的匹格|alert|function|b|a|反混淆測試2|反混淆測試1|反混淆測試3|var’.split(‘|’),0,{})
打開xxx.html 顯示結果:(反混淆後的代碼已經被壓縮了,去掉了換行等字元)
alert(“憂鬱的匹格-反混淆測試1”);
function a(){alert(“憂鬱的匹格-反混淆測試2”)}
var b=function(){alert(“憂鬱的匹格-反混淆測試3”)};
a();
b();
PS:使用packed這個混淆過的js都可以使用這個方法還原,找了幾個項目裡面混淆過的js都可以還原,只是去掉了換行符,
混淆的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 dup ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始語句:
CrossTable crosstable = new CrossTable();
註解:
練習:
JVM INSTR new #246 ;
JVM INSTR dup ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #262 ;
JVM INSTR dup ;
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 dup ;
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);
}
vue壓縮後的js可以反編譯出來嗎
vue壓縮後的js可以反編譯出來,反編譯方法為:
1、在桌面找到自己下載的瀏覽器軟體,點擊瀏覽器圖標。
2、在瀏覽器中隨便找個網址登入。
3、在網頁上右鍵滑鼠,彈出右鍵菜單中選擇「審查元素」選項(或按F12),彈出開發工具彈框,在彈框中選擇「Sources」選項。如下圖所示。
4、在左側網路文件列表中隨便找個js文件(如:mt_show_1.8.js文件),點擊該文件並查看文件內容。發現文件一行展示證明被壓縮過了。
5、找到該文件內容左下角的「{}」標籤,找到後並點擊該標籤。
6、隨後左側會生成一個格式化後的文件(如:mt_show_1.8.js:formatted文件),查看js文件內容,內容展示成正常的格式了。現在就可以讀懂裡面的代碼了。
JS代碼混淆了,怎麼反混淆回去?
這不是混淆,只是使用16進位表示的ASCII碼~
單獨提取出字元串,在後面加上.toString()進行調試即可看到原本字元串。
你的這句轉碼後如下:
window[“document”][“write”](‘sc’)
相當於:window.document.write(‘sc’)
很有可能是輸出一個script標籤的代碼段的開始。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/310064.html