打开了新世界的大门:Hopper Disassembler

@bleedfly的影响下,也想自己动手玩一下逆向。
记录一下第一个逆向的app : Interface Inspector 的过程。

使用工具:Hopper Disassembler Version 3.9.15 ,Hex Fiend Version 2.1.2 (200)
逆向APP:Interface Inspector Version 2.2 (17)

  1. 通过检索关键字register定位到相关注册方法:SMLicenseManager registerLicenseWithName:
  2. 此处通过verifyLicenseWithName方法判断是否为合法注册码,定位到对应汇编代码,将变更后的汇编代码翻译为字节码。
    此处通过将判断条件置反,使得无效的注册码进入有效验证码的后续逻辑,即需要将汇编代码:
    1
    000000010010f30e         je         0x10010f39b

替换为:

1
000000010010f30e         jne         0x10010f39b

  1. 通过右侧的窗口查看汇编命令对应的字节码:


根据汇编命令与字节码的对应关系:

需要将je 对应的0F 84 87 00 00 00替换为0F 85 87 00 00 00

  1. 使用mac下的字节码编辑工具Hex Fiend打开MacOs目录下的可执行文件
    执行替换时,因为0F 84 87 00 00 00对应了多个结果,这里将后一句汇编代码对应的字节码拼接上去确保结果唯一后执行替换:

  2. 保存替换之后还无法运行,因为修改过的可执行文件丢失了证书信息,需要重新对该文件进行签名操作。
    详细步骤可以参考:re-sign-apples-applications

  3. 签名之后依然无法打开,查找提示信息Signature of the Interface Inspector is broken找到程序启动完毕触发事件的监听部分:


找到跳转入口:

按照刚才的处理方法,替换此处的判断条件。

  1. 至此可以打开软件并用任意字符成功注册。