BinaryNinja 破解

大类
Util
技术标签
逆向-Windows
开发-协议脚本
优先级
Medium
状态
Maintaining
开始日期
May 17, 2022
最后更新
Jun 3, 2022
Public

抓包查看更新请求

  • 绕开SSL验证
    • 选择PythonDownloadProvider更方便绕开ssl pinning
  • 请求1:
GET https://master.binary.ninja/expiration?serial=3c4a150cfed23bafd004b96a453a852a {"ok": true, "message": "License valid until Tue May 16 2023 16:13:59 UTC+0000", "data": 1684253639, "date": 1652762123}
  • 请求2:
GET https://master.binary.ninja/update?product=Binary%20Ninja&serial=3c4a150cfed23bafd004b96a453a852a&key=51b6a10a7751e746aa9771e12b1e08fb4a83371c9756b5f859f247284786c1ce2a1d961d7973e66b53f8fa8b80b66da12f743ab710e780b2dae4ccfa310d49d260f60a037bd5f182177e983fbccc827ab0615079c7a6b3d800be10c636d1876102e0bf944813044d9b2098eba513420e8dfd722085c9053d2923fef8575df9438e6fe4018ea671fd49c2f2ee9b2c700a6c74fae0bb94cb6aa66b863c4855c8e9def5c819cc93cd73a5160faca5ba2e1feb29e4afa3ac989966880a3ecfe1ed37d95d6159296ad7b0cdd357e7636fdbf9266fce013dde2461e253f2d688b4006fee24a71e7d096bad78aac68958fbad6d83b5b011c8dfc96d432de4ad3de456cd&version=3.0.3233&platform=windows {"ok": true, "keys": [{"name": "binaryninja-v1", "key": "c5e7e09c50e5d5951141e1a635636f76", "sign": "30820122300d06092a864886f70d01010105000382010f003082010a0282010100adfbdb876bdc7b7e7116550636f6abcdc8292d3cc6e60a22541a94423fa5b835834f1bda1047d661cd3e9d2833acd24b567eceb84e0876a99aa42279822ff849619328b07402def6160d9839fb7e7018576b9286261cab58c6ed9ccca520c52c0e3ec9582da092dbefc4fdc2571f99a7be3af9c1c577e3152054fa70afe696cf8b51b28d53ef1c7421f2c4c56e5a9bf674a0bb8d47b899cf76ce98f6b58a849c9c00eaac727574203757bb56a1f4f34c920151e3584012604d3ef0af979d6b90c97ed470b3c3a4fb39b6c7f333974a800948af40ab16c7139456817ae0696f77d16a0edb36a23608464fb96b789cd9de4be5227be63e216098ef5d12831be0590203010001"}], "url": "https://cdn.binary.ninja/"}
  • 请求3:
GET https://cdn.binary.ninja/manifest/binaryninja-v1
  • 请求4:
GET https://cdn.binary.ninja/channel/release
 

解密逻辑

  • 前0x100字节:未明,应该是sign
  • 0x100~0x110:AES IV
  • 0x110~:AES加密后数据
 

更新思路

  • 绕过/update接口,硬编码key来解密更新
    • key在 6.2 发生了变化
  • 编写服务器,模拟整个接口
  • patch更新服务器地址为我的(bn.misty.moe:2053)
    • mac下patch后使用ldid -S -M签名即可运行
    • linux下需要patch inline的stack string
 

新需求:还原回更新前文件

  • 玄武的人希望能使用原版文件来绕开反盗版检查
  • 我们是patch了之后sign,因此会导致文件的patch位置与签名位置的数据变化
    • 直接对比文件不可行,因为文件实际上是由两个FAT arch拼接而成,签名后数据变化,第二个Slice的位置也相应变化
    • 方案:使用脚本解析FAT arch,针对于每个FAT arch分别进行比对,按照Page,将数据变化了的page的内容、偏移、大小存储在末尾,作为overlay。
      • 如有需要用户使用脚本将文件还原即可