Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 15:28

  • Please register to post and access all features, it's quick, easy and FREE!


decompiler

Discussion on decompiler within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2014
Posts: 32
Received Thanks: 18
decompiler

Kann mir jemand ein Programm vorschlagen womit man dll dateien decompilen, compilen und die datein bearbeiten kann?



Strasburger88 is offline  
Old 07/06/2019, 17:00   #2
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,095
Received Thanks: 527
hat nen ganz neaten decompiler, aber wenn du erwatest schönen/lesbaren Code zu erzeugen, vergiss es.

Nehmen wir diesen simplen fibonacci algorithmus:
Code:
int fib(unsigned int num) {
  if (num < 2) return num;
  return fib(num-1) + fib(num-2);
}
Auf O3 sieht das ganze nach dem Dekompilieren mit Ghidra so aus:
Code:
ulong fib(uint uParm1)

{
  int iVar1;
  ulong uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  
  uVar2 = (ulong)uParm1;
  if (1 < uParm1) {
    iVar5 = 0;
    uVar3 = uParm1;
    do {
      uVar4 = uVar3 - 1;
      uVar3 = uVar3 - 2;
      iVar1 = fib((ulong)uVar4);
      iVar5 = iVar5 + iVar1;
    } while (1 < uVar3);
    uVar2 = (ulong)((uParm1 & 1) + iVar5);
  }
  return uVar2;
}
Ist praktisch nicht wieder zu erkennen (klar gibt es irgendwie so die fibonacci vibes ab, aber ums rauszufinden was es tut musste ich die ersten paar schritte durch gehen, um zu verstehen warum das so geht)

