飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11461|回复: 26

[原创] AVS Vidoe Editor 7.5 验证分析

[复制链接]

该用户从未签到

发表于 2017-6-29 00:21:33 | 显示全部楼层 |阅读模式
下午看到群里有人提到 AVS Vidoe Editor 的效果要胜过会声会影,于是从官方拖了一个看下效果。
官方网站:http://www.avs4you.com/

将程序安装到 D:\Program Files (x86)\AVS4YOU\AVSVideoEditor 目录
点注册后却打开 C:\Program Files (x86)\AVS4YOU\Registration.exe 程序来验证 ...


  1. 0018F328   00A69B6C  /CALL 到 CreateProcessA 来自 AVSVideo.00A69B67
  2. 0018F32C   0018F3C0  |ModuleFileName = "C:\Program Files (x86)\AVS4YOU\Registration.exe"
  3. 0018F330   0E379120  |CommandLine = "C:\PROGRA~2\AVS4YOU\REGIST~1.EXE "-reg:Software\AVS4YOU\VideoEditor""
  4. 0018F334   0018F3B4  |pProcessSecurity = 0018F3B4
  5. 0018F338   0018F3B4  |pThreadSecurity = 0018F3B4
  6. 0018F33C   00000001  |InheritHandles = TRUE
  7. 0018F340   00000000  |CreationFlags = 0
  8. 0018F344   00000000  |pEnvironment = NULL
  9. 0018F348   00000000  |CurrentDir = NULL
  10. 0018F34C   0018F370  |pStartupInfo = 0018F370
  11. 0018F350   0018F360  \pProcessInfo = 0018F360
复制代码

于是乎,该公司的验证模式可能为通过进程间交换(传参)实现注册验证。也可能还有网络验证,如果注册信息是由Registration.exe来保存(也可以通过共享内存来传递给AVSVideoEditor.exe),那AVSVideoEditor.exe启动的时候一定会去读取保存的注册信息。懒得去看如何保存了,直接分析主程序的启动验证。


我们发现未注册窗口标题可以作为突破点:
01.jpg

但是右键搜索字符串却没有找到,所以该资源可能存在文本后其他DLL的资源中。我们在 AVSVideoEditor.sib 文件中发现该资源,资源字符串未 IDS_0, 搜索该字符串并下断。
00.jpg

  1. 004E3508  |.  E8 F3090000   CALL    AVSVideo.@TLicenceManager@%GetActualLicence$i$i12$%$qqrl$l
  2. 004E350D  |.  85C0          TEST    EAX, EAX                                                      ;  kernel32.BaseThreadInitThunk
  3. 004E350F  |.  0F8D ED000000 JGE     AVSVideo.004E3602
  4. 004E3515  |.  66:C746 10 48>MOV     WORD PTR DS:[ESI+10], 48
  5. 004E351B  |.  8D45 C4       LEA     EAX, DWORD PTR SS:[EBP-3C]
  6. 004E351E  |.  E8 2912F2FF   CALL    AVSVideo.0040474C
  7. 004E3523  |.  50            PUSH    EAX                                                           ;  kernel32.BaseThreadInitThunk
  8. 004E3524  |.  FF46 1C       INC     DWORD PTR DS:[ESI+1C]
  9. 004E3527  |.  BA 7C72B300   MOV     EDX, AVSVideo.00B3727C                                        ;  IDS_0

复制代码

