飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8613|回复: 12

[原创] ABsee v1.0 算法分析

[复制链接]
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

    发表于 2016-1-9 17:01:16 | 显示全部楼层 |阅读模式
    本帖最后由 GeekCat 于 2016-1-9 17:05 编辑

    【文章标题】: ABsee v1.0  算法分析
    【作者邮箱】: [email protected]
    【作者主页】:
    【软件名称】: ABsee v1.0
    【软件大小】: 2.21 MB (2,318,848 字节)
    【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
    【保护方式】: 注册码
    【编写语言】: 没脱壳不知道
    【使用工具】: OD、PEID
    【操作平台】: XP SP3
    破解声明】: 破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
    【软件介绍】:  ABsee是一款照片编辑和浏览工具支持bmp, jpg, png, gif, tif, pcx, ico, cur, wmf, jp2, crw和dwg格式的文件,可以使用多种浏览模式,可以修改图片的大小,RGB,对比度等各种参数。
    --------------------------------------------------------------------------------------------------------------------------------
    1、字符串、F12暂停、API都能快速定位到关键点
    2、代码1如下:


    1. 005FAA2F  |.  58            POP     EAX
    2. 005FAA30  |.  59            POP     ECX
    3. 005FAA31  |.  E8 665FFDFF   CALL    ABSeeVie.005D099C                ;  关键CALL
    4. 005FAA36  |.  84C0          TEST    AL, AL
    5. 005FAA38  |.  74 24         JE      SHORT ABSeeVie.005FAA5E          ;  关键跳转
    6. 005FAA3A  |.  C783 4C020000>MOV     DWORD PTR DS:[EBX+0x24C], 0x1
    7. 005FAA44  |.  6A 40         PUSH    0x40
    8. 005FAA46  |.  B9 F4AA5F00   MOV     ECX, ABSeeVie.005FAAF4           ;  Information
    9. 005FAA4B  |.  BA 00AB5F00   MOV     EDX, ABSeeVie.005FAB00           ;  Register successful!
    10. 005FAA50  |.  A1 FCA96100   MOV     EAX, DWORD PTR DS:[0x61A9FC]     ;  艋a
    11. 005FAA55  |.  8B00          MOV     EAX, DWORD PTR DS:[EAX]
    12. 005FAA57  |.  E8 90CCE8FF   CALL    ABSeeVie.004876EC
    13. 005FAA5C  |.  EB 32         JMP     SHORT ABSeeVie.005FAA90
    14. 005FAA5E  |>  6A 10         PUSH    0x10
    15. 005FAA60  |.  B9 18AB5F00   MOV     ECX, ABSeeVie.005FAB18           ;  Error
    16. 005FAA65  |.  BA 20AB5F00   MOV     EDX, ABSeeVie.005FAB20           ;  Register Error!
    17. 005FAA6A  |.  A1 FCA96100   MOV     EAX, DWORD PTR DS:[0x61A9FC]     ;  艋a
    18. 005FAA6F  |.  8B00          MOV     EAX, DWORD PTR DS:[EAX]
    19. 005FAA71  |.  E8 76CCE8FF   CALL    ABSeeVie.004876EC
    20. 005FAA76  |.  EB 18         JMP     SHORT ABSeeVie.005FAA90
    21. 005FAA78  |>  6A 30         PUSH    0x30
    22. 005FAA7A  |.  B9 30AB5F00   MOV     ECX, ABSeeVie.005FAB30           ;  Warning
    23. 005FAA7F  |.  BA 38AB5F00   MOV     EDX, ABSeeVie.005FAB38           ;  Invalid Serial number!
    24. 005FAA84  |.  A1 FCA96100   MOV     EAX, DWORD PTR DS:[0x61A9FC]     ;
    复制代码

    1. <P>005CE81E  |.  64:8920       MOV     DWORD PTR FS:[EAX], ESP
    2. 005CE821  |.  55            PUSH    EBP
    3. 005CE822  |.  E8 2DFFFFFF   CALL    ABSeeVie.005CE754                ;  第四段4位不能完全相同
    4. 005CE827  |.  59            POP     ECX
    5. 005CE828  |.  8BD8          MOV     EBX, EAX
    6. 005CE82A  |.  84DB          TEST    BL, BL
    7. 005CE82C  |.  74 57         JE      SHORT ABSeeVie.005CE885
    8. 005CE82E  |.  FF75 FC       PUSH    DWORD PTR SS:[EBP-0x4]           ;  (ASCII "1QWE")
    9. 005CE831  |.  FF75 F8       PUSH    DWORD PTR SS:[EBP-0x8]           ;  (ASCII "2RTY")
    10. 005CE834  |.  FF75 F4       PUSH    DWORD PTR SS:[EBP-0xC]           ;  (ASCII "3UIO")
    11. 005CE837  |.  8D45 F0       LEA     EAX, DWORD PTR SS:[EBP-0x10]
    12. 005CE83A  |.  BA 03000000   MOV     EDX, 0x3
    13. 005CE83F  |.  E8 9462E3FF   CALL    ABSeeVie.00404AD8                ;  前三段注册码拼接
    14. 005CE844  |.  8D45 EC       LEA     EAX, DWORD PTR SS:[EBP-0x14]
    15. 005CE847  |.  50            PUSH    EAX
    16. 005CE848  |.  8D45 E8       LEA     EAX, DWORD PTR SS:[EBP-0x18]
    17. 005CE84B  |.  B9 C0E85C00   MOV     ECX, ABSeeVie.005CE8C0           ;  Z
    18. 005CE850  |.  8B55 08       MOV     EDX, DWORD PTR SS:[EBP+0x8]      ;  (ASCII "QWER")
    19. 005CE853  |.  E8 0C62E3FF   CALL    ABSeeVie.00404A64                </P>
    20. <P>005CE858  |.  8B55 E8       MOV     EDX, DWORD PTR SS:[EBP-0x18]     ;  (ASCII "QWERZ")
    21. 005CE85B  |.  33C9          XOR     ECX, ECX
    22. 005CE85D  |.  8B45 F0       MOV     EAX, DWORD PTR SS:[EBP-0x10]     ;  (ASCII "1QWE2RTY3UIO")
    23. 005CE860  |.  E8 73FCFFFF   CALL    ABSeeVie.005CE4D8                ;  算法CALL
    24. 005CE865  |.  8B45 EC       MOV     EAX, DWORD PTR SS:[EBP-0x14]     ;  注意ebp-0x14
    25. 005CE868  |.  50            PUSH    EAX
    26. 005CE869  |.  8D45 E4       LEA     EAX, DWORD PTR SS:[EBP-0x1C]
    27. 005CE86C  |.  B9 CCE85C00   MOV     ECX, ABSeeVie.005CE8CC           ;  A
    28. 005CE871  |.  8B55 08       MOV     EDX, DWORD PTR SS:[EBP+0x8]      ;  (ASCII "QWER")
    29. 005CE874  |.  E8 EB61E3FF   CALL    ABSeeVie.00404A64                ;  拼接
    30. 005CE879  |.  8B55 E4       MOV     EDX, DWORD PTR SS:[EBP-0x1C]     ;  (ASCII "QWERA")
    31. 005CE87C  |.  58            POP     EAX
    32. 005CE87D  |.  E8 E262E3FF   CALL    ABSeeVie.00404B64                ;  比较CALL
    33. 005CE882  |.  0F94C3        SETE    BL
    34. 005CE885  |>  33C0          XOR     EAX, EAX
    35. 005CE887  |.  5A            POP     EDX
    36. 005CE888  |.  59            POP     ECX</P>
    37. <P> </P>
    复制代码
    4、算法段代码 如下:



    1. <P>005CE600   .  50            PUSH    EAX
    2. 005CE601   .  B9 02000000   MOV     ECX, 0x2
    3. 005CE606   .  BA 01000000   MOV     EDX, 0x1
    4. 005CE60B   .  8B45 FC       MOV     EAX, DWORD PTR SS:[EBP-0x4]      ;  (ASCII "123425673890")
    5. 005CE60E   .  E8 6566E3FF   CALL    ABSeeVie.00404C78                ;  取前两位
    6. 005CE613   .  8B4D D0       MOV     ECX, DWORD PTR SS:[EBP-0x30]     ;  (ASCII "12")
    7. 005CE616   .  8D45 D4       LEA     EAX, DWORD PTR SS:[EBP-0x2C]
    8. 005CE619   .  BA 50E75C00   MOV     EDX, ABSeeVie.005CE750           ;  $
    9. 005CE61E   .  E8 4164E3FF   CALL    ABSeeVie.00404A64                ;  拼接 $12
    10. 005CE623   .  8B45 D4       MOV     EAX, DWORD PTR SS:[EBP-0x2C]     ;  $12
    11. 005CE626   .  E8 A9ACE3FF   CALL    ABSeeVie.004092D4                ;  检测是否为数字,是数字就转化为对应数值
    12. 005CE62B   .  8BF8          MOV     EDI, EAX
    13. 005CE62D   .  C745 EC 03000>MOV     DWORD PTR SS:[EBP-0x14], 0x3
    14. 005CE634   >  8D45 C8       LEA     EAX, DWORD PTR SS:[EBP-0x38]
    15. 005CE637   .  50            PUSH    EAX
    16. 005CE638   .  B9 02000000   MOV     ECX, 0x2
    17. 005CE63D   .  8B55 EC       MOV     EDX, DWORD PTR SS:[EBP-0x14]
    18. 005CE640   .  8B45 FC       MOV     EAX, DWORD PTR SS:[EBP-0x4]      ;  (ASCII "123425673890")
    19. 005CE643   .  E8 3066E3FF   CALL    ABSeeVie.00404C78                ;  一次取两位从第3位开始取
    20. 005CE648   .  8B4D C8       MOV     ECX, DWORD PTR SS:[EBP-0x38]     ;  34、25、67、38、90
    21. 005CE64B   .  8D45 CC       LEA     EAX, DWORD PTR SS:[EBP-0x34]
    22. 005CE64E   .  BA 50E75C00   MOV     EDX, ABSeeVie.005CE750           ;  $
    23. 005CE653   .  E8 0C64E3FF   CALL    ABSeeVie.00404A64                ;  拼接
    24. 005CE658   .  8B45 CC       MOV     EAX, DWORD PTR SS:[EBP-0x34]
    25. 005CE65B   .  E8 74ACE3FF   CALL    ABSeeVie.004092D4                ;  检测是否为数字,是数字就转化为对应数值
    26. 005CE660   .  8BD8          MOV     EBX, EAX
    27. 005CE662   .  3B75 F4       CMP     ESI, DWORD PTR SS:[EBP-0xC]
    28. 005CE665   .  7D 03         JGE     SHORT ABSeeVie.005CE66A
    29. 005CE667   .  46            INC     ESI
    30. 005CE668   .  EB 05         JMP     SHORT ABSeeVie.005CE66F
    31. 005CE66A   >  BE 01000000   MOV     ESI, 0x1
    32. 005CE66F   >  8B45 F8       MOV     EAX, DWORD PTR SS:[EBP-0x8]      ;  (ASCII "QWERZ")
    33. 005CE672   .  0FB64430 FF   MOVZX   EAX, BYTE PTR DS:[EAX+ESI-0x1]   ;  每次取1位
    34. 005CE677   .  33C3          XOR     EAX, EBX                         ;  每次取的2位数字 xor 第四段取得的1位字符AS值  =65 72
    35. 005CE679   .  8945 E8       MOV     DWORD PTR SS:[EBP-0x18], EAX     ;  65
    36. 005CE67C   .  3B7D E8       CMP     EDI, DWORD PTR SS:[EBP-0x18]     ;  xor结果跟注册码第一段的前2位(以后每次取上次所取的后面2位)比较 大于就直接减小于就+FF再减
    37. 005CE67F   .  7C 0F         JL      SHORT ABSeeVie.005CE690          ;  第一次是1、2位,第二次则为3、4位向后推
    38. 005CE681   .  8B45 E8       MOV     EAX, DWORD PTR SS:[EBP-0x18]
    39. 005CE684   .  05 FF000000   ADD     EAX, 0xFF
    40. 005CE689   .  2BC7          SUB     EAX, EDI
    41. 005CE68B   .  8945 E8       MOV     DWORD PTR SS:[EBP-0x18], EAX
    42. 005CE68E   .  EB 03         JMP     SHORT ABSeeVie.005CE693
    43. 005CE690   >  297D E8       SUB     DWORD PTR SS:[EBP-0x18], EDI     ;  65-12=53
    44. 005CE693   >  8D45 C4       LEA     EAX, DWORD PTR SS:[EBP-0x3C]
    45. 005CE696   .  8B55 E8       MOV     EDX, DWORD PTR SS:[EBP-0x18]     ;  53
    46. 005CE699   .  E8 A262E3FF   CALL    ABSeeVie.00404940                ;  AS值转字符 53->S 3E->">" FC-> 6A
    47. 005CE69E   .  8B55 C4       MOV     EDX, DWORD PTR SS:[EBP-0x3C]     ;  (UNICODE "S")
    48. 005CE6A1   .  8D45 F0       LEA     EAX, DWORD PTR SS:[EBP-0x10]
    49. 005CE6A4   .  E8 7763E3FF   CALL    ABSeeVie.00404A20
    50. 005CE6A9   .  8BFB          MOV     EDI, EBX
    51. 005CE6AB   .  8345 EC 02    ADD     DWORD PTR SS:[EBP-0x14], 0x2
    52. 005CE6AF   .  8B45 FC       MOV     EAX, DWORD PTR SS:[EBP-0x4]      ;  (ASCII "123425673890")
    53. 005CE6B2   .  E8 6163E3FF   CALL    ABSeeVie.00404A18                ;  计算字符串长度
    54. 005CE6B7   .  3B45 EC       CMP     EAX, DWORD PTR SS:[EBP-0x14]
    55. 005CE6BA   .^ 0F8F 74FFFFFF JG      ABSeeVie.005CE634
    56. 005CE6C0   .  33C0          XOR     EAX, EAX</P>
    57. <P> </P>
    复制代码

    ---------------------------------------------------------------------------------------------------------------------------
    算法总结:
    注册码前三段要全部为数字,第四段注册码字符不能全部相同,并且四段注册码要全部为4位,
    1、注册码第四段加在后面加上1个字符‘Z’变成一个5位字符串,前三段拼接成一个字符串(ASCII "123425673890"),取前两位转化为数字12;
    2、从符串第3位开始一次两位“34、25、67、38、90”转化为数值34、25、67、38、90得到5个两位数
    3、佽次取注册码第四段加上1个字符‘Z’变成一个5位字符串的一位,分别跟前面转化形成5个两位数分别XOR运算,得到5个结果;
    4、用上一步这5个xor结果,依次减去用字符串(ASCII "123425673890")得到的6个2位数据中的前5个,
       如果小于0,就加上0xFF,如果大于等于0直接减得到5个结果,把这个5个值为AS值转化为字符拼接成一个5位的字符串;
    5、注册码第四段加在后面加上1个字符‘A’变成一个5位字符串,要求跟第4步中最后得的5个字符相同;

    可用注册码一组:8282-8282-8299-AMMM
    ---------------------------------------------------------------------------------------------------------------------------
    【版权声明】:
    本文原创于GeekCat/P.Y.G,转载请注明作者及论坛并保存文章的完整!

    来自群组: 我们都爱月姐姐

    评分

    参与人数 7威望 +56 飘云币 +92 收起 理由
    [PYG]版务督察 + 20 PYG有你更精彩!
    pentium450 + 20 + 20 很给力!
    wgz001 + 4 + 4 能出个注册机就更好了
    tree_fly + 20 算法分析,赞!
    Dxer + 20 + 20 PYG有你更精彩!
    expasy + 4 赞一个!
    gagmeng + 8 + 8 G版,求带一起飞

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-9 08:20
  • 签到天数: 869 天

    [LV.10]以坛为家III

    发表于 2016-1-9 17:21:57 | 显示全部楼层
    沙发,支持G版算法大牛!!!
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2016-1-9 19:26:06 | 显示全部楼层
    我来支持下。谢谢GC分享算法分析
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2016-1-9 19:28:50 | 显示全部楼层
    【编写语言】: 没脱壳不知道  冲这句,赞!

    点评

    哈哈~ 对各种语言的入口不了解~~  详情 回复 发表于 2016-1-9 20:18
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2016-1-9 20:01
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-1-9 20:02:04 | 显示全部楼层
    非常不错。值得拥有
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-25 14:18
  • 签到天数: 881 天

    [LV.10]以坛为家III

     楼主| 发表于 2016-1-9 20:18:53 | 显示全部楼层
    飘云 发表于 2016-1-9 19:28
    【编写语言】: 没脱壳不知道  冲这句,赞!

    哈哈~
    对各种语言的入口不了解~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 16:07
  • 签到天数: 1093 天

    [LV.10]以坛为家III

    发表于 2016-1-9 20:24:11 | 显示全部楼层

    啥也不说了,楼主就是给力!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-10-6 19:00
  • 签到天数: 107 天

    [LV.6]常住居民II

    发表于 2016-1-9 21:44:23 | 显示全部楼层
    谢谢分享,学习了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2016-1-10 10:10:42 | 显示全部楼层
    赞,期待更多更详细的分析教程
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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