Und das ist nicht mal obfuscated, ich hab einfach mal den movfuscator draufgeworfen, dann kommt das raus:
Code:
void fib(void)

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)**(byte *
                                                  *)(&alu_eq + (target & 0xff) * 4) * 4) +
                                                  (uint)**(byte **)(&alu_eq +
                                                                   (target >> 8 & 0xff) * 4) * 4) *
                                                  4) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  stack_temp = fp;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + (int)sp);
  **(int **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R1;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + (int)sp);
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R2;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + (int)sp);
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R3;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + (int)sp);
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = F1;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + (int)sp);
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = D1;
  sp = jmp_d1;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + jmp_d1[0x4c20]);
  puVar2 = *(undefined4 **)(&sel_data + on * 4);
  *puVar2 = stack_temp;
  *(undefined4 **)(puVar2 + 1) = sp;
  *(undefined4 **)*(undefined4 **)(&sel_data + on * 4) = sp;
  R3 = **(uint **)(&sel_data + on * 4);
  R2 = 2;
  alu_t._0_2_ = 2;
  uVar3 = *(uint *)(*(int *)(&alu_add16 +
                            *(int *)(*(int *)(&alu_add16 + (R3 & 0xffff) * 4) + (uint)_alu_add16 * 4
                                    ) * 4) + 4);
  uVar4 = *(uint *)(*(int *)(&alu_add16 +
                            *(int *)(*(int *)(&alu_add16 + (R3 >> 0x10) * 4) + (uint)_alu_inv16 * 4)
                            * 4) + (uVar3 >> 0x10) * 4);
  cf = cf & 0xffffff00 | (uint)(byte)(&alu_false)[uVar4 >> 0x10 & 0xff];
  DAT_0001309f = (byte)(uVar4 >> 8);
  sf = (undefined)*(undefined4 *)(&alu_b7 + (uint)DAT_0001309f * 4);
  zf = (&alu_false)
       [(uint)(byte)(&alu_true)
                    [(uint)(byte)(&alu_true)
                                 [(uint)(byte)(&alu_true)
                                              [(uint)(byte)(&alu_true)[uVar3 & 0xff] +
                                               (uVar3 >> 8 & 0xff)] + (uVar4 & 0xff)] +
                     (uint)DAT_0001309f]];
  of = (undefined)
       **(undefined4 **)
         (*(int *)(*(int *)(&alu_cmp_of + *(uint *)(&alu_b7 + (R3 >> 0x18) * 4) * 4) +
                  *(uint *)(&alu_b7 +
                           (*(uint *)(&alu_b7 + (R3 >> 0x18) * 4) & 0xffffff00 | (uint)DAT_0001309f)
                           * 4) * 4) +
         *(int *)(&alu_b7 +
                 (*(uint *)(&alu_b7 +
                           (*(uint *)(&alu_b7 + (R3 >> 0x18) * 4) & 0xffffff00 | (uint)DAT_0001309f)
                           * 4) & 0xffffff00 | (uint)DAT_0001309f) * 4) * 4);
  b0 = *(int *)(*(int *)(&and + *(int *)(&alu_false + cf * 4) * 4) + on * 4);
  **(undefined4 **)(&sel_target + b0 * 4) = 0x800107a7;
  iVar1 = b0;
  puVar2 = *(undefined4 **)(&sel_data + b0 * 4);
  *puVar2 = R0;
  puVar2[1] = R1;
  puVar2[2] = R2;
  puVar2[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[b0] = 0;
  R3 = *(uint *)(&pop + *(int *)(&pop + *(int *)(&pop + *(int *)(&pop + *(int *)(&pop + *(int *)(&
                                                  pop + *(int *)(&pop + *(int *)(&pop + fp))))))));
  R0 = **(uint **)(&sel_data + on * 4);
  **(undefined4 **)(&sel_target + on * 4) = 0x80011321;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0xa7) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 7) * 4) * 4) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  R2 = 1;
  R3 = *(uint *)(*(int *)(&alu_add16 +
                         *(int *)(*(int *)(&alu_add16 +
                                          (**(uint **)(&sel_data + on * 4) & 0xffff) * 4) +
                                 (uint)uRam00013096 * 4) * 4) + 4) & 0xffff |
       *(int *)(*(int *)(&alu_add16 +
                        *(int *)(*(int *)(&alu_add16 + (**(uint **)(&sel_data + on * 4) >> 0x10) * 4
                                         ) + (uint)_alu_inv16 * 4) * 4) +
               (*(uint *)(*(int *)(&alu_add16 +
                                  *(int *)(*(int *)(&alu_add16 +
                                                   (**(uint **)(&sel_data + on * 4) & 0xffff) * 4) +
                                          (uint)uRam00013096 * 4) * 4) + 4) >> 0x10) * 4) << 0x10;
  stack_temp = R3;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = 0x80010bef;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  **(undefined4 **)(&sel_target + on * 4) = 0x80010000;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0xef) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 0xb) * 4) * 4)
                                           + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                     (target >> 0x10 & 0xff) * 4) +
                                                            1) * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  R3 = R0;
  R1 = 2;
  iVar1 = *(int *)(*(int *)(&alu_add16 +
                           *(int *)(*(int *)(&alu_add16 +
                                            (**(uint **)(&sel_data + on * 4) >> 0x10) * 4) +
                                   (uint)_alu_inv16 * 4) * 4) +
                  (*(uint *)(*(int *)(&alu_add16 +
                                     *(int *)(*(int *)(&alu_add16 +
                                                      (**(uint **)(&sel_data + on * 4) & 0xffff) * 4
                                                      ) + (uint)_alu_add16 * 4) * 4) + 4) >> 0x10) *
                  4);
  alu_t._2_2_ = (undefined2)iVar1;
  R2 = *(uint *)(*(int *)(&alu_add16 +
                         *(int *)(*(int *)(&alu_add16 +
                                          (**(uint **)(&sel_data + on * 4) & 0xffff) * 4) +
                                 (uint)_alu_add16 * 4) * 4) + 4) & 0xffff | iVar1 << 0x10;
  stack_temp = R2;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = 0x80011070;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  **(undefined4 **)(&sel_target + on * 4) = 0x80010000;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0x70) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 0x10) * 4) * 4
                                                  ) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  R2 = R0;
  iVar1 = *(int *)(*(int *)(&alu_add16 +
                           *(int *)(*(int *)(&alu_add16 + (R3 >> 0x10) * 4) + (R0 >> 0x10) * 4) * 4)
                  + (**(uint **)(&alu_add16 +
                                *(int *)(*(int *)(&alu_add16 + (R3 & 0xffff) * 4) +
                                        (R0 & 0xffff) * 4) * 4) >> 0x10) * 4);
  R0 = **(uint **)(&alu_add16 +
                  *(int *)(*(int *)(&alu_add16 + (R3 & 0xffff) * 4) + (R0 & 0xffff) * 4) * 4) &
       0xffff | iVar1 << 0x10;
  alu_c._0_1_ = (undefined)iVar1;
  alu_c._1_1_ = (undefined)((uint)iVar1 >> 8);
  alu_c._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0x21) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 0x13) * 4) * 4
                                                  ) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  _alu_s = R0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  **(int **)(&sel_data + on * 4) = fp;
  stack_temp = *sp;
  sp = (undefined4 *)sp[1];
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&pop + sp[0x4c21]);
  puVar2 = *(undefined4 **)(&sel_data + on * 4);
  *puVar2 = stack_temp;
  *(undefined4 **)(puVar2 + 1) = sp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_target + on * 4) = stack_temp;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0xd) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 0x18) * 4) * 4
                                                  ) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  stack_temp = fp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(int **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R1;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R2;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = R3;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(uint **)(&sel_data + on * 4) = stack_temp;
  stack_temp = F1;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = D1;
  sp = jmp_d1;
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&push + jmp_d1[0x4c20]);
  puVar2 = *(undefined4 **)(&sel_data + on * 4);
  *puVar2 = stack_temp;
  *(undefined4 **)(puVar2 + 1) = sp;
  *(undefined4 **)*(undefined4 **)(&sel_data + on * 4) = sp;
  R3 = 0x19;
  stack_temp = 0x19;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = 0x80011d5d;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c20];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  **(undefined4 **)(&sel_target + on * 4) = 0x80010000;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0x5d) *
                                                  4) + (uint)*(byte *)(*(int *)(&alu_eq +
                                                                               (target >> 8 & 0xff)
                                                                               * 4) + 0x1d) * 4) * 4
                                                  ) +
                                           (uint)*(byte *)(*(int *)(&alu_eq +
                                                                   (target >> 0x10 & 0xff) * 4) + 1)
                                           * 4) * 4) +
                  (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80) * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  R3 = R0;
  _alu_x = target;
  _alu_y = 0x80011f7a;
  b1 = (uint)*(byte *)(*(int *)(&alu_eq + (target >> 8 & 0xff) * 4) + 0x1f);
  b2 = (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x10 & 0xff) * 4) + 1);
  b3 = (uint)*(byte *)(*(int *)(&alu_eq + (target >> 0x18) * 4) + 0x80);
  iVar1 = *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + *(int *)(*(int *)(&and + (uint)*(byte *)
                                                  (*(int *)(&alu_eq + (target & 0xff) * 4) + 0x7a) *
                                                  4) + b1 * 4) * 4) + b2 * 4) * 4) + b3 * 4);
  b0 = iVar1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r1;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r2;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_r3;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f0;
  **(undefined4 **)(&sel_data + iVar1 * 4) = jmp_f1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = jmp_d0;
  puVar2[1] = D1;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *(undefined4 **)puVar2 = jmp_d1;
  puVar2[1] = sel_on;
  *(undefined4 *)(&sel_on)[b0] = 1;
  **(int **)(&sel_data + on * 4) = fp;
  stack_temp = *sp;
  sp = (undefined4 *)sp[1];
  **(undefined4 **)(&sel_data + on * 4) = *(undefined4 *)(&pop + sp[0x4c21]);
  puVar2 = *(undefined4 **)(&sel_data + on * 4);
  *puVar2 = stack_temp;
  *(undefined4 **)(puVar2 + 1) = sp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  **(undefined4 **)(&sel_data + on * 4) = stack_temp;
  stack_temp = *sp;
  **(undefined4 **)(&sel_data + on * 4) = sp[0x4c21];
  branch_temp = stack_temp;
  **(undefined4 **)(&sel_target + on * 4) = stack_temp;
  iVar1 = on;
  puVar5 = *(uint **)(&sel_data + on * 4);
  *puVar5 = R0;
  puVar5[1] = R1;
  puVar5[2] = R2;
  puVar5[3] = R3;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = F0;
  puVar2[1] = F1;
  _data_p = &jmp_d0;
  puVar2 = *(undefined4 **)(&sel_data + iVar1 * 4);
  *puVar2 = D0;
  puVar2[1] = jmp_d0;
  puVar2[2] = D1;
  *(undefined4 **)(puVar2 + 3) = jmp_d1;
  *(undefined4 *)(&sel_on)[on] = 0;
                    /* WARNING: Bad instruction - Truncating control flow here */
  halt_baddata();
}
Da hat Ghidra schlicht weg aufgegeben.
Langer rede kurzer sinn, Reverse engeneering ist schwer, und da gibt es nicht einfach ein Tool mit dem du mal eben was ändern kannst
warfley is offline  
Thanks
3 Users
Reply



« Update moded dll data | DirectX drawn lines are not visible »

Similar Threads
mrs decompiler
12/14/2008 - GunZ - 6 Replies
This decompiles mrs files like system mrs just edit any file u want in system.mrs Send big files the easy way. Files too large for email attachments? No problem!
Reversing and Python 2.4 decompiler
12/07/2007 - General Gaming Discussion - 2 Replies
How many people are reversing this game besides me? Anyone have a source for a Python 2.4 decompiler? Google for it and you fill find the only one that charges a ridiculous price of 10EURO per 5KB :eek: I can send arbitrary packets currently, started testing the limits on various actions..
BSP 2 Decompiler
01/06/2007 - General Gaming Discussion - 0 Replies
Suche ein Tool was BSP 2 entpacken kann (Oder Konventieren). Ja, es ist für maps wie halt in CS. Das Problem ist das bereits schon ein recht alter Quake decompiler erst ab BSP 5 entpacken kann.



All times are GMT +2. The time now is 15:28.


Powered by vBulletin®
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

BTC: 3KeUpz52VCbhmLwuwydqxu6U1xsgbT8YT5
ETH: 0xc6ec801B7563A4376751F33b0573308aDa611E05

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2019 elitepvpers All Rights Reserved.