【问题标题】:Decomplie objective-c .a library反编译objective-c .a 库
【发布时间】:2015-05-05 04:32:32
【问题描述】:

我想反编译一个.aobjective-c iOS 库。我搜索谷歌和网站并找到一些帖子。最有用的是下面的帖子:

https://stackoverflow.com/a/2336679/1939409

根据帖子,我在我的 mac os 终端中使用以下命令:

otool -tV mylibrary.a

它正在工作。实际上它会在我的终端中打印.o 文件的代码。部分印刷文字为:

    Archive : mylibrary.a (architecture armv7)
mylibrary.a(LIConnection.o) (architecture armv7):
(__TEXT,__text) section
-[LIConnection initWithURL:]:
00000000        b580    push    {r7, lr}
00000002        466f    mov r7, sp
00000004        b094    sub sp, #0x50
00000006        ab11    add r3, sp, #0x44
00000008    f2400900    movw    r9, "-[LIConnection initWithURL:]"
0000000c    f2c00900    movt    r9, "-[LIConnection initWithURL:]"
00000010        9013    str r0, [sp, #0x4c]
00000012        9112    str r1, [sp, #0x48]
00000014    f8cd9044    str.w   r9, [sp, #0x44]
00000018        4618    mov r0, r3
0000001a        4611    mov r1, r2
0000001c    f7fffff0    bl  _objc_storeStrong
00000020        a813    add r0, sp, #0x4c
00000022        a90f    add r1, sp, #0x3c
00000024    f6447238    movw    r2, :lower16:((20328-44)-4)
00000028    f2c00200    movt    r2, :upper16:((20328-44)-4)
0000002c        447a    add r2, pc
0000002e        6812    ldr r2, [r2]
00000030    f6437368    movw    r3, :lower16:((16292-56)-4)
00000034    f2c00300    movt    r3, :upper16:((16292-56)-4)
00000038        447b    add r3, pc
0000003a    f6432982    movw    r9, :lower16:((15048-66)-4)
0000003e    f2c00900    movt    r9, :upper16:((15048-66)-4)
00000042        44f9    add r9, pc
00000044    f2400c00    movw    r12, "-[LIConnection initWithURL:]"
00000048    f2c00c00    movt    r12, "-[LIConnection initWithURL:]"
0000004c    f8dde04c    ldr.w   lr, [sp, #0x4c]
00000050    f8cdc04c    str.w   r12, [sp, #0x4c]
00000054    f8cde03c    str.w   lr, [sp, #0x3c]
00000058    f8d99000    ldr.w   r9, [r9]
0000005c    f8cd9040    str.w   r9, [sp, #0x40]
00000060        681b    ldr r3, [r3]
00000062        900d    str r0, [sp, #0x34]
00000064        4608    mov r0, r1
00000066        4619    mov r1, r3
00000068        4790    blx r2
0000006a        4601    mov r1, r0
0000006c        9113    str r1, [sp, #0x4c]
0000006e        990d    ldr r1, [sp, #0x34]
00000070        900c    str r0, [sp, #0x30]
00000072        4608    mov r0, r1
00000074        990c    ldr r1, [sp, #0x30]
00000076    f7ffffc3    bl  _objc_storeStrong
0000007a        2000    movs    r0, #0x0
0000007c    f2c00000    movt    r0, "-[LIConnection initWithURL:]"
00000080        9913    ldr r1, [sp, #0x4c]
00000082        4281    cmp r1, r0
00000084        d068    beq 0x158
00000086    f64460d2    movw    r0, :lower16:((20324-142)-4)
0000008a    f2c00000    movt    r0, :upper16:((20324-142)-4)
0000008e        4478    add r0, pc
00000090        6800    ldr r0, [r0]
00000092        4601    mov r1, r0
00000094    f643720c    movw    r2, :lower16:((16300-156)-4)
00000098    f2c00200    movt    r2, :upper16:((16300-156)-4)

现在的问题是,是否有任何工具可以将上述代码(我不知道,代码的语言是什么)转换为具有objective-c 语言的高级.m 文件?

【问题讨论】:

    标签: ios objective-c xcode decompiling .a


    【解决方案1】:

    你应该看看这个程序:Hopper

    【讨论】:

    • 谢谢@Nicolas,不过看起来很复杂,难道没有更简单免费的工具可以实现这个目的吗?
    • 我不认为:这是一项非常复杂的任务。这是另一个工具:hex-rays.com/products/ida/index.shtml,它的成本要高得多,我不知道它是否可以从反汇编中重建一种 objC 程序。但存在免费版本。
    猜你喜欢
    • 2011-01-21
    • 2013-07-15
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多