飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 10675|回复: 16

[macOS] SQLProSQLite.1.0.49c(1.x通用)算法分析+keygen代码

[复制链接]
  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2015-6-13 17:57:00 | 显示全部楼层 |阅读模式
    官方下载:https://www.sqlitepro.com/

    伸手党传送门:
    SQLProSQLite/SQLProMSSQL/SQLProMySQL 1.x  KeyGen
    https://www.chinapyg.com/thread-79312-1-1.html
    (出处: 中国飘云阁(PYG官方论坛) )

    1.打开软件输入试探信息:
    reg.png

    然后hopper搜索关键字, Invalid License  无果!

    2.命令行运行主程序发现有日志输出
    2015-06-13 17:39:10:334 SQLPro for SQLite[1846:513] Check license called   

    这次找到了切入点:
    1.                      cfstring_Check_license_called:
    2. 0000000100224cb0         dq         ___CFConstantStringClassReference, 0x7c8, 0x1001c2294, 0x14 ; "Check license called", XREF=-[Document checkLicense]+47
    复制代码
    找到函数分析下:
    1.                      -[Document checkLicense]:
    2. 0000000100004971         push       rbp                                         ; Objective C Implementation defined at 0x100231590 (instance)
    3. 0000000100004972         mov        rbp, rsp
    4. 0000000100004975         push       r15
    5. 0000000100004977         push       r14
    6. 0000000100004979         push       r13
    7. 000000010000497b         push       r12
    8. 000000010000497d         push       rbx
    9. 000000010000497e         sub        rsp, 0x68
    10. 0000000100004982         mov        qword [ss:rbp+var_30], rdi
    11. 0000000100004986         mov        rdi, qword [ds:objc_cls_ref_DDLog]          ; argument "instance" for method _objc_msgSend
    12. 000000010000498d         mov        rsi, qword [ds:0x100255530]                 ; @selector(log:level:flag:context:file:function:line:tag:format:), argument "selector" for method _objc_msgSend
    13. 0000000100004994         mov        edx, 0x1
    14. 0000000100004999         mov        ecx, 0x1f
    15. 000000010000499e         xor        eax, eax
    16. 00000001000049a0         lea        rbx, qword [ds:cfstring_Check_license_called] ; @"Check license called"
    17. 00000001000049a7         mov        qword [ss:rsp+0x20], rbx
    18. 00000001000049ac         lea        r12, qword [ds:0x1001c227b]                 ; "-[Document checkLicense]"
    19. 00000001000049b3         mov        qword [ss:rsp+0x8], r12
    20. 00000001000049b8         lea        r15, qword [ds:0x1001c2024]                 ; "/Users/kylehankinson/Code/SQLitePro/OSX/SQLite Toolbox/Document.m"
    21. 00000001000049bf         mov        qword [ss:rsp], r15
    22. 00000001000049c3         mov        qword [ss:rsp+0x18], 0x0
    23. 00000001000049cc         mov        qword [ss:rsp+0x10], 0x267
    24. 00000001000049d5         mov        r13, qword [ds:imp___got__objc_msgSend]
    25. 00000001000049dc         mov        r8d, 0x10
    26. 00000001000049e2         xor        r9d, r9d
    27. 00000001000049e5         call       r13                                         ; _objc_msgSend
    28.                                        ; HSLicense类
    29. 00000001000049e8         mov        rdi, qword [ds:objc_cls_ref_HSLicense]
    30. 00000001000049ef         mov        rsi, qword [ds:0x1002555f8]                 ; @selector(sharedInstance)
    31. 00000001000049f6         call       r13
    32. 00000001000049f9         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    33. 00000001000049fc         call       imp___stubs__objc_retainAutoreleasedReturnValue
    34. 0000000100004a01         mov        rbx, rax
    35.                                        ; 验证函数在此!
    36. 0000000100004a04         mov        rsi, qword [ds:0x100255600]                 ; @selector(isLicensed)
    37. 0000000100004a0b         mov        rdi, rbx
    38. 0000000100004a0e         call       r13
    39. 0000000100004a11         mov        r14b, al
    40. 0000000100004a14         mov        rdi, rbx
    41. 0000000100004a17         call       qword [ds:imp___got__objc_release]
    42. 0000000100004a1d         test       r14b, r14b
    43. 0000000100004a20         je         0x100004b9b
    44. .
    45. .
    46. .
    47. .
    48.                         ; endp
    复制代码
    HSLicense类  isLicensed方法
    继续寻找,发现悲催了!找不到这个类~~

    上lldb:

    (lldb) target create "/Users/luowei/Downloads/SQLProSQLite.app/Contents/MacOS/SQLPro for SQLite"

    0.png

    恩定位到了,在HSShared.framework里面~~

    3.hopper载入HSShared分析:
    1.                      -[HSLicense isLicensed]:
    2. 000000000003f463         push       rbp                                         ; Objective C Implementation defined at 0x1394e0 (instance)
    3. 000000000003f464         mov        rbp, rsp
    4. 000000000003f467         push       r15
    5. 000000000003f469         push       r14
    6. 000000000003f46b         push       r13
    7. 000000000003f46d         push       r12
    8. 000000000003f46f         push       rbx
    9. 000000000003f470         push       rax
    10. 000000000003f471         mov        r14, rdi
    11. 000000000003f474         mov        rsi, qword [ds:0x158a98]                    ; @selector(licensedEmail)
    12. 000000000003f47b         mov        r13, qword [ds:imp___got__objc_msgSend]
    13. 000000000003f482         call       r13                                         ; _objc_msgSend
    14. 000000000003f485         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    15. 000000000003f488         call       imp___stubs__objc_retainAutoreleasedReturnValue
    16. 000000000003f48d         mov        r12, rax
    17. 000000000003f490         mov        rsi, qword [ds:0x156f40]                    ; @selector(length)
    18. 000000000003f497         mov        rdi, r12
    19. 000000000003f49a         call       r13
    20. 000000000003f49d         test       rax, rax
    21. 000000000003f4a0         je         0x3f555

    22. 000000000003f4a6         mov        rsi, qword [ds:0x158860]                    ; @selector(rangeOfString:options:), argument "selector" for method imp___got__objc_msgSend
    23. 000000000003f4ad         lea        rdx, qword [ds:cfstring__noy_com]           ; @"@noy.com"
    24. 000000000003f4b4         mov        ecx, 0x1
    25. 000000000003f4b9         mov        rdi, r12
    26. 000000000003f4bc         call       qword [ds:imp___got__objc_msgSend]
    27. 000000000003f4c2         movabs     rcx, 0x7fffffffffffffff
    28. 000000000003f4cc         cmp        rax, rcx
    29. 000000000003f4cf         jne        0x3f555

    30. 000000000003f4d5         mov        rdi, qword [ds:objc_cls_ref_NSUserDefaults]
    31. 000000000003f4dc         mov        rsi, qword [ds:0x158a70]                    ; @selector(standardUserDefaults)
    32. 000000000003f4e3         call       r13
    33. 000000000003f4e6         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    34. 000000000003f4e9         call       imp___stubs__objc_retainAutoreleasedReturnValue
    35. 000000000003f4ee         mov        rbx, rax
    36. 000000000003f4f1         mov        rsi, qword [ds:0x157cf8]                    ; @selector(objectForKey:)
    37. 000000000003f4f8         lea        rdx, qword [ds:cfstring_LicensedKey]        ; @"LicensedKey"
    38. 000000000003f4ff         mov        rdi, rbx
    39. 000000000003f502         call       r13
    40. 000000000003f505         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    41. 000000000003f508         call       imp___stubs__objc_retainAutoreleasedReturnValue
    42. 000000000003f50d         mov        r15, rax
    43. 000000000003f510         mov        rdi, rbx
    44. 000000000003f513         call       qword [ds:imp___got__objc_release]
    45. 000000000003f519         test       r12, r12
    46. 000000000003f51c         je         0x3f551

    47. 000000000003f51e         mov        rsi, qword [ds:0x156f40]                    ; @selector(length), argument "selector" for method imp___got__objc_msgSend
    48. 000000000003f525         mov        rdi, r12
    49. 000000000003f528         call       qword [ds:imp___got__objc_msgSend]
    50. 000000000003f52e         xor        ebx, ebx
    51. 000000000003f530         cmp        rax, 0x3
    52. 000000000003f534         jb         0x3f58f

    53. 000000000003f536         test       r15, r15
    54. 000000000003f539         je         0x3f58f

    55. 000000000003f53b         mov        rsi, qword [ds:0x156f40]                    ; @selector(length), argument "selector" for method imp___got__objc_msgSend
    56. 000000000003f542         mov        rdi, r15
    57. 000000000003f545         call       qword [ds:imp___got__objc_msgSend]
    58. 000000000003f54b         cmp        rax, 0x3
    59. 000000000003f54f         jae        0x3f559

    60. 000000000003f551         xor        ebx, ebx                                    ; XREF=-[HSLicense isLicensed]+185
    61. 000000000003f553         jmp        0x3f58f

    62. 000000000003f555         xor        ebx, ebx                                    ; XREF=-[HSLicense isLicensed]+61, -[HSLicense isLicensed]+108
    63. 000000000003f557         jmp        0x3f598

    64. 000000000003f559         mov        rsi, qword [ds:0x158aa0]                    ; @selector(licenseForEmailAddress:), XREF=-[HSLicense isLicensed]+236
    65. 000000000003f560         mov        rdi, r14
    66. 000000000003f563         mov        rdx, r12
    67.                                        ; 继续调用 @selector(licenseForEmailAddress:) 函数进行验证
    68. 000000000003f566         call       r13
    69. 000000000003f569         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    70. 000000000003f56c         call       imp___stubs__objc_retainAutoreleasedReturnValue
    71. 000000000003f571         mov        r14, rax
    72. 000000000003f574         mov        rsi, qword [ds:0x157498]                    ; @selector(isEqualToString:)
    73. 000000000003f57b         mov        rdi, r14
    74. 000000000003f57e         mov        rdx, r15
    75. 000000000003f581         call       r13
    76. 000000000003f584         mov        bl, al
    77. 000000000003f586         mov        rdi, r14
    78. 000000000003f589         call       qword [ds:imp___got__objc_release]

    79. 000000000003f58f         mov        rdi, r15                                    ; XREF=-[HSLicense isLicensed]+209, -[HSLicense isLicensed]+214, -[HSLicense isLicensed]+240
    80. 000000000003f592         call       qword [ds:imp___got__objc_release]

    81. 000000000003f598         mov        rdi, r12                                    ; XREF=-[HSLicense isLicensed]+244
    82. 000000000003f59b         call       qword [ds:imp___got__objc_release]
    83. 000000000003f5a1         movsx      eax, bl
    84. 000000000003f5a4         add        rsp, 0x8
    85. 000000000003f5a8         pop        rbx
    86. 000000000003f5a9         pop        r12
    87. 000000000003f5ab         pop        r13
    88. 000000000003f5ad         pop        r14
    89. 000000000003f5af         pop        r15
    90. 000000000003f5b1         pop        rbp
    91. 000000000003f5b2         ret        
    92.                         ; endp
    复制代码
    ; 继续调用 @selector(licenseForEmailAddress:) 函数进行验证

    4.直达核心函数:
    1.                      -[HSLicense licenseForEmailAddress:]:
    2. 000000000003f111         push       rbp                                         ; Objective C Implementation defined at 0x139498 (instance)
    3. 000000000003f112         mov        rbp, rsp
    4. 000000000003f115         push       r15
    5. 000000000003f117         push       r14
    6. 000000000003f119         push       r13
    7. 000000000003f11b         push       r12
    8. 000000000003f11d         push       rbx
    9. 000000000003f11e         sub        rsp, 0x18
    10. 000000000003f122         mov        r15, rdi
    11. 000000000003f125         mov        r14, qword [ds:objc_cls_ref_NSString]
    12.                                        ; Email转小写
    13. 000000000003f12c         mov        rsi, qword [ds:0x158a80]                    ; @selector(lowercaseString)
    14. 000000000003f133         mov        r12, qword [ds:imp___got__objc_msgSend]
    15. 000000000003f13a         mov        rdi, rdx                                    ; argument "instance" for method _objc_msgSend
    16. 000000000003f13d         call       r12                                         ; _objc_msgSend
    17. 000000000003f140         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    18. 000000000003f143         call       imp___stubs__objc_retainAutoreleasedReturnValue
    19. 000000000003f148         mov        r13, rax
    20.                                        ; licenseSecret由主程序传入的常量 --- 待会再找!!
    21. 000000000003f14b         mov        rax, qword [ds:_OBJC_IVAR_$_HSLicense.licenseSecret]
    22. 000000000003f152         mov        r8, qword [ds:r15+rax]
    23. 000000000003f156         mov        r15, r12
    24. 000000000003f159         mov        rsi, qword [ds:0x157180]                    ; @selector(stringWithFormat:)
    25.                                        ; Email+licenseSecret常量
    26. 000000000003f160         lea        rdx, qword [ds:cfstring______121470]        ; @"%@%@"
    27. 000000000003f167         xor        eax, eax
    28. 000000000003f169         mov        rdi, r14
    29. 000000000003f16c         mov        rcx, r13
    30. 000000000003f16f         call       r15
    31. 000000000003f172         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    32. 000000000003f175         call       imp___stubs__objc_retainAutoreleasedReturnValue
    33. 000000000003f17a         mov        rbx, rax
    34. 000000000003f17d         mov        qword [ss:rbp+var_38], rbx
    35. 000000000003f181         mov        rdi, r13
    36. 000000000003f184         call       qword [ds:imp___got__objc_release]
    37. 000000000003f18a         mov        rdi, qword [ds:objc_cls_ref_HSLicense]
    38.                                        ; Email+licenseSecret常量 进行md5运算
    39. 000000000003f191         mov        rsi, qword [ds:0x158a88]                    ; @selector(MD5String:)
    40. 000000000003f198         mov        rdx, rbx
    41. 000000000003f19b         call       r15
    42. 000000000003f19e         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    43. 000000000003f1a1         call       imp___stubs__objc_retainAutoreleasedReturnValue
    44. 000000000003f1a6         mov        rbx, rax
    45. 000000000003f1a9         mov        qword [ss:rbp+var_30], rbx
    46.                                        ; 定义一个NSMutableString变量,处理上面MD5字符串
    47. 000000000003f1ad         mov        rdi, qword [ds:objc_cls_ref_NSMutableString]
    48. 000000000003f1b4         mov        rsi, qword [ds:0x1574f8]                    ; @selector(string)
    49. 000000000003f1bb         call       r15
    50. 000000000003f1be         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    51. 000000000003f1c1         call       imp___stubs__objc_retainAutoreleasedReturnValue
    52. 000000000003f1c6         mov        r13, rax
    53. 000000000003f1c9         mov        rsi, qword [ds:0x156f40]                    ; @selector(length)
    54. 000000000003f1d0         mov        rdi, rbx
    55. 000000000003f1d3         call       r15
    56. 000000000003f1d6         mov        rbx, rax
    57. 000000000003f1d9         test       rbx, rbx
    58. 000000000003f1dc         jle        0x3f227

    59. 000000000003f1de         mov        r14, qword [ds:0x157500]                    ; @selector(appendString:)

    60. 000000000003f1e5         lea        rdx, qword [ds:rbx+0xffffffffffffffff]      ; XREF=-[HSLicense licenseForEmailAddress:]+276
    61. 000000000003f1e9         mov        ecx, 0x1
    62. 000000000003f1ee         mov        rdi, qword [ss:rbp+var_30]
    63. 000000000003f1f2         mov        rsi, qword [ds:0x157430]                    ; @selector(substringWithRange:)
    64. 000000000003f1f9         call       r15
    65. 000000000003f1fc         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    66. 000000000003f1ff         call       imp___stubs__objc_retainAutoreleasedReturnValue
    67. 000000000003f204         mov        r12, r15
    68. 000000000003f207         mov        r15, rax
    69. 000000000003f20a         mov        rdi, r13
    70. 000000000003f20d         mov        rsi, r14
    71. 000000000003f210         mov        rdx, r15
    72. 000000000003f213         call       r12
    73. 000000000003f216         mov        rdi, r15                                    ; argument "instance" for method imp___got__objc_release
    74. 000000000003f219         mov        r15, r12
    75. 000000000003f21c         call       qword [ds:imp___got__objc_release]
    76. 000000000003f222         dec        rbx
    77. 000000000003f225         jg         0x3f1e5

    78. 000000000003f227         mov        rdi, qword [ds:objc_cls_ref_HSLicense]      ; XREF=-[HSLicense licenseForEmailAddress:]+203
    79.                                        ; 这个函数对MD5字符串插入分隔符“-”
    80. 000000000003f22e         mov        rsi, qword [ds:0x158a90]                    ; @selector(hyphonate:everyX:)
    81. 000000000003f235         mov        ecx, 0x6
    82. 000000000003f23a         mov        rdx, r13
    83.                                        ; 调用后,返回 3A9F57-A219DB-F88F1C-D2C827-43FC01-3D
    复制代码

    1.png


    1. 000000000003f23d         call       r15
    2. 000000000003f240         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    3. 000000000003f243         call       imp___stubs__objc_retainAutoreleasedReturnValue
    4. 000000000003f248         mov        rbx, rax
    5. 000000000003f24b         mov        rsi, qword [ds:0x158860]                    ; @selector(rangeOfString:options:)
    6.                                        ; 简单正则匹配!!从尾部开始匹配 “-”号
    7. 000000000003f252         lea        rdx, qword [ds:cfstring___1213f0]           ; @"-"
    8.                                        ; NSBackwardsSearch = 4
    9. 000000000003f259         mov        ecx, 0x4
    10. 000000000003f25e         mov        rdi, rbx
    11. 000000000003f261         call       r15
    12. 000000000003f264         mov        rsi, qword [ds:0x157f38]                    ; @selector(substringToIndex:)
    13.                                        ; 截取最后一个“-”前面的字符串~  这里搞复杂了,其实就是对0xF  byte进行处理就行
    14. 000000000003f26b         mov        rdi, rbx
    15. 000000000003f26e         mov        rdx, rax
    16.                                        ; 调用后返回:3A9F57-A219DB-F88F1C-D2C827-43FC01
    17. 000000000003f271         call       r15
    18. 000000000003f274         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    19. 000000000003f277         call       imp___stubs__objc_retainAutoreleasedReturnValue
    20. 000000000003f27c         mov        r14, rax
    21. 000000000003f27f         mov        r12, r15
    22. 000000000003f282         mov        r15, qword [ds:imp___got__objc_release]
    23. 000000000003f289         mov        rdi, rbx                                    ; argument "instance" for method _objc_release
    24. 000000000003f28c         call       r15                                         ; _objc_release
    25.                                        ; 转大写
    26. 000000000003f28f         mov        rsi, qword [ds:0x157448]                    ; @selector(uppercaseString)
    27. 000000000003f296         mov        rdi, r14
    28.                                        ; 调用后即为正确注册码!!!
    复制代码


    2.png

    1. 000000000003f299         call       r12
    2. 000000000003f29c         mov        rdi, rax                                    ; argument "instance" for method imp___stubs__objc_retainAutoreleasedReturnValue
    3. 000000000003f29f         call       imp___stubs__objc_retainAutoreleasedReturnValue
    4. 000000000003f2a4         mov        rbx, rax
    5. 000000000003f2a7         mov        rdi, r14
    6. 000000000003f2aa         call       r15
    7. 000000000003f2ad         mov        rdi, r13
    8. 000000000003f2b0         call       r15
    9. 000000000003f2b3         mov        rdi, qword [ss:rbp+var_30]
    10. 000000000003f2b7         call       r15
    11. 000000000003f2ba         mov        rdi, qword [ss:rbp+var_38]
    12. 000000000003f2be         call       r15
    13. 000000000003f2c1         mov        rdi, rbx                                    ; argument "instance" for method imp___stubs__objc_autoreleaseReturnValue
    14. 000000000003f2c4         add        rsp, 0x18
    15. 000000000003f2c8         pop        rbx
    16. 000000000003f2c9         pop        r12
    17. 000000000003f2cb         pop        r13
    18. 000000000003f2cd         pop        r14
    19. 000000000003f2cf         pop        r15
    20. 000000000003f2d1         pop        rbp
    21. 000000000003f2d2         jmp        imp___stubs__objc_autoreleaseReturnValue
    22.                         ; endp
    23. [align=left]
    复制代码
    后继续分析知道licenseSecret由主程序调用-[HSLicense initializeWithLicenseSecret:storeURL:daysForTrial:]: 传入:

    key.png

    keygen代码:

    1. #include <CommonCrypto/CommonDigest.h>

    2. NSString *keygen(NSString *email){
    3.     // 转小写
    4.     email = [email lowercaseString];
    5.     NSString *str = [email stringByAppendingString:@"secretPa$wordForSQLiteProfessional"];
    6.     NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    7.     unsigned char md5[CC_MD5_DIGEST_LENGTH];
    8.     CC_MD5(data.bytes, (CC_LONG)data.length, md5);
    9.     NSLog(@"data = %@", data);
    10.     for (int i = 0; i < sizeof(md5); i++) {
    11.         printf("%.2X ", md5[i]);
    12.     }
    13.     printf("\n\n");
    14.    
    15.     NSMutableString *key = [[NSMutableString alloc] init];
    16.     for (int i = 0; i < sizeof(md5) - 1; i++) {
    17.         [key appendFormat:@"%02X", md5[i]];
    18.     }
    19.     //NSLog(@"key = %@", key);
    20.    
    21.     // 插入分隔符
    22.     for (int i = 0; i < 4; i++) {
    23.         [key insertString:@"-" atIndex:6*(i+1)+i];
    24.     }
    25.     // 可以省略~~
    26.     // [key uppercaseString];
    27.     return key;
    28. }

    29. int main(int argc, const char * argv[]) {
    30.     @autoreleasepool {
    31.         NSLog(@"SN = %@", keygen(@"piaoyun04@163.com"));
    32.     }
    33.     return 0;
    34. }
    复制代码


    KO:
    KO.png

    评分

    参与人数 7威望 +92 飘云币 +124 收起 理由
    MOV + 20 + 40 很给力! 牛牪犇
    lxcjy + 4 + 4 赞一个!
    maxwell + 4 赞一个!
    Dxer + 20 + 20 要有mac才能演示啊。
    crackvip + 16 + 12
    0xcb + 8 + 8 待会演习一遍~学习啦
    GGLHY + 20 + 40 牛犇!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2015-6-13 18:06:04 | 显示全部楼层
    前排学习~~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2015-6-13 18:29:44 | 显示全部楼层
    当软件都非常熟悉使用时,发现思路是那么的重要~{:soso_e179:}
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2021-9-29 15:05
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2015-6-13 19:10:34 | 显示全部楼层
    本帖最后由 wx_f1Jji177 于 2015-6-13 19:26 编辑

    赞,学习啦,这软件竟然比较真码,,sql的工具还是Navicat Premium强悍
    弹窗需要授权的时候是有日志的:
    1. 2015-06-13 19:18:07:602 SQLPro for SQLite[16879:507] Check license called
    2. 2015-06-13 19:18:07:602 SQLPro for SQLite[16879:507] Is not licensed.
    复制代码
    断点br s -n  NSLogv


    分析发现:后缀@noy.com的邮箱算出来的验证码是被列入黑名单的,邮箱长度大于等于3,

    点评

    黑名单代码不用管它了,我没贴出来,因为没人用 @noy.com算号~  详情 回复 发表于 2015-6-13 19:33
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-13 19:33:41 | 显示全部楼层
    wx_f1Jji177 发表于 2015-6-13 19:10
    赞,学习啦,这软件竟然比较真码,,sql的工具还是Navicat Premium强悍
    弹窗需要授权的时候是有 ...

    黑名单代码不用管它了,我没贴出来,因为没人用 @noy.com算号~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-13 19:34:15 | 显示全部楼层
    伸手党传送门:
    SQLProSQLite/SQLProMSSQL/SQLProMySQL 1.x  KeyGen
    https://www.chinapyg.com/thread-79312-1-1.html
    (出处: 中国飘云阁(PYG官方论坛) )
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-10-19 08:50
  • 签到天数: 91 天

    [LV.6]常住居民II

    发表于 2015-6-14 10:22:04 | 显示全部楼层
    老大太厉害了,真的适合分析算法
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2015-10-29 08:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-6-15 09:05:24 | 显示全部楼层
    欢迎更多的小伙伴在老大的带领下进入Apple领域。。。
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2023-12-8 14:34
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2015-6-15 23:42:38 | 显示全部楼层
    飘总威武{:soso_e130:}
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2021-5-11 00:02
  • 签到天数: 672 天

    [LV.9]以坛为家II

    发表于 2015-6-21 11:28:01 | 显示全部楼层
    非常棒的算法分析,认真学习!!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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