【解決方法】文字列の難読化を解除するのに役立ちます


こんにちは、みんな、

文字列の難読化を解除しようとしているので、また助けが必要です。

最初に、以下にある私のコードに関する専門家にいくつか質問があります。
– もっと簡単にすることはできますか?
– 間違いや非論理的なものは見られますか?
– 不必要な変換やコードの重み付けを避けるために、必要な部分を BYTES で抽出することは可能ですか?

だから私の問題のために…私は2つのステップでエンコードされたファイルを持っています。
エンコードの最初のステップ (BYTES に 2 を掛けたもの) が浮かび上がってきたようです。プログラムでファイルを開き、BYTES を 2 で割って難読化を解除することに成功しました。
だが! 常にしかしがあるからです! ファイルでこのコードを実行した後、開始区切り文字と終了区切り文字に応じて 2 つの異なる方法で反応する第 2 レベルのエンコーディングがあることに気付きました! 説明させてください。
デリミタ 5E54/545E (5E54″CODE EN HEX”545E) または 5E5E/1A14 に含まれるコードの場合: この例では C2 (HEX) = a (ASCII) ですが、これは特性を定義するすべての HEX に適用され、お互いにフォローします!
– a = C2
– aa = 3C643AC23E
– aaa = 3C643AC23E
-aaaa = 3C663AC23E
– aaaaa = 3C683AC23E
– aaaaaaa = 3C6A3AC23E
-aaaaaaa = 3C6C3AC23E
– aaaaaaaaa = 3C6E3AC23E
– aaaaaaaaa = 3C703AC23E
– aaaaaaaaaaa = 3C723AC23E
– aaaaaaaaaaa (10) = 3C62603AC23E
– aaaaaaaaaaaaa = 3C62623AC23E
– aaaaaaaaaaaaaaaaaaaaaaa (20) = 3C64603AC23E
– ああ… (100) = 3C6260603AC23E (推測)
この区切り文字に含まれていないコードの場合:
– a = C2
– aa = C2C2
– aaa = 3C643AC23E
– …

この例は、BYTES を 2 で割る前に有効であることを指定します。除算後、HEX のセットは 2 で除算されます (C2 = 61 ; 3C = 1E ; …)

だから、私は C# から始めるので、この部分は私にとって非常に複雑になります! ですから、どこに行くのかわからないまま始める前に、いくつか質問させてください。 これを行うために何を使用すべきかについての手がかりはありますか? あなたの意見では最も簡単な方法は?
私の目標は、この第 2 レベルでエンコードされた STRING の部分を見つけて分析し、置き換えることです。 たとえば、C2C2 の 3C643AC23E。

貢献していただきありがとうございます!

私のプログラム:

ファイルを開き、各 BYTES を 2 で割ります。これがコーディングの最初のレベルです。

C#
var fileContent = string.Empty;
var filePath = string.Empty;
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.InitialDirectory = "%userprofile%";
    openFileDialog.Filter = "bin files (*.bin)|*.bin";
    openFileDialog.FilterIndex = 2;
    openFileDialog.RestoreDirectory = true;
    if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
var fileStream = openFileDialog.OpenFile();
byte[] readBytes = File.ReadAllBytes(filePath);
for (var i = 0; i < readBytes.Length; i++)
{
    readBytes[i] /= 2;
}
foreach (byte s in readBytes)
{
    Console.WriteLine(s);
}
byte[] data = readBytes;
string hex = BitConverter.ToString(data).Replace("-", string.Empty);

次に、興味のある部分だけを抽出するようにコードを変更します。

C#
int pFrom = hex.IndexOf("2A50502A");
int pStart = hex.IndexOf("23322931342B391E18181805") + "23322931342B391E18181805".Length;
int pTo = hex.LastIndexOf("2A4550502A") + "2A4550502A".Length;
string startCode = hex.Substring(pStart, pFrom - pStart);
string endCode = hex.Substring(pTo);
string newCode = startCode + endCode;

そして、新しいファイルに保存するために BYTES に変換しました。

C#
int numberCharsCode = newCode.Length;
byte[] newCodeBytes = new byte[numberCharsCode / 2];
for (int w = 0; w < numberCharsCode; w += 2)
{
     newCodeBytes[w / 2] = Convert.ToByte(newCode.Substring(w, 2), 16);
}
string newFilePath = filePath.Replace(".bin", "_decrypted.bin");
File.WriteAllBytes(newFilePath, newCodeBytes);

私が試したこと:

今のところ何もありません! どうすればいいのかわからないので、専門家にリードしてもらうことを好みます。

解決策 1

私たちは立ち往生している人々を喜んで助けますが、それは私たちがあなたのためにすべてをするためにここにいるという意味ではありません! 私たちがすべての作業を行うことはできません。あなたはこれに対して報酬を受け取っているか、またはそれはあなたの成績の一部であり、私たちがあなたのためにすべてを行うことはまったく公平ではありません.

だから私たちはあなたが仕事をする必要があり、あなたが行き詰まったときにあなたを助けます. それは、あなたが提出できる段階的な解決策を提供するという意味ではありません!
現在の状況と、プロセスの次のステップを説明することから始めます。 次に、その次のステップを機能させるために何を試みたか、またその際に何が起こったかを教えてください。
私たちは「注文コード」サイトではありません。

開始するのに問題がある場合は、これが役立つ場合があります。 問題を解決するためのコードの書き方、初心者向けガイド[^]

コメント

タイトルとURLをコピーしました