問題タブ [deobfuscation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java コードのセキュリティ
重複の可能性:
商用 Java コードを難読化していますか?
jar が他の誰かによって開かれないように保護するための難読化以外の方法はありますか? 問題は、誰もコードにアクセスしたくないということです。それが、私が Java を好まない理由です。私が使用した逆コンパイラによると、C# と Java で作成されたプログラムには、変数の名前などすべてがそのまま含まれているため、無料ではないプログラムに簡単にアクセスできます。さらに悪いことに、ソースコードを出してください。
javascript - UglifyJS / UglifyJS2 - 結果を復号化/リバートエンジニアリングするのはどれくらい難しいですか?
最適化された BLOB を人間が読める、簡単に理解できる状態に戻すことができるツールは既にありますか?
javascript - サイトハックに挿入されたjavascript
私の友人のワードプレスサイトが攻撃され、たくさんのphpファイルにいくつかのevalステートメントが挿入されました。これを膨らませてデコードしましたが、以下のjavascriptにつながりました。
これを解読して、それが何を言っているかを読むことができるようにする方法を誰かが考えていますか?
php - PHP eval() は、eval() の外側で解析エラーになるものを受け入れます。それはどうしてですか?
サーバー側のローダーなしで動作するPHPの難読化/エンコードツールで遊んでいますが、驚くべきことに、デコードできないソリューションを見つけました。
私は、エンコードと難読化によって PHP コードを「保護」するためのさまざまなソリューションについて、一般的によく知っていると考えており、次の 2 つの基本的なルールを知っています。
PHP がコードを読み取って理解できるのであれば、どれだけ難読化およびエンコードされていても、
eval() 言語構造の使用に基づくエンコーディング ソリューションは、eval 構造の引数として渡されるコードを出力することで壊れやすくなります (eval を echo または print に置き換えます)。
ええと、このコードを正確にエンコードしたこのツールを見つけるまで、その原則は完全に機能していました
そしてこれを得ました:
私が説明できない1つのことを除いて、与えられたコードについて特別なことは何もありません:
eval() で引数として渡されるコードを出力すると、そのコードは解析エラーを生成します。
当然、PHP はこれを受け入れません。
しかし、それは上記のエンコードされたスクリプトの eval() コンストラクトに渡されるまさにそのコードです。そして、すべてがうまくいきます。それはどうしてですか?Eval コンストラクトは、私が知っている限りでは、文字列を通常の PHP コードとして解釈するだけであり、その文字列に eval() で PHP にとって正しくないものが含まれている場合、それがスクリプトに直接渡される場合も同じです。評価なし。
ここでのミステリーは何ですか?
javascript - 難読化を解除した Javascript コードを投稿する
このツールhttp://code.google.com/p/cremebrulee/を使用して、難読化されたコードを読みやすくしましたが、出力は非常に無意味に見えます
function ____(_O0){eval(unescape(_O0))}
var l2=window.opera?1:0;function l3(l4){l5=/zc/g;l6=String.fromCharCode(0);l4=l4.replace(l5,l6);var l7=new Array(),l8=_1=l4.length,l9,lI,il=16256,_1=0,I=0,li='';do{l9=l4.charCodeAt(_1);lI=l4.charCodeAt(++_1);l7[I++]=lI+il-(l9<<7)}while(_1++<l8);var l1=new Array(),l0=new Array(),Il=128;do{l0[Il]=String.fromCharCode(Il)}while(--Il);Il=128;l1[0]=li=l0[l7[0]];ll=l7[0];_l=1;var l_=l7.length-1;while(_l<l_){switch(l7[_l]<Il?1:0){case 0 :l0[Il]=l0[ll]+String(l0[ll]).substr(0,1);l1[_l]=l0[Il];if(l2){li+=l0[Il]};break;default:l1[_l]=l0[l7[_l]];if(l2){li+=l0[l7[_l]]};l0[Il]=l0[ll]+String(l0[l7[_l]]).substr(0,1);break};Il++;ll=l7[_l];_l++};if(!l2){return(l1.join(''))}else{return li}};var lO='';for(ii=0;ii<OO0O.length;ii++){lO+=l3(OO0O[ii])};if(naa){document.write('<scr'+'ipt>'+lO+'</sc'+'ript>')};
このコードの次のステップは何ですか?
更新: これは元のコードですhttp://pastebin.com/qG4DX7qy
deobfuscation - de4dot または同様のツールから .NET 実行可能ファイルを保護する方法は?
次の難読化ツールを使用して難読化を試みましたが、de40 ツールに対して成功したものはありません [https://bitbucket.org/0xd4d/de4dot/]
これがどれほど簡単かを見るのは本当につらいです.難読化された.net exeをde4dot.exeにドラッグするだけで、ソースコードが得られます..
試した難読化ツールは次のとおりです。
Agile.NET (別名 CliSecure) Babel.NET CodeFort CodeVeil CodeWall CryptoObfuscator DeepSea Obfuscator Dotfuscator .NET Reactor Eazfuscator.NET Goliath.NET ILProtector MaxtoCode MPRESS Rummage Skater.NET SmartAssembly Spices.Net Xenocode
全部駄目だなぁ・・・本当に腹立たしい。
このツールから保護するためのより良い解決策を教えてください。
javascript - Javascriptの難読化を解除しますか?
ここで貴重なJavaScriptを難読化しました。元のコードでローカルバージョンを保存したと思いますが、ローカルバージョンで難読化されている行が1行あることがわかりました。
簡単に難読化を解除すると、難読化のポイントが完全に失われることはわかっていますが、それは可能でなければなりません。Firefoxプラグインを試しましたが無駄になりました。希望はありますか?
c - 前処理段階での定数畳み込み
難読化を解除する必要のあるCコードがあります。トリッキーなマクロがたくさん含まれています。コードをCプリプロセッサとインデントで実行したところ、次のようになりました。
さらなる分析を単純化するために、コード内のすべての定数を折りたたむことができるツールを探しています。Cプリプロセッサはこれを実行できず、コンパイル段階で定数畳み込みの最適化が実行されることを私は知っています。しかし、ソースコードはどうですか?
シェルスクリプトも高く評価されています。これがこれを行う唯一の方法であると思われるからです。
java - 11文字の文字列を難読化する方法は?
難読化された文字列が次の条件に対処する必要がある場合、長さが 11 の英数字文字列を難読化する必要があります。
- 11 文字の長さのままにする必要があります。
- 英数字のみで構成する必要があります (つまり、10 桁 + 小文字 26 文字 + 大文字 26 文字で構成できます)。
- 元の文字列への難読化を解除する方法が必要です。
コード全体を難読化する必要はなく、一度に 1 つの文字列だけを難読化する必要があることに注意してください。
- コア Java でそれを行う方法はありますか?
-例、例へのリンク、またはそのようなコードのガイドラインへのリンクを希望する助けをいただければ幸いです。
- 誰かがそのようなケースに対処するサード パーティのパッケージを知っている場合は、そのリンクを残してください。
前もって感謝します!
Zoul が提案した回答/アルゴリズムについて: 私はすべてを実装しましたが、現在、隠蔽の問題に問題があります。これは私がしたことです:
私は現在、
random_stri
Zoul によって提案された値を使用しました。これはテスト用です。13は必要ないので、11の長さにしたことに注意してください.上記の結果として、使用した ASCII 配列値を使用しましたが、これも 11: に切り捨てられます
[114, 97, 110, 100, 111, 109, 95, 115, 116, 114, 105]
。利用可能な 62 文字すべての配列を準備してシャッフルすると、次のシャッフルされた文字配列が得られました。
このシャッフルされた配列はハードコードされており、今後はすべてのプログラム実行に対して一定です。
11 文字の入力文字列をループし、各文字について、次のようにシャッフルされた配列から難読化された文字のインデックスを見つけます: 現在の文字 + ASCII_ARRAY[現在の文字インデックス]。たとえば、入力が「1bS0EMtBbK7」の場合、最初の文字が「1」の場合、(1 + 114) を実行すると、「1」に 114 を加えた ASCII 値が得られ、(49 + 114) が得られます。 --> 163.
次に、シャッフルされた chars 配列で難読化された char のインデックスを見つけるために、163 modulo array length を実行し、このインデックスで char を取得します。
問題は、値がまだ連続していることです。つまり、2 つの連続する入力の場合、出力結果も連続します。ここで何が欠けていますか?前もって感謝します!