0

x の整数があり、その整数を生成できる方程式を見つけようとしています。これは、スクリプトの難読化を目的としています。足し算、引き算、割り算、平方根、xor、16 進数についてこの問題を解決しました。私の答えのほとんどは、逆方程式を使って解くことを含みます。私はそれを解決しようとしています:

  • 乗算
  • 係数
  • 指数
  • 科学表記法
  • 対数
  • 私が言及しなかった他のもの

これが私が始めた関数です:

Public Function IntegerBreak(PickedInteger)
Randomize()
Dim Switch, Entropy, Result As Integer
Switch = Int(6 * Rnd()) + 1
Entropy = Int(100 * Rnd()) + 1
Select Case Switch
    Case 1
        'addition
        Result = PickedInteger - Entropy
        Return Result & " + " & Entropy & " = " & PickedInteger
    Case 2
        'subtraction
        Result = PickedInteger + Entropy
        Return Result & " - " & Entropy & " = " & PickedInteger
    Case 3
        'division
        Result = PickedInteger * Entropy
        Return Result & " / " & Entropy & " = " & PickedInteger
    Case 4
        'squares
        Result = PickedInteger ^ 2
        Return "Sqr (" & Result & ") = " & PickedInteger
    Case 5
        'xor
        Result = PickedInteger Xor Entropy
        Return Result & " Xor " & Entropy & " = " & PickedInteger
    Case 6
        'hex
        Return "&H" & Conversion.Hex(PickedInteger) & " = " & PickedInteger
End Select
End Function

サンプル出力:

-47 + 57 = 10

89 - 79 = 10

260 / 26 = 10

Sqr(100) = 10

12 Xor 6 = 10

&HA = 10

編集:私の特定の質問は、見つける方法です:

(z*y=x, z%y=x, z^y=x, zLogy=x, or 3.123^10=x)

私が続けるのを妨げているのは、私が数学の確固たるバックグラウンドを持っていないことです。方程式の計算方法には複数の答えがある可能性があるため、乗算の問題に遭遇しました。

(2*6=12, 3*4=12)

逆の方法を使用すると、10進数が得られました。乗算、モジュラス、指数、科学表記法、および対数の計算に関するアドバイスをお願いします。

また、難読化を学ぶための良い情報は何ですか?

回答は、vb.net または vbscript または数学的疑似コードで受け入れられます。

私を正しい方向に向けていただければ幸いです。

4

1 に答える 1

1

私の具体的な質問は、次のことを見つける方法です。

(z*y=x, z%y=x, z^y=x, zLogy=x, or 3.123^10=x)

乗算の場合、両辺を で割ると、次のyようになります。

z = x / y

xyが両方とも整数であっても、小数になる場合があることに注意してくださいz(例: 2 / 7)。

モジュラスの場合、 の結果はz % yより大きいか等しくないことに注意してくださいyyしたがって、選択した値によってはまったく到達できない可能性があるため、任意の値を選択してもおそらく役に立ちませんx。次のようにできます。

z = x + rnd()*y

yより大きい値を選択する限りx。これは間違いなく整数に対してのみ機能することに注意してください。

電源の場合、次の場合x ^ y = z:

x = z ^ (1/y)

(解法y ^ x = zx全然違います。)

対数の例は単項演算であるため、あまり意味がありませんlog。つまり、2 つではなく 1 つの数値でのみ動作します。あなたが実際に「対数ベースy」を意味しない限り、その場合log{y} x = z

x = y ^ z
于 2013-08-30T23:07:50.830 に答える