《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
查看: 419|回复: 2

破解 dyjit.so 的授权使用时间

[复制链接]

86

主题

288

帖子

1137

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1137
发表于 2019-5-21 20:16:41 | 显示全部楼层 |阅读模式
定位到 dyjit.so 验证授权时间的函数是 _erfgergtergtetgrwehgryhrrjhtuj,其中判断的时间为时间戳 1544544000,2018 年 12 月 12 日,伪代码如下:
  1. int __fastcall erfgergtergtetgrwehgryhrrjhtuj(int a1)
  2. {
  3.   int v1; // r8
  4.   void *v2; // r6
  5.   void *v3; // r0
  6.   void *v4; // r4
  7.   void *v5; // r0
  8.   void *v6; // r0
  9.   double v7; // r4
  10.   int v8; // r1
  11.   void *v9; // r0
  12.   const char *v10; // r1
  13.   int v11; // r0
  14.   void *v12; // r4
  15.   void *v13; // r5
  16.   int v14; // r0
  17.   void *v15; // r4
  18.   int v16; // r5
  19.   int v17; // r0
  20.   int result; // r0
  21.   const __CFString *v19; // [sp+4h] [bp-2Ch]
  22.   const __CFString *v20; // [sp+8h] [bp-28h]
  23.   void *v21; // [sp+Ch] [bp-24h]
  24.   void *v22; // [sp+10h] [bp-20h]
  25.   int v23; // [sp+14h] [bp-1Ch]

  26.   v1 = a1;
  27.   v2 = objc_msgSend(&OBJC_CLASS___NSDate, "date");
  28.   v3 = objc_msgSend(&OBJC_CLASS___NSDateFormatter, "alloc");
  29.   v4 = objc_msgSend(v3, "init");
  30.   objc_msgSend(v4, "setDateStyle:", 2);
  31.   objc_msgSend(v4, "setTimeStyle:", 1);
  32.   objc_msgSend(v4, "setDateFormat:", CFSTR("YYYY-MM-dd HH:mm:ss"));
  33.   v5 = objc_msgSend(v4, "stringFromDate:", v2);
  34.   v6 = objc_msgSend(v4, "dateFromString:", v5);
  35.   LODWORD(v7) = objc_msgSend(v6, "timeIntervalSince1970");
  36.   HIDWORD(v7) = v8;
  37.   v9 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithFormat:", CFSTR("%d"), 1544544000);
  38.   if ( (signed int)v7 >= (signed int)objc_msgSend(v9, "longLongValue") )
  39.   {
  40.     v10 = "请升级最新版";
  41.     goto LABEL_5;
  42.   }
  43.   if ( access("/Library/MobileSubstrate/DynamicLibraries/LuaJitTK.dylib", 0) )
  44.   {
  45.     v10 = "插件不完整,运行失败";
  46. LABEL_5:
  47.     toast(v1, v10);
  48.     goto LABEL_7;
  49.   }
  50.   v11 = luaL_checklstring(v1, 1, 0);
  51.   v12 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithFormat:", CFSTR("%s"), v11);
  52.   v13 = objc_msgSend(&OBJC_CLASS___NSString, "alloc");
  53.   v14 = luaL_checklstring(v1, 2, 0);
  54.   v19 = CFSTR("bundleid");
  55.   v20 = CFSTR("luaStr");
  56.   v21 = v12;
  57.   v22 = objc_msgSend(v13, "initWithCString:encoding:", v14, 4);
  58.   v15 = objc_msgSend(
  59.           &OBJC_CLASS___NSDictionary,
  60.           "dictionaryWithObjects:forKeys:count:",
  61.           &v21,
  62.           &v19,
  63.           2,
  64.           CFSTR("bundleid"),
  65.           CFSTR("luaStr"),
  66.           v12,
  67.           v22);
  68.   v16 = CFNotificationCenterGetDistributedCenter();
  69.   v17 = CFStringCreateWithCString(0, "luajitTK", 134217984);
  70.   CFNotificationCenterPostNotification(v16, v17, 0, v15, 1);
  71. LABEL_7:
  72.   result = __stack_chk_guard - v23;
  73.   if ( __stack_chk_guard == v23 )
  74.     result = 1;
  75.   return result;
  76. }
复制代码
1544544000 对应的十六进制就是 0x5C0FDF00,操作的汇编代码是:
movw r3, #0xDF00
movt r3, #0x5C0F

如下图:
将过期时间改成 1644544000,也就是 2022/2/11 过期,对应的十六进为 0x6205C000,使用 Hopper 修改汇编代码为:
movw r3, #0xC000
movt r3, #0x6205
保存成为 dyjit_cracked.so, 完美解决。

回复

使用道具 举报

3

主题

19

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2019-11-15 14:26:34 | 显示全部楼层
大佬 dyjit是哪里的东西
回复

使用道具 举报

86

主题

288

帖子

1137

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1137
 楼主| 发表于 2019-11-16 02:30:46 | 显示全部楼层
不知道是哪的,别人发给我的,说有使用时间限制,我分析了一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2019-12-9 03:29 , Processed in 0.051466 second(s), 19 queries .

iOS安全论坛

© 2017-2019 iOS Hacker Inc.

快速回复 返回顶部 返回列表