飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8363|回复: 15

[分享] Xshell 6.x 过期验证简单分析

  [复制链接]

该用户从未签到

发表于 2019-11-13 23:02:39 | 显示全部楼层 |阅读模式
软件请从官方下载原版,切勿从国内山寨网下载。
官网:https://www.netsarang.com/zh/Xshell/

之前安装用了一下,过期了,今天需要远程,发现过期了,从网上找了注册机,还需要修改host,在沙箱运行注册机直接算号直接崩溃 ...

1.png

回家后寻思着调试一下,x64dbg 载入,下 CreateWindowsExW 无效,于是载入后直接运行,用暂停大法看堆栈,发现弹框的API
007A5C08  770CB8DB  返回到 user32.770CB8DB 自 user32.DialogBoxIndirectParamAorW

再往下翻翻,发现弹框位于模块 nslicense.dll 中,于是分析下该模块的导出函数:

2.png

于是下断点,再次运行,中断到 NSLICENSE_CheckLicense 导出函数:


  1. 01233B50 | 55                       | push ebp                                        | <NSLICENSE_CheckLicense>
  2. ...
  3. 01233D21 | E8 EA 0D 00 00           | call <nslicense.NSLICENSE_OpenRegistry>         |
  4. ...
  5. 01233D93 | E8 78 0A 00 00           | call <nslicense.NSLICENSE_GetProductKey>        |
  6. ...
  7. 01233DA5 | E8 A6 05 00 00           | call <nslicense.NSLICENSE_CloseRegistry>        |
  8. ...
  9. 01233E67 | 8B BD 58 F2 FF FF        | mov edi,dword ptr ss:[ebp-DA8]                  |
  10. 01233E6D | 8D 45 DC                 | lea eax,dword ptr ss:[ebp-24]                   |
  11. 01233E70 | 50                       | push eax                                        |
  12. 01233E71 | 57                       | push edi                                        |
  13. 01233E72 | E8 F9 08 00 00           | call <nslicense.NSLICENSE_GetMagicCode>         |
  14. 01233E77 | 83 C4 08                 | add esp,8                                       |
  15. 01233E7A | 85 C0                    | test eax,eax                                    |
  16. 01233E7C | 0F 84 9D 01 00 00        | je nslicense.123401F                            |
  17. 01233E82 | 8D 85 48 F2 FF FF        | lea eax,dword ptr ss:[ebp-DB8]                  |
  18. 01233E88 | 50                       | push eax                                        |
  19. 01233E89 | 8D 45 DC                 | lea eax,dword ptr ss:[ebp-24]                   |
  20. 01233E8C | 50                       | push eax                                        |
  21. 01233E8D | E8 AE 0B 00 00           | call <nslicense.NSLICENSE_MagicCodeToDate>      |
  22. 01233E92 | 83 C4 08                 | add esp,8                                       |
  23. 01233E95 | 85 C0                    | test eax,eax                                    |
  24. 01233E97 | 0F 84 82 01 00 00        | je nslicense.123401F                            |
  25. 01233E9D | 8D 85 38 F2 FF FF        | lea eax,dword ptr ss:[ebp-DC8]                  |
  26. 01233EA3 | 50                       | push eax                                        |
  27. 01233EA4 | E8 B7 05 00 00           | call <nslicense.NSLICENSE_GetCurrentDate>       |
  28. 01233EA9 | 8D 45 DC                 | lea eax,dword ptr ss:[ebp-24]                   |
  29. 01233EAC | 50                       | push eax                                        |
  30. 01233EAD | 53                       | push ebx                                        | ebx:IsEnterprise
  31. 01233EAE | 57                       | push edi                                        |
  32. 01233EAF | 33 F6                    | xor esi,esi                                     | esi:"Sep 26 2019"
  33. 01233EB1 | E8 9A FA FF FF           | call nslicense.1233950                          |
  34. 01233EB6 | 83 C4 10                 | add esp,10                                      |
  35. 01233EB9 | 85 C0                    | test eax,eax                                    |
  36. 01233EBB | 74 64                    | je nslicense.1233F21                            |
  37. 01233EBD | 8D 85 40 F2 FF FF        | lea eax,dword ptr ss:[ebp-DC0]                  |
  38. 01233EC3 | 50                       | push eax                                        |
  39. 01233EC4 | 8D 45 DC                 | lea eax,dword ptr ss:[ebp-24]                   |
  40. 01233EC7 | 50                       | push eax                                        |
  41. 01233EC8 | E8 73 0B 00 00           | call <nslicense.NSLICENSE_MagicCodeToDate>      |
  42. 01233ECD | 8B BD 40 F2 FF FF        | mov edi,dword ptr ss:[ebp-DC0]                  |
  43. 01233ED3 | 8B 8D 48 F2 FF FF        | mov ecx,dword ptr ss:[ebp-DB8]                  |
  44. 01233ED9 | 66 8B 95 44 F2 FF FF     | mov dx,word ptr ss:[ebp-DBC]                    |
  45. 01233EE0 | 83 C4 08                 | add esp,8                                       |
  46. 01233EE3 | 66 3B F9                 | cmp di,cx                                       |
  47. 01233EE6 | 72 1C                    | jb nslicense.1233F04                            | 比较年份
  48. 01233EE8 | 66 8B 85 42 F2 FF FF     | mov ax,word ptr ss:[ebp-DBE]                    |
  49. 01233EEF | 66 3B 85 4A F2 FF FF     | cmp ax,word ptr ss:[ebp-DB6]                    | A compare A
  50. 01233EF6 | 72 0C                    | jb nslicense.1233F04                            |
  51. 01233EF8 | 66 8B 85 4C F2 FF FF     | mov ax,word ptr ss:[ebp-DB4]                    | 08
  52. 01233EFF | 66 3B D0                 | cmp dx,ax                                       |
  53. 01233F02 | 73 2A                    | jae nslicense.1233F2E                           |
  54. 01233F04 | BE 01 00 00 00           | mov esi,1                                       | esi:"Sep 26 2019"
  55. 01233F09 | 8B CF                    | mov ecx,edi                                     |
  56. 01233F0B | 66 89 95 64 F2 FF FF     | mov word ptr ss:[ebp-D9C],dx                    |
  57. 01233F12 | 89 BD 50 F2 FF FF        | mov dword ptr ss:[ebp-DB0],edi                  |
  58. 01233F18 | 66 89 95 54 F2 FF FF     | mov word ptr ss:[ebp-DAC],dx                    |
  59. 01233F1F | EB 21                    | jmp nslicense.1233F42                           |
  60. 01233F21 | 8B 8D 48 F2 FF FF        | mov ecx,dword ptr ss:[ebp-DB8]                  |
  61. 01233F27 | 66 8B 85 4C F2 FF FF     | mov ax,word ptr ss:[ebp-DB4]                    |
  62. 01233F2E | 66 89 85 54 F2 FF FF     | mov word ptr ss:[ebp-DAC],ax                    |
  63. 01233F35 | 89 8D 50 F2 FF FF        | mov dword ptr ss:[ebp-DB0],ecx                  |
  64. 01233F3B | 66 89 85 64 F2 FF FF     | mov word ptr ss:[ebp-D9C],ax                    |
  65. 01233F42 | 89 8D 60 F2 FF FF        | mov dword ptr ss:[ebp-DA0],ecx                  |
  66. 01233F48 | C1 E9 10                 | shr ecx,10                                      |
  67. 01233F4B | 41                       | inc ecx                                         |
  68. 01233F4C | 66 89 8D 62 F2 FF FF     | mov word ptr ss:[ebp-D9E],cx                    |
  69. 01233F53 | 66 83 F9 0C              | cmp cx,C                                        | 月份 <= 12
  70. 01233F57 | 76 16                    | jbe nslicense.1233F6F                           |
  71. 01233F59 | 66 FF 85 60 F2 FF FF     | inc word ptr ss:[ebp-DA0]                       |
  72. 01233F60 | B8 F4 FF 00 00           | mov eax,FFF4                                    |
  73. 01233F65 | 66 03 C8                 | add cx,ax                                       |
  74. 01233F68 | 66 89 8D 62 F2 FF FF     | mov word ptr ss:[ebp-D9E],cx                    |
  75. 01233F6F | 8D 85 50 F2 FF FF        | lea eax,dword ptr ss:[ebp-DB0]                  |
  76. 01233F75 | 50                       | push eax                                        |
  77. 01233F76 | 8D 85 38 F2 FF FF        | lea eax,dword ptr ss:[ebp-DC8]                  |
  78. 01233F7C | 50                       | push eax                                        |
  79. 01233F7D | E8 EE 03 00 00           | call <nslicense.NSLICENSE_CompareDate>          |
  80. 01233F82 | 83 C4 08                 | add esp,8                                       |
  81. 01233F85 | 85 C0                    | test eax,eax                                    |
  82. 01233F87 | 78 65                    | js nslicense.1233FEE                            |
  83. 01233F89 | 8D 85 60 F2 FF FF        | lea eax,dword ptr ss:[ebp-DA0]                  |
  84. 01233F8F | 50                       | push eax                                        |
  85. 01233F90 | 8D 85 38 F2 FF FF        | lea eax,dword ptr ss:[ebp-DC8]                  |
  86. 01233F96 | 50                       | push eax                                        |
  87. 01233F97 | E8 D4 03 00 00           | call <nslicense.NSLICENSE_CompareDate>          |
  88. 01233F9C | 83 C4 08                 | add esp,8                                       |
  89. 01233F9F | 85 C0                    | test eax,eax                                    |
  90. 01233FA1 | 7F 4B                    | jg nslicense.1233FEE                            | 这里跳走就弹过期框了 ...
  91. 01233FA3 | BF 01 00 00 00           | mov edi,1                                       |
  92. 01233FA8 | 8B B5 68 F2 FF FF        | mov esi,dword ptr ss:[ebp-D98]                  |
  93. 01233FAE | FF B5 58 F2 FF FF        | push dword ptr ss:[ebp-DA8]                     |
  94. 01233FB4 | E8 97 03 00 00           | call <nslicense.NSLICENSE_CloseRegistry>        |
  95. ...
  96. 10003FEA | 8B E5                    | mov esp,ebp                                     |
  97. 10003FEC | 5D                       | pop ebp                                         |
  98. 10003FED | C3                       | ret                                             | 函数返回 __cdecl 方式调用 调用方来平衡堆栈
  99. 10003FEE | F7 DE                    | neg esi                                         | 下方为弹框逻辑
  100. 10003FF0 | 1B F6                    | sbb esi,esi                                     |
  101. ...
