=================================================================
HObfusにおける変数の難読化方法
-----------------------------------------------------------------

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[ Step 0 ] ソースコード上での準備
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

まず以下の準備をソースコードに対して行う。

元の変数名を変更してしまっても問題ない変数には、$_ を先頭につける。


--【例】--------------------------------------
$_document.currentScript.textContent.length

$_window.RegExp("[^0-9a-f]","gi");

$_window.String.fromCodePoint()

for($_i=0;$_i<$_n;$_i++){
	$_s+=$_patt.charAt($_window.Math.floor($_window.Math.random()*$_patt.length));
}
---------------------------------------------

名前が変更不可な Math や String は、$_window.Math $_window.String
のように .(property) の形にする。

元から .(property) の形だが名前が変更不可の場合は、$_ を先頭につける。

--【例】--------------------------------------
$_pax.$_docwrite();
---------------------------------------------


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[ Step 1 ] CObfStr_jsprop
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

.(property) を [_$.(key)] で、"(string)" を _$.(key) で置換する。

key はランダム文字列で、key と value(元のproperty/string) は
マッピングとして記録される。

.................................................................
このマッピングは後でCObfWord_rediff::getMapping() を使用して、
コードの中に埋め込まれる。CObfWord_rediff::getMapping()は、
結構洗練されているようで、Mappingの一般解決策として評価する価値がある。
.................................................................


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[ Step 2 ] CJsObfWord_dollar
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'$_(identifier)' を '_(random-string)' に置換する。
最初にハイフンをつけるのは、JavaScript の Reserverd Words に
衝突しないようにするためである。


=================================================================
