draperlaboratory / fracture

an architecture-independent decompiler to LLVM IR
Other
385 stars 47 forks source link

it is impossible to convert ASM to LLVM IR to ASM for deobf #59

Open fr0zenrain opened 7 years ago

fr0zenrain commented 7 years ago

convert asm to IR ,and finally compile IR with O2 to asm for deobfuscation,it is impossible?

i test a simple demo,but failed!

MCDirector: Using Triple: arm-unknown-unknown MCDirector: Using CPU: generic MCDirector: Using Features: +v6 Triple: arm-unknown-unknown CPU: generic Debug+Asserts/bin/fracture-cl> dec 0x4ec4 BB#0: derived from LLVM BB %"func_4ec4+0" %R3<def,tied3> = STRD_POST %R11, %R12, %R3, %R0, 1024, pred:11, pred:%CPSR; mem:ST4 dbg::20164 %R10 = ANDrsi %R1, %R2, 226, pred:9, pred:%CPSR, opt:%noreg; dbg::20168 %R11<def,tied1> = STMDA_UPD %R11, pred:4, pred:%CPSR, %R4, %R5, %SP, %LR; mem:ST4 dbg::20172 %R4, %PC<def,tied2> = LDRBT_POST_IMM %PC, %noreg, 155445, pred:4, pred:%CPSR; mem:LD4 dbg::20176 LLVM ERROR: Cannot select: 0x7fc6ca80d8e0: i32,i32,ch = LDRBT_POST_IMM 0x7fc6ca80d7d0:1, 0x7fc6ca80d4a0, 0x7fc6ca80d5b0, 0x7fc6ca80d6c0, 0x7fc6ca80c6c0, 0x7fc6ca80d7d0<Mem:LD4> [ID=45] dbg::20176 0x7fc6ca80d4a0: i32,ch = CopyFromReg 0x7fc6ca80d280, 0x7fc6ca80d390 [ID=42] dbg::20176 0x7fc6ca80d390: i32 = Register %PC [ID=19] 0x7fc6ca80d5b0: f32,ch = CopyFromReg 0x7fc6ca80d4a0:1, 0x7fc6ca80c060 [ID=43] dbg::20176 0x7fc6ca80c060: f32 = Register %noreg [ID=12] 0x7fc6ca80d6c0: i32 = Constant<155445> [ID=20] 0x7fc6ca80c6c0: i32 = Constant<4> [ID=14] 0x7fc6ca80d7d0: i32,ch = CopyFromReg 0x7fc6ca80d5b0:1, 0x7fc6ca80a4a0 [ID=44] dbg::20176 0x7fc6ca80a4a0: i32 = Register %CPSR [ID=7] In function: func_4ec4