复制代码


大体思路应该就是读取存储的安装时间,然后 GetCurrentDate 获取今天的日期,比较下是否过期,过期就弹框阻止运行。

于是拿出 Baymax 来验证下思路,断点地址选择导出函数:NSLICENSE_CheckLicense

设置函数直接返回(因为函数就是验证是否过期,直接返回就好),该函数返回 __cdecl 方式调用,调用方来平衡堆栈,所以这里记得需要设置栈调整为4

4.png

Baymax 设置如图:

3.png


Test OK!补丁后程序可以运行,Done ...



评分

参与人数 7威望 +11 飘云币 +11 收起 理由
wwj402 + 1 + 1 原创精品 感谢分享!
Arsage + 1 + 1 赞一个,这个帖子很给力!
egaokiss + 1 + 1 意思是最后一张图就搞定了....
panpan8848 + 5 + 5 原创精品 感谢分享!
不破不立 + 1 + 1
smallhorse + 1 + 1 赞一个,这个帖子很给力!
wkxq + 1 + 1 赞一个,这个帖子很给力!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 07:25
  • 签到天数: 429 天

    [LV.9]以坛为家II

    发表于 2019-11-14 07:42:09 | 显示全部楼层
    讲的很详细,谢谢分享。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 21:06
  • 签到天数: 1373 天

    [LV.10]以坛为家III

    发表于 2019-11-14 07:51:30 | 显示全部楼层
    卧槽,又学一招,校长藏了那么多妓术!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:08
  • 签到天数: 2199 天

    [LV.Master]伴坛终老

    发表于 2019-11-14 07:56:46 | 显示全部楼层
    一篇分析加补丁工具使用的实战教程
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 08:30
  • 签到天数: 444 天

    [LV.9]以坛为家II

    发表于 2019-11-14 08:36:15 | 显示全部楼层
    大白实用教学!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-15 08:00
  • 签到天数: 1919 天

    [LV.Master]伴坛终老

    发表于 2019-11-14 08:39:26 | 显示全部楼层
    感谢表哥,您辛苦了。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:20
  • 签到天数: 1852 天

    [LV.Master]伴坛终老

    发表于 2019-11-14 09:53:59 | 显示全部楼层
    受教了。简单易懂。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 20:44
  • 签到天数: 2130 天

    [LV.Master]伴坛终老

    发表于 2019-11-14 22:53:25 | 显示全部楼层
    學習學習校長的分析,但過於高深只能膜拜
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-11-15 16:40:46 | 显示全部楼层
    受教了。简单易懂。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-28 11:05
  • 签到天数: 82 天

    [LV.6]常住居民II

    发表于 2019-12-25 02:26:00 | 显示全部楼层
    太强了。坐沙发学习一
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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