飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 15559|回复: 37

[PYG]算法分析入门第四课

  [复制链接]
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-4-6 07:35:42 | 显示全部楼层 |阅读模式
    【破文标题】[PYG]算法分析入门第四课
    【破文作者】飘云[PYG]
    【作者主页】https://www.chinapyg.com
    破解平台】winxp
    【破解工具】PEiD0.93、AspackDie、w32dasm、OD二哥修改版
    【作者邮箱】[email protected]
    【软件名称】私人保险箱 V5.61
    【软件大小】1482 KB
    【原版下载】http://www3.skycn.com/soft/14176.html
    【软件简介】为了不使自己的文件能被他人随意使用,你可能会使用一些加密软件来对文件进行加密,但在这种情况下,在文件较大或文件很多的情况下需要花费较多的时间,而且当要使用这些文件的时候,还需要对其进行解密,而使用完毕后,又要重新加密,十分麻烦。其实只要能将这些文件彻底隐藏起来不就行了。本软件就能帮您实现这个功能。
        软件能够帮助您方便快捷彻底地隐藏文件。无论有多少个文件,只要把这些文件或这些文件所在的文件夹存放到所设置的私人保险箱中,又或者直接将这些文件所在的目录设置为私人保险箱,即可实现文件的彻底隐藏。本软件在使用上非常简单。第一次运行的时候请以管理员的身份登录,至少创建一个用户,然后以用户的身份登录,设置该用户的私人保险箱。设置完成后,当要使用私人保险箱时,只需在\\\"我的电脑\\\"或任何一个文件夹上单击右键,选取\\\"进入私人保险箱\\\",输入正确的密码即可使用属于你的所有私人保险箱。
    【分析过程】先用PEiD探测一下:ASPack 2.12 -> Alexey Solodovnikov 用AspackDie解决,当然用手动也很快的 再查为Borland Delphi 6.0 - 7.0编写,用W32DASM找到以下关键(为了方便,我用OD看的代码):

    004DACA3        |.  55           push ebp
    004DACA4        |.  68 95AD4D00  push Unpacked.004DAD95
    004DACA9        |.  64:FF30      push dword ptr fs:[eax]
    004DACAC        |.  64:8920      mov dword ptr fs:[eax],esp
    004DACAF        |.  8D55 FC      lea edx,dword ptr ss:[ebp-4]
    004DACB2        |.  8B86 0404000>mov eax,dword ptr ds:[esi+404]
    004DACB8        |.  E8 ABACF6FF  call Unpacked.00445968
    004DACBD        |.  8B45 FC      mov eax,dword ptr ss:[ebp-4]
    004DACC0        |.  50           push eax                            ;  假码入栈
    004DACC1        |.  6A 03        push 3
    004DACC3        |.  8D45 F8      lea eax,dword ptr ss:[ebp-8]
    004DACC6        |.  50           push eax
    004DACC7        |.  8D45 F4      lea eax,dword ptr ss:[ebp-C]
    004DACCA        |.  E8 91AEFEFF  call Unpacked.004C5B60
    004DACCF        |.  8B45 F4      mov eax,dword ptr ss:[ebp-C]        ;  [EBP-C]=机器码
    004DACD2        |.  B9 02000000  mov ecx,2                           ;
    004DACD7        |.  BA 01000000  mov edx,1                           ;  EDX=1 注意~~
    004DACDC        |.  E8 57AFFEFF  call Unpacked.004C5C38              ;  算法call,进去!!
    004DACE1        |.  8B55 F8      mov edx,dword ptr ss:[ebp-8]
    004DACE4        |.  58           pop eax
    004DACE5        |.  E8 A2A3F2FF  call Unpacked.0040508C              ;  比较call
    004DACEA        |.  75 66        jnz short Unpacked.004DAD52         ;  这里跳就完了,爆破点
    004DACEC        |.  B2 01        mov dl,1
    004DACEE        |.  A1 847A4600  mov eax,dword ptr ds:[467A84]

    一下是来到算法call中
    004C5C38        /$  55           push ebp
    004C5C39        |.  8BEC         mov ebp,esp
    004C5C3B        |.  83C4 F0      add esp,-10
    004C5C3E        |.  53           push ebx
    004C5C3F        |.  56           push esi
    004C5C40        |.  57           push edi
    004C5C41        |.  33DB         xor ebx,ebx
    004C5C43        |.  895D F0      mov dword ptr ss:[ebp-10],ebx
    004C5C46        |.  894D F8      mov dword ptr ss:[ebp-8],ecx
    004C5C49        |.  8BF2         mov esi,edx                         ;  esi=edx=1
    004C5C4B        |.  8945 FC      mov dword ptr ss:[ebp-4],eax
    004C5C4E        |.  8B7D 08      mov edi,dword ptr ss:[ebp+8]
    004C5C51        |.  33C0         xor eax,eax                         ;  eax清0
    004C5C53        |.  55           push ebp
    004C5C54        |.  68 CB5C4C00  push Unpacked.004C5CCB
    004C5C59        |.  64:FF30      push dword ptr fs:[eax]
    004C5C5C        |.  64:8920      mov dword ptr fs:[eax],esp
    004C5C5F        |.  8BC7         mov eax,edi
    004C5C61        |.  E8 2AF0F3FF  call Unpacked.00404C90
    004C5C66        |.  8B45 FC      mov eax,dword ptr ss:[ebp-4]        ;  机器码送到eax
    004C5C69        |.  E8 DAF2F3FF  call Unpacked.00404F48              ;  计算长度
    004C5C6E        |.  84C0         test al,al
    004C5C70        |.  76 43        jbe short Unpacked.004C5CB5         ;  是否有机器码
    004C5C72        |.  8845 F7      mov byte ptr ss:[ebp-9],al          ;  长度放到[EBP-9]
    004C5C75        |.  B3 01        mov bl,1                            ;  bl=1
    004C5C77        |>  8D45 F0      /lea eax,dword ptr ss:[ebp-10]
    004C5C7A        |.  33D2         |xor edx,edx                        ;  edx清0
    004C5C7C        |.  8AD3         |mov dl,bl
    004C5C7E        |.  8B4D FC      |mov ecx,dword ptr ss:[ebp-4]       ;  机器码送到ecx
    004C5C81        |.  8A5411 FF    |mov dl,byte ptr ds:[ecx+edx-1]     ;  逐位取ascii值送到dl
    004C5C85        |.  8BCE         |mov ecx,esi                        ;  ecx=esi   esi初始值为1
    004C5C87        |.  C1E9 08      |shr ecx,8                          ;  右移8位
    004C5C8A        |.  32D1         |xor dl,cl                          ;  dl=dl xor cl
    004C5C8C        |.  E8 DFF1F3FF  |call Unpacked.00404E70             ;  转换成ascii
    004C5C91        |.  8B55 F0      |mov edx,dword ptr ss:[ebp-10]
    004C5C94        |.  8BC7         |mov eax,edi
    004C5C96        |.  E8 B5F2F3FF  |call Unpacked.00404F50
    004C5C9B        |.  33C0         |xor eax,eax
    004C5C9D        |.  8AC3         |mov al,bl
    004C5C9F        |.  8B17         |mov edx,dword ptr ds:[edi]
    004C5CA1        |.  0FB64402 FF  |movzx eax,byte ptr ds:[edx+eax-1]  ;  逐位取机器码ascii
    004C5CA6        |.  03F0         |add esi,eax                        ;  esi=esi+eax
    004C5CA8        |.  0FAF75 F8    |imul esi,dword ptr ss:[ebp-8]      ;  esi=esi×2    [EBP-8]是定值2
    004C5CAC        |.  0375 0C      |add esi,dword ptr ss:[ebp+C]       ;  esi=esi+3   [EBP+C]为定值3
    004C5CAF        |.  43           |inc ebx                            ;  计数器加1(即机器码后移一位)
    004C5CB0        |.  FE4D F7      |dec byte ptr ss:[ebp-9]            ;  计算完的就去掉
    004C5CB3        |.^ 75 C2        \jnz short Unpacked.004C5C77        ;  循环
    004C5CB5        |>  33C0         xor eax,eax
    004C5CB7        |.  5A           pop edx
    004C5CB8        |.  59           pop ecx
    004C5CB9        |.  59           pop ecx
    004C5CBA        |.  64:8910      mov dword ptr fs:[eax],edx
    004C5CBD        |.  68 D25C4C00  push Unpacked.004C5CD2
    004C5CC2        |>  8D45 F0      lea eax,dword ptr ss:[ebp-10]
    004C5CC5        |.  E8 C6EFF3FF  call Unpacked.00404C90
    004C5CCA        \.  C3           retn


    【总结】
    利用了每位机器码循环计算方式得到注册码
    我的机器码:注册码
    我的注册码:3FDAALX{

    内存注册机
    中断地址:4DACE5
    中断次数:1
    第一字节:E8
    指令长度:5
    内存方式-寄存器-edx

    注册信息保存在:HKEY_CURRENT_USER\Software\SafeBox\RegNum,删除后可继续研究


    【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-4-4 09:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-4-6 13:02:16 | 显示全部楼层
    收下,学习^_^
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-4-9 20:16:24 | 显示全部楼层

    哈哈

    老大,搞得不错啊~~~谢谢拉
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-10-16 20:43:53 | 显示全部楼层
    顶..............

    第4、5、12、13课以及别的文章严重灌水! -20分!!希望尊重一下别人的劳动!  By 飘云
    PYG19周年生日快乐!
    gwp02 该用户已被删除
    发表于 2005-10-21 12:56:46 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-11-4 11:37:57 | 显示全部楼层
    好好学习。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-1-14 10:34:55 | 显示全部楼层
    看见第四课了,真高兴。

    谢谢总坛主!!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-1-16 18:33:04 | 显示全部楼层
    感觉到难度了。。。。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2016-6-4 16:11
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-2-13 01:06:35 | 显示全部楼层
    复制一下,慢慢学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-3 20:31:07 | 显示全部楼层
    垫底[PYG]算法分析入门第二课
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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