Q23.[Reversing]またやらかした!

技術
またprintf()をし忘れたプログラムが見つかった。
とある暗号を解くプログラムらしい…
reversing200

ghidraのでコンパイル結果

undefined4 main(void)

{
  int iVar1;
  uint *puVar2;
  int j;
  uint before [14];
  uint after [14];
  
  before[0] = 0x7a;
  before[1] = 0x69;
  before[2] = 0x78;
  before[3] = 0x6e;
  before[4] = 0x62;
  before[5] = 0x6f;
  before[6] = 0x7c;
  before[7] = 0x6b;
  before[8] = 0x77;
  before[9] = 0x78;
  before[10] = 0x74;
  before[11] = 0x38;
  before[12] = 0x38;
  before[13] = 100;
  puVar2 = after;
  for (iVar1 = 0xe; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar2 = 0;
    puVar2 = puVar2 + 1;
  }
  for (j = 0; j < 0xe; j = j + 1) {
    after[j] = before[j] ^ 0x19;
  }
  return 0;
}

上から、zixnbo|kwxt88d となり、次の処理が、 0x19とのビット排他的論理和をかけると

0x7a XOR 0x19 = 0x63 -> c
0x69 XOR 0x19 = 0x70 -> p
0x78 XOR 0x19 = 0x61 -> a
0x6e XOR 0x19 = 0x77 -> w
0x62 XOR 0x19 = 0x7b -> {
0x6f XOR 0x19 = 0x76 -> v
0x7c XOR 0x19 = 0x65 -> e
0x6b XOR 0x19 = 0x72 -> r
0x77 XOR 0x19 = 0x6e -> n
0x78 XOR 0x19 = 0x61 -> a
0x74 XOR 0x19 = 0x6d -> m
0x38 XOR 0x19 = 0x21 -> !
0x38 XOR 0x19 = 0x21 -> !
100 XOR 0x19 = 0x85 -> … (この文字は制御文字であり、ASCIIの可視文字としては表現できません)

コメント

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