飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2656|回复: 3

[原创] Evidence Exterminator 2.52 简单分析

[复制链接]
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-6-15 16:53:09 | 显示全部楼层 |阅读模式
    软件大小:933KB         软件类别:国外软件/卸载工具         共享绿色
    下载次数:3726         软件授权:共享版
    软件语言:英文         运行环境:Win9x/Me/NT/2000/XP/2003
    软件评级:         更新时间:2009-6-15 9:48:54
    开 发 商:Home Page         联 系 人:未知
    http://nj.onlinedown.net/soft/27152.htm
    Evidence Exterminator是个人隐私保护软件,可以清除用户使用电脑后留下的所有记录.

    程序为Dephi编写,试运行,输入加码后有错误提示"Registration code is invalid!,利用OD插件查找字符串
    就可以来到注册核心处。
    1. 00498608  /$  55            push    ebp                              ;  按钮事件
    2. 00498609  |.  8BEC          mov     ebp, esp
    3. 0049860B  |.  B9 05000000   mov     ecx, 5
    4. 00498610  |>  6A 00         /push    0
    5. 00498612  |.  6A 00         |push    0
    6. 00498614  |.  49            |dec     ecx
    7. 00498615  |.^ 75 F9         \jnz     short 00498610
    8. 00498617  |.  51            push    ecx
    9. 00498618  |.  53            push    ebx
    10. 00498619  |.  56            push    esi
    11. 0049861A  |.  8BF0          mov     esi, eax
    12. 0049861C  |.  33C0          xor     eax, eax
    13. 0049861E  |.  55            push    ebp
    14. 0049861F  |.  68 8D874900   push    0049878D
    15. 00498624  |.  64:FF30       push    dword ptr fs:[eax]
    16. 00498627  |.  64:8920       mov     dword ptr fs:[eax], esp
    17. 0049862A  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
    18. 0049862D  |.  8B86 44030000 mov     eax, dword ptr [esi+344]
    19. 00498633  |.  E8 403BFDFF   call    0046C178                         ;  读取假码
    20. 00498638  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
    21. 0049863B  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
    22. 0049863E  |.  E8 2D59FFFF   call    0048DF70
    23. 00498643  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
    24. 00498646  |.  B8 88004B00   mov     eax, 004B0088
    25. 0049864B  |.  E8 DCC2F6FF   call    0040492C
    26. 00498650  |.  E8 7BFDFFFF   call    004983D0                         ;  关键CALL,待会跟进
    27. 00498655  |.  8BD8          mov     ebx, eax
    28. 00498657  |.  84DB          test    bl, bl                           ;  判断标志位
    29. 00498659  |.  0F84 DC000000 je      0049873B                         ;  跳则失败
    30. 0049865F  |.  C686 64030000>mov     byte ptr [esi+364], 1
    31. 00498666  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    32. 00498669  |.  50            push    eax
    33. 0049866A  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
    34. 0049866D  |.  B8 A4874900   mov     eax, 004987A4                    ;  bb8281988088ae999f81be949e
    35. 00498672  |.  E8 1167FFFF   call    0048ED88                         ;  解密函数,可以进去看看
    36. 00498677  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
    37. 0049867A  |.  50            push    eax
    38. 0049867B  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
    39. 0049867E  |.  B8 C8874900   mov     eax, 004987C8                    ;  be828b999a8c9f88b1a0848e9f829e828b99b1a9bfa0bfbeb5
    40. 00498683  |.  E8 0067FFFF   call    0048ED88                         ;  解密函数
    41. 00498688  |.  8B55 EC       mov     edx, dword ptr [ebp-14]
    42. 0049868B  |.  A1 90004B00   mov     eax, dword ptr [4B0090]
    43. 00498690  |.  59            pop     ecx
    44. 00498691  |.  E8 1A83FFFF   call    004909B0
    45. 00498696  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
    46. 00498699  |.  A1 88004B00   mov     eax, dword ptr [4B0088]          ;  指向注册码
    47. 0049869E  |.  E8 4966FFFF   call    0048ECEC                         ;  加密函数
    48. 004986A3  |.  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  对注册码进行了加密处理
    49. 004986A6  |.  50            push    eax
    50. 004986A7  |.  8D55 E4       lea     edx, dword ptr [ebp-1C]
    51. 004986AA  |.  B8 04884900   mov     eax, 00498804                    ;  a1848a8599bb8c819888
    52. 004986AF  |.  E8 D466FFFF   call    0048ED88                         ;  解密
    53. 004986B4  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]
    54. 004986B7  |.  50            push    eax
    55. 004986B8  |.  8D45 E0       lea     eax, dword ptr [ebp-20]
    56. 004986BB  |.  50            push    eax
    57. 004986BC  |.  B8 C8874900   mov     eax, 004987C8                    ;  be828b999a8c9f88b1a0848e9f829e828b99b1a9bfa0bfbeb5
    58. 004986C1  |.  5A            pop     edx
    59. 004986C2  |.  E8 C166FFFF   call    0048ED88
    60. 004986C7  |.  8B55 E0       mov     edx, dword ptr [ebp-20]
    61. 004986CA  |.  A1 90004B00   mov     eax, dword ptr [4B0090]
    62. 004986CF  |.  59            pop     ecx
    63. 004986D0  |.  E8 1B84FFFF   call    00490AF0
    64. 004986D5  |.  837D FC 00    cmp     dword ptr [ebp-4], 0
    65. 004986D9  |.  75 46         jnz     short 00498721
    66. 004986DB  |.  E8 6023F7FF   call    0040AA40                         ;  取注册时间进行运算
    67. 004986E0  |.  83C4 F8       add     esp, -8
    68. 004986E3  |.  DD1C24        fstp    qword ptr [esp]
    69. 004986E6  |.  9B            wait
    70. 004986E7  |.  8D45 DC       lea     eax, dword ptr [ebp-24]
    71. 004986EA  |.  E8 2D61FFFF   call    0048E81C                         ;  转为字符串
    72. 004986EF  |.  8B45 DC       mov     eax, dword ptr [ebp-24]
    73. 004986F2  |.  50            push    eax
    74. 004986F3  |.  8D55 D8       lea     edx, dword ptr [ebp-28]
    75. 004986F6  |.  B8 A4874900   mov     eax, 004987A4                    ;  bb8281988088ae999f81be949e
    76. 004986FB  |.  E8 8866FFFF   call    0048ED88
    77. 00498700  |.  8B45 D8       mov     eax, dword ptr [ebp-28]
    78. 00498703  |.  50            push    eax
    79. 00498704  |.  8D45 D4       lea     eax, dword ptr [ebp-2C]
    80. 00498707  |.  50            push    eax
    81. 00498708  |.  B8 C8874900   mov     eax, 004987C8                    ;  be828b999a8c9f88b1a0848e9f829e828b99b1a9bfa0bfbeb5
    82. 0049870D  |.  5A            pop     edx
    83. 0049870E  |.  E8 7566FFFF   call    0048ED88
    84. 00498713  |.  8B55 D4       mov     edx, dword ptr [ebp-2C]
    85. 00498716  |.  A1 90004B00   mov     eax, dword ptr [4B0090]
    86. 0049871B  |.  59            pop     ecx
    87. 0049871C  |.  E8 CF83FFFF   call    00490AF0
    88. 00498721  |>  6A 40         push    40
    89. 00498723  |.  B9 1C884900   mov     ecx, 0049881C                    ;  information
    90. 00498728  |.  BA 28884900   mov     edx, 00498828                    ;  registration has been completed successfully!
    91. 0049872D  |.  A1 8CE84A00   mov     eax, dword ptr [4AE88C]
    92. 00498732  |.  8B00          mov     eax, dword ptr [eax]
    93. 00498734  |.  E8 2F43FFFF   call    0048CA68
    94. 00498739  |.  EB 22         jmp     short 0049875D
    95. 0049873B  |>  B8 88004B00   mov     eax, 004B0088
    96. 00498740  |.  E8 93C1F6FF   call    004048D8
    97. 00498745  |.  6A 10         push    10
    98. 00498747  |.  B9 58884900   mov     ecx, 00498858                    ;  error
    99. 0049874C  |.  BA 60884900   mov     edx, 00498860                    ;  registration code is invalid!
    100. 00498751  |.  A1 8CE84A00   mov     eax, dword ptr [4AE88C]
    101. 00498756  |.  8B00          mov     eax, dword ptr [eax]
    102. 00498758  |.  E8 0B43FFFF   call    0048CA68
    复制代码
    ***********************************************************************************************************
    跟进 call    004983D0
    下面就是关键算法了
    1. 004983D0  /$  53            push    ebx
    2. 004983D1  |.  56            push    esi
    3. 004983D2  |.  57            push    edi
    4. 004983D3  |.  BF 88004B00   mov     edi, 004B0088
    5. 004983D8  |.  33F6          xor     esi, esi                         ;  esi清零,后面计算用到
    6. 004983DA  |.  33DB          xor     ebx, ebx                         ;  ebx清零
    7. 004983DC  |.  8B07          mov     eax, dword ptr [edi]
    8. 004983DE  |.  E8 B5C7F6FF   call    00404B98                         ;  取假码长度
    9. 004983E3  |.  83F8 0E       cmp     eax, 0E                          ;  长度必须是14位
    10. 004983E6  |.  75 67         jnz     short 0049844F
    11. 004983E8  |.  8B07          mov     eax, dword ptr [edi]             ;  指向假码
    12. 004983EA  |.  8038 32       cmp     byte ptr [eax], 32               ;  第1位是否是字符2
    13. 004983ED  |.  0F94C0        sete    al                               ;  为真则al置1
    14. 004983F0  |.  83E0 7F       and     eax, 7F                          ;  与操作,高位清零
    15. 004983F3  |.  03F0          add     esi, eax                         ;  esi保存判断为真次数
    16. 004983F5  |.  8B07          mov     eax, dword ptr [edi]
    17. 004983F7  |.  8078 02 36    cmp     byte ptr [eax+2], 36             ;  第3位是否是字符6
    18. 004983FB  |.  0F94C0        sete    al
    19. 004983FE  |.  83E0 7F       and     eax, 7F
    20. 00498401  |.  03F0          add     esi, eax
    21. 00498403  |.  8B07          mov     eax, dword ptr [edi]
    22. 00498405  |.  8078 03 33    cmp     byte ptr [eax+3], 33             ;  第4位是否是字符3
    23. 00498409  |.  0F94C0        sete    al
    24. 0049840C  |.  83E0 7F       and     eax, 7F
    25. 0049840F  |.  03F0          add     esi, eax
    26. 00498411  |.  8B07          mov     eax, dword ptr [edi]
    27. 00498413  |.  8078 04 32    cmp     byte ptr [eax+4], 32             ;  第5位是否是字符2
    28. 00498417  |.  0F94C0        sete    al
    29. 0049841A  |.  83E0 7F       and     eax, 7F
    30. 0049841D  |.  03F0          add     esi, eax
    31. 0049841F  |.  8B07          mov     eax, dword ptr [edi]
    32. 00498421  |.  8078 07 33    cmp     byte ptr [eax+7], 33             ;  第8位是否是字符3
    33. 00498425  |.  0F94C0        sete    al
    34. 00498428  |.  83E0 7F       and     eax, 7F
    35. 0049842B  |.  03F0          add     esi, eax
    36. 0049842D  |.  8B07          mov     eax, dword ptr [edi]
    37. 0049842F  |.  8078 08 33    cmp     byte ptr [eax+8], 33             ;  第9位是否是字符3
    38. 00498433  |.  0F94C0        sete    al
    39. 00498436  |.  83E0 7F       and     eax, 7F
    40. 00498439  |.  03F0          add     esi, eax
    41. 0049843B  |.  8B07          mov     eax, dword ptr [edi]
    42. 0049843D  |.  8078 0A 34    cmp     byte ptr [eax+A], 34             ;  第11位是否是字符4
    43. 00498441  |.  0F94C0        sete    al
    44. 00498444  |.  83E0 7F       and     eax, 7F
    45. 00498447  |.  03F0          add     esi, eax                         ;  判断了假码的7位,全部为真则ESI=7
    46. 00498449  |.  83FE 07       cmp     esi, 7                           ;  比较
    47. 0049844C  |.  0F94C3        sete    bl                               ;  为真则置bl=1
    48. 0049844F  |>  8BC3          mov     eax, ebx                         ;  传递给eax
    49. 00498451  |.  5F            pop     edi
    50. 00498452  |.  5E            pop     esi
    51. 00498453  |.  5B            pop     ebx
    52. 00498454  \.  C3            retn
    复制代码
    *********************************************************************************************

    算法不难,但后面保存到注册表时,大家可以看到注册表项和子键都做了加密,使用时进行了解密。
    注册码进行了加密,注册时间运算后也在注册表进行了保存。我们可以看看如何解密的。

    跟进 call    0048ED88  这个解密函数看看
    1. 0048ED88  /$  55            push    ebp
    2. 0048ED89  |.  8BEC          mov     ebp, esp
    3. 0048ED8B  |.  6A 00         push    0
    4. 0048ED8D  |.  6A 00         push    0
    5. 0048ED8F  |.  6A 00         push    0
    6. 0048ED91  |.  53            push    ebx
    7. 0048ED92  |.  56            push    esi
    8. 0048ED93  |.  57            push    edi
    9. 0048ED94  |.  8BF2          mov     esi, edx
    10. 0048ED96  |.  8945 FC       mov     dword ptr [ebp-4], eax
    11. 0048ED99  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    12. 0048ED9C  |.  E8 E75FF7FF   call    00404D88
    13. 0048EDA1  |.  33C0          xor     eax, eax
    14. 0048EDA3  |.  55            push    ebp
    15. 0048EDA4  |.  68 1BEE4800   push    0048EE1B
    16. 0048EDA9  |.  64:FF30       push    dword ptr fs:[eax]
    17. 0048EDAC  |.  64:8920       mov     dword ptr fs:[eax], esp
    18. 0048EDAF  |.  8BC6          mov     eax, esi
    19. 0048EDB1  |.  E8 225BF7FF   call    004048D8
    20. 0048EDB6  |.  33FF          xor     edi, edi
    21. 0048EDB8  |.  EB 3A         jmp     short 0048EDF4
    22. 0048EDBA  |>  8D45 F8       /lea     eax, dword ptr [ebp-8]
    23. 0048EDBD  |.  50            |push    eax
    24. 0048EDBE  |.  8D57 01       |lea     edx, dword ptr [edi+1]
    25. 0048EDC1  |.  B9 02000000   |mov     ecx, 2
    26. 0048EDC6  |.  8B45 FC       |mov     eax, dword ptr [ebp-4]
    27. 0048EDC9  |.  E8 2A60F7FF   |call    00404DF8                        ;  依次取固定字符串2位
    28. 0048EDCE  |.  8B45 F8       |mov     eax, dword ptr [ebp-8]
    29. 0048EDD1  |.  E8 C6F4FFFF   |call    0048E29C                        ;  字符转为对应16进制数值
    30. 0048EDD6  |.  E8 09FFFFFF   |call    0048ECE4                        ;  16进制数值再进行简单计算,跟进
    31. 0048EDDB  |.  8BD8          |mov     ebx, eax                        ;  然后依次保存到一内存空间
    32. 0048EDDD  |.  8D45 F4       |lea     eax, dword ptr [ebp-C]
    33. 0048EDE0  |.  8BD3          |mov     edx, ebx
    34. 0048EDE2  |.  E8 D95CF7FF   |call    00404AC0
    35. 0048EDE7  |.  8B55 F4       |mov     edx, dword ptr [ebp-C]
    36. 0048EDEA  |.  8BC6          |mov     eax, esi
    37. 0048EDEC  |.  E8 AF5DF7FF   |call    00404BA0
    38. 0048EDF1  |.  83C7 02       |add     edi, 2                          ;  每次取2位,所以加2
    39. 0048EDF4  |>  8B45 FC        mov     eax, dword ptr [ebp-4]
    40. 0048EDF7  |.  E8 9C5DF7FF   |call    00404B98                        ;  取固定码长度
    41. 0048EDFC  |.  3BF8          |cmp     edi, eax                        ;  判断固定码是否取完
    42. 0048EDFE  |.^ 7C BA         \jl      short 0048EDBA
    43. 0048EE00  |.  33C0          xor     eax, eax
    44. 0048EE02  |.  5A            pop     edx
    45. 0048EE03  |.  59            pop     ecx
    46. 0048EE04  |.  59            pop     ecx
    47. 0048EE05  |.  64:8910       mov     dword ptr fs:[eax], edx
    48. 0048EE08  |.  68 22EE4800   push    0048EE22
    49. 0048EE0D  |>  8D45 F4       lea     eax, dword ptr [ebp-C]
    50. 0048EE10  |.  BA 03000000   mov     edx, 3
    51. 0048EE15  |.  E8 E25AF7FF   call    004048FC
    52. 0048EE1A  \.  C3            retn

    53. 再跟进call    0048ECE4  看看

    54. 0048ECE4  /$  F6D0          not     al
    55. 0048ECE6  |.  34 ED         xor     al, 0ED
    56. 0048ECE8  |.  F6D0          not     al
    57. 0048ECEA  \.  C3            retn
    复制代码
    所以解密很简单,依次取固定字符串2位,转为对应16进制
    取反后再与0EDh异或,组成另一字符串,解密即完成。如
    26位固定字符串"BB8281988088AE999F81BE949E"
    解密后为13位
    "VolumeCtrlSys"。
    感兴趣大家可以用正在学的C语言自己写下解密函数。


    总结:算法非常简单,注册表加密显得意义不大,不过可以作为我们学习简单算法和加密的对象。
      
         简单构成一个可用注册码:21632673304897
    我的注册表项
    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DRMRSX]
    "SuperStructure"="39979.6338688079"
    "LightValue"="DFDCDBDEDFDBDADEDEDDD9D5D4DA"
    "VolumeCtrlSys"="39979.6653520949"

    "DFDCDBDEDFDBDADEDEDDD9D5D4DA"就是加密后的“21632673304897”。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-21 10:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2009-6-27 10:23:32 | 显示全部楼层
    /:good 很好的对算法分析进行学习的例子
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-4 22:08
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2009-6-27 13:31:08 | 显示全部楼层
    下载学习研究一下,顶
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-6-27 22:39:14 | 显示全部楼层
    楼主分析的详细,学习了。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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