garlic decompiler这个项目还有两个月,就写了整整两年了。对于一个曾经是半吊子的 c 选手,稍微有那么一小点(其实挺大的)自豪。
最近两个月写了些东西:
与其说是 elf 的解析,应该说的是基于 armv8 的 elf 的解析。除了 Loads And Stores 部分的 instruction 没有处理,其余的指令都支持了。AI + 手敲,快了很多。效果如下:
[ELF] 0x00000000000118fc <_ZN3mmr5Clock3nowEv> # .text
[0 0xd10103ff] SUB x31, x31, #64
[1 0xf90013f3]
[2 0xa9037bfd]
[3 0x9100c3fd] ADD x29, x31, #48
[4 0xd53bd053] MRS x19, S2_3_13_0_2
[5 0xf9401668]
[6 0xf9000fe8]
[7 0x910023e1] ADD x1, x31, #8
[8 0x52800020] MOVZ w0, #1, LSL #0
[9 0x97fffaf4] BL #66800
[10 0x34000060] CBZ w0, 71984
[11 0x97fffe7e] BL #70432
[12 0x14000005] B #72000
[13 0xa940a3e9]
[14 0x5299400a] MOVZ w10, #51712, LSL #0
[15 0x72a7734a] MOVK w10, #15258, LSL #16
[16 0x9b0a2120] MADD x0, x9, x10, 8
[17 0xf9401668]
[18 0xf9400fe9]
[19 0xeb09011f] SUBS x31, x8, x9
[20 0x540000a1] B.NE, 0x11960
[21 0xa9437bfd]
[22 0xf94013f3]
[23 0x910103ff] ADD x31, x31, #64
[24 0xd65f03c0] RET x30
[25 0x97ffff20] BL #71136
[26 0x94000001] BL #72040
[27 0xf81f0ffe]
[28 0x97fffdd5] BL #69824
[29 0x97ffff60] BL #71408
跟几个朋友交流,他们说我有毛病,自己动手解析指令,capstone 都写的好好的。但是我觉得我要彻底搞明白,就得一个指令一个指令的过一遍,就像我解析 jvm 和 dalvik 的 bytecode 的过程是一样的,在这个过程中,了解指令集更快,烙印更深。
小插曲:读了armv8 的手册, 脑袋一热,买了美股Arm Holdings的股票,目前亏小 10 个点。
ARM 的文档做的不错,我这种小白花点儿时间也能看懂。对比大 A 的某武纪,某武纪的公开文档真的差。
还是欢迎大家试用,欢迎大家提意见,欢迎 PR ,欢迎提 bug
写在最后:为爱发电,不知道还能走多远。
![]() |
1
levelworm 22 小时 39 分钟前 ![]() 不错啊,我只能写 lc-3 的 disassembly 。。。
|
2
DiamondY 16 小时 44 分钟前 ![]() 挺好的,star 一下
|
3
OBJECTION 16 小时 15 分钟前 ![]() The world's fastest apk (android)/java open source decompiler
用 C 语言实现的 Android/Java 反编译器 就 fastest 我也要去 star 一下(虽然我看不懂也用不到) |
![]() |
4
neocanable OP @OBJECTION 不吹点儿牛逼,没人关注
|
![]() |
5
neocanable OP @DiamondY 感谢
|