macOS逆向(MindNode)


目标程序:MindNode(试用版本)

  • 目标结果1: 去除欢迎界面
  • 目标结果2: 去除30个节点限制

最终效果

工具

  • class-dump ( 逆向工程的入门级工具,导出一个App的某些信息,导出头文件)
  • Hopper Disassembler v4 ( 反编译工具,根据可执行文件反编译出汇编码)
  • gdb ( 调试器:找到想要改变的地址处的16进制代码)
  • Hex Fiend (16进制文件编辑器,要用这个修改原来的16进制文件。改变想要改变的地址处的16进制代码)

分析思路

  1. 使用Hooper反编译MindNode
  2. 使用gdb加载MindNode
    • 查找16进制(x/x 地址) 代码
  3. 使用Hex Friend编辑MindNode
    • 查找16进制(x/x 地址) 代码
  4. 重新给MindeNode签名
  • codesign -f -s 证书名 /Applications/MindNode.app/Contents/MacOS/MindNode

完成逆向



详细过程

hooper 搜索appdelegate入口

下图就是30个节点弹出框伪代码

应该就是调用了这个代码

记错汇编指令瞎改(原来可以30个节点,现在刚打开就弹出!!尴尬了)

恢复修改过的代码,继续分析

  • 监控节点数量的伪代码1
char -[MNCDocumentKVOController _mindMapObjectsEqualMaxCountForDemoVersion](void * self, void * _cmd) {
    rbx = [[self mindMapObjects] retain];
    r14 = [rbx count];
    r15 = *0x100331ad8;
    [rbx release];
    if (r14 < r15) {
            rax = 0x0;
    }
    else {
            [MNXDemoManager showCanvasObjectsExceededSheet];
            rax = 0x1;
    }
    rax = rax & 0xff;
    return rax;
}
复制代码
  • 监控节点数量的伪代码2
char -[MNCDocumentKVOController _mindMapObjectsExceedMaxCountForDemoVersion](void * self, void * _cmd) {
    rbx = [[self mindMapObjects] retain];
    r14 = [rbx count];
    r15 = *0x100331ad8;
    [rbx release];
    if (r14 > r15) {
            [MNXDemoManager showCanvasObjectsExceededSheet];
            rax = 0x1;
    }
    else {
            rax = 0x0;
    }
    rax = rax & 0xff;
    return rax;
}
复制代码
  • 对于汇编代码1

  • 对于汇编代码2

搞定这两个很明显就可以去掉限制了

有点儿激动了,希望今天可以完成任务,因为4.4号sgi截止日期的最后一天

把上面两个判断中的r15修改为比30大的数字就可以了.我设置了0xff!okay 终于去除了30个节点的限制(数一数下面的节点数肯定超过30了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值