在这里断下来了,并且我们发现了这个函数名:@TLicenceManager@%GetActualLicence$i$i12$%$qqrl$l
O(∩_∩)O哈哈~ 简直就是败笔,这个是导出函数名 ...
修改后发现显示关于等功能还是提示未注册,按道理来说肯定是在相同的函数中做验证,按这个思路试着找下特征码:

  1. 004E3FB7    43              INC     EBX
  2. 004E3FB8    8B4D D4         MOV     ECX, DWORD PTR SS:[EBP-2C]
  3. 004E3FBB    8B79 0C         MOV     EDI, DWORD PTR DS:[ECX+C]
  4. 004E3FBE    3B5F 08         CMP     EBX, DWORD PTR DS:[EDI+8]
  5. 004E3FC1  ^ 0F8C 59FFFFFF   JL      AVSVideo.004E3F20
  6. 004E3FC7    83C8 FF         OR      EAX, FFFFFFFF                    // EAX 不能返回 FFFFFFFF
  7. 004E3FCA    8B55 D8         MOV     EDX, DWORD PTR SS:[EBP-28]
  8. 004E3FCD    64:8915 0000000>MOV     DWORD PTR FS:[0], EDX
  9. 004E3FD4    5F              POP     EDI                              ; AVSVideo.009D79CC
  10. 004E3FD5    5E              POP     ESI                              ; AVSVideo.009D79CC
  11. 004E3FD6    5B              POP     EBX                              ; AVSVideo.009D79CC
  12. 004E3FD7    8BE5            MOV     ESP, EBP
  13. 004E3FD9    5D              POP     EBP                              ; AVSVideo.009D79CC
  14. 004E3FDA    C3              RETN
复制代码


特征码:0F 8C 59 FF FF FF 83 C8 FF 找到五处。果然如此 ...

修改后保存,程序没有校验,但是启动的时候还有一处弹框。我们定位下这里弹窗验证了什么:


  1. 004E6EA8    803D B8D5D500 0>CMP     BYTE PTR DS:[D5D5B8], 0
  2. 004E6EAF    74 3A           JE      SHORT AVSVideo.004E6EEB
  3. 004E6EB1    6A 01           PUSH    1
  4. 004E6EB3    6A 00           PUSH    0
  5. 004E6EB5    66:C745 E4 0C00 MOV     WORD PTR SS:[EBP-1C], 0C
  6. 004E6EBB    BA F475B300     MOV     EDX, AVSVideo.00B375F4           ; ASCII "MainForm::StartTimerOnTimer() - begin...\r\n"
  7. 004E6EC0    8D45 FC         LEA     EAX, DWORD PTR SS:[EBP-4]
  8. 004E6EC3    E8 7C7F5800     CALL    AVSVideo.00A6EE44
  9. 004E6EC8    FF45 F0         INC     DWORD PTR SS:[EBP-10]
  10. 004E6ECB    8B10            MOV     EDX, DWORD PTR DS:[EAX]
  11. 004E6ECD    52              PUSH    EDX
  12. 004E6ECE    68 ACD5D500     PUSH    AVSVideo.00D5D5AC
  13. 004E6ED3    E8 F0DEF1FF     CALL    AVSVideo.00404DC8
  14. 004E6ED8    83C4 10         ADD     ESP, 10
  15. 004E6EDB    FF4D F0         DEC     DWORD PTR SS:[EBP-10]
  16. 004E6EDE    8D45 FC         LEA     EAX, DWORD PTR SS:[EBP-4]
  17. 004E6EE1    BA 02000000     MOV     EDX, 2
  18. 004E6EE6    E8 A9825800     CALL    AVSVideo.00A6F194
  19. 004E6EEB    6A 04           PUSH    4
  20. 004E6EED    8B8B C0080000   MOV     ECX, DWORD PTR DS:[EBX+8C0]
  21. 004E6EF3    51              PUSH    ECX
  22. 004E6EF4    E8 57830500     CALL    AVSVideo.0053F250                ; 这个函数跟进 ...
  23. 004E6EF9    83C4 08         ADD     ESP, 8
  24. 004E6EFC    E8 2F530400     CALL    AVSVideo.0052C230
  25. 004E6F01    80B8 94000000 0>CMP     BYTE PTR DS:[EAX+94], 0
  26. 004E6F08    74 19           JE      SHORT AVSVideo.004E6F23

  27. 跟进 0053F250

  28. 0053F290    E8 B342FFFF     CALL    AVSVideo.@TLicenceManager@GetActualLicence$qqrlrd     // 又一次验证 ...
  29. 0053F295    8945 80         MOV     DWORD PTR SS:[EBP-80], EAX


复制代码



