| 
注册时间2004-12-1
阅读权限255
最后登录1970-1-1UID2 总坛主   
 
 TA的每日心情|  | 开心 2024-12-1 11:04
 | 
|---|
 签到天数: 12 天 [LV.3]偶尔看看II | 
 
| 【破文标题】[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,删除后可继续研究
 
 
 【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
 | 
 |