函数名字都一样,败笔就是你编译lib的时候把函数导出名倒是去掉呀 ... 把这个验证返回值修改就不会弹未注册了,下方还有一处验证剩余多少天,由于没有注册信息会显示0天不过就显示一次不影响使用。

  1. 0053F73E    E8 FD2D1F00     CALL    AVSVideo.@AVSRegistry@$bdtr$qv   ; 注册后只弹一次框
  2. 0053F743    66:C747 10 1800 MOV     WORD PTR DS:[EDI+10], 18
  3. 0053F749    83C4 08         ADD     ESP, 8
  4. 0053F74C    84DB            TEST    BL, BL
  5. 0053F74E    74 12           JE      SHORT AVSVideo.0053F762          ; JMP 就不会弹窗
  6. 0053F750    8D45 FC         LEA     EAX, DWORD PTR SS:[EBP-4]
  7. 0053F753    50              PUSH    EAX
  8. 0053F754    E8 C3000000     CALL    AVSVideo.0053F81C
  9. 0053F759    59              POP     ECX                              ; 0018FAFC
  10. 0053F75A    8B10            MOV     EDX, DWORD PTR DS:[EAX]          ; AVSVideo.00B71D28
  11. 0053F75C    FF92 FC000000   CALL    NEAR DWORD PTR DS:[EDX+FC]       ; 弹框
  12. 0053F762    FF4F 1C         DEC     DWORD PTR DS:[EDI+1C]

复制代码


我们OD再搜索一下@TLicenceManager类相关的导出函数吧:


11.jpg

一共6处,前五处是功能,最后一处是启动的弹窗。分析出验证流程,直接爆破掉好了。

22.jpg


猜想该公司整个系列都是这样的验证体系,通过进程交互完成注册信息的验证和保存,主程序启动时读取注册信息,并在 @TLicenceManager@GetActualLicenceXXXXXX 函数中完成是否注册的验证,可能是该公司被爆破过,所以做了N多个相同的这种函数,但是代码有五个函数是相同的,第六个也大同小异。爆破就是修改函数返回值即可。最后败笔就是编译lib的时候忘记去掉导出函数名了,导致我们很轻易就摸清楚了验证的设计流程。


评分

参与人数 8威望 +72 飘云币 +56 收起 理由
哥又回来了 + 4 确实懂英文在破解过程中给了我莫大的帮助。
GGLHY + 40 + 40 PYG有你更精彩!
风轻云淡 + 4 + 4 分析的很棒,值得学习!
EvilNing + 4 + 4 很给力!
九层楼 + 4 感谢发布原创作品!
4755 + 4 赞一个!
cfc1680 + 8 + 8 PYG有你更精彩!
不破不立 + 4 感谢发布原创作品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    昨天 08:28
  • 签到天数: 2041 天

    [LV.Master]伴坛终老

    发表于 2017-6-29 00:51:20 | 显示全部楼层
    谢谢分享   收藏了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:28
  • 签到天数: 2041 天

    [LV.Master]伴坛终老

    发表于 2017-6-29 00:51:30 | 显示全部楼层
    谢谢分享   收藏了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:21
  • 签到天数: 2204 天

    [LV.Master]伴坛终老

    发表于 2017-6-29 07:33:54 | 显示全部楼层
    校长动作好快,学习了,详尽的分析,破解的思路
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:21
  • 签到天数: 2204 天

    [LV.Master]伴坛终老

    发表于 2017-6-29 07:34:04 | 显示全部楼层
    校长动作好快,详尽的分析,学习了破解的思路
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-26 08:23
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2017-6-29 08:33:53 | 显示全部楼层
    校长好厉害哦
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-26 08:23
  • 签到天数: 65 天

    [LV.6]常住居民II

    发表于 2017-6-29 08:34:02 | 显示全部楼层
    校长好厉害哦
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:10
  • 签到天数: 1431 天

    [LV.10]以坛为家III

    发表于 2017-6-29 08:50:50 | 显示全部楼层
    大赞一个了,感谢分享了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:10
  • 签到天数: 1431 天

    [LV.10]以坛为家III

    发表于 2017-6-29 08:51:00 | 显示全部楼层
    大赞一个了,感谢分享了
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-1-13 12:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2017-6-29 08:52:43 | 显示全部楼层
    学习,分析的很不错
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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