飘云 发表于 2005-12-21 17:38:22

强力抓屏 3.1.0.0.200 机器码产生过程与算法研究

【破文标题】强力抓屏 3.1.0.0.200 机器码产生过程与算法研究
【破解平台】WinXp
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【作者邮箱】[email protected]
【软件名称】强力抓屏 3.1.0.0.200
【软件大小】403kb
【下载地址】http://crc.onlinedown.net/soft/21782.htm
【破解工具】PEiD0.94、DEDE、OD
【保护方式】序列号
【软件简介】 “强力抓屏”是一个运行于Windows操作系统下的应用软件,她主要应用于针对屏幕选取和保存。
“强力抓屏”提供了以下主要功能:
  1.方便用户抓屏
  2.便捷的图象内容的复制、粘贴和保存
    3. 方便制作清晰的插图说明书
【破解目的】学习破解。
【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
【破解过程】 Peid 探测ASPack 2.12 -> Alexey Solodovnikov    脱壳过程不写了~ 程序为Borland Delphi 6.0 - 7.0编写

1.机器码生产过程分析:
用DEDE找到如下关键:

004B559D   8D40 00         lea eax,dword ptr ds:
004B55A0   53                push ebx
004B55A1   83C4 E8         add esp,-18
004B55A4   B8 04000000       mov eax,4
004B55A9   E8 9ED1F4FF       call unpacked.0040274C
004B55AE   8BD8            mov ebx,eax
004B55B0   6A 00             push 0
004B55B2   6A 00             push 0
004B55B4   8D4424 18         lea eax,dword ptr ss:[esp+>
004B55B8   50                push eax
004B55B9   8D4424 18         lea eax,dword ptr ss:[esp+>
004B55BD   50                push eax
004B55BE   53                push ebx
004B55BF   6A 00             push 0
004B55C1   6A 00             push 0
004B55C3   68 F4554B00       push unpacked.004B55F4   ; ASCII "C:\"
004B55C8   E8 8B14F5FF       call <jmp.&kernel32.GetVolumeInformationA>               ; 取C盘序列号
004B55CD   8B03            mov eax,dword ptr ds: ; 16进制保存到eax
004B55CF   99                cdq                        ; CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)
004B55D0   33C2            xor eax,edx                ; 和 edx(上面得到符号,我这里是负数FFFFFFFF) xor运算
004B55D2   2BC2            sub eax,edx                ; eax = eax -edx
004B55D4   894424 14         mov dword ptr ss:,>; 保存到
004B55D8   DB4424 14         fild dword ptr ss: ; 浮点
004B55DC   DB3C24            fstp tbyte ptr ss:    ; 此时关键东西已经生成注意看浮点寄存器
004B55DF   9B                wait
004B55E0   BA 04000000       mov edx,4
004B55E5   8BC3            mov eax,ebx
004B55E7   E8 80D1F4FF       call unpacked.0040276C
004B55EC   DB2C24            fld tbyte ptr ss:
004B55EF   83C4 18         add esp,18
004B55F2   5B                pop ebx
004B55F3   C3                retn

004A05B0   E8 EB4F0100       call unpacked.004B55A0         ; 关键call(就是上面的分析)
004A05B5   83C4 F4         add esp,-0C
004A05B8   DB3C24            fstp tbyte ptr ss:
004A05BB   9B                wait
004A05BC   8D45 F8         lea eax,dword ptr ss:
004A05BF   E8 F09AF6FF       call unpacked.0040A0B4         ; 这个不用跟了
004A05C4   8B45 F8         mov eax,dword ptr ss:   ; call 004b55a0得返回值送eax
004A05C7   8D55 FC         lea edx,dword ptr ss:
004A05CA   E8 29500100       call unpacked.004B55F8         ; 反序处理
004A05CF   8B55 FC         mov edx,dword ptr ss:   ; edx中即是机器码了~~
004A05D2   8B83 98030000   mov eax,dword ptr ds:
004A05D8   E8 1314FAFF       call unpacked.004419F0



2.注册算法分析:
004A1983   53                push ebx
004A1984   33C0            xor eax,eax
004A1986   55                push ebp
004A1987   68 971C4A00       push unpacked.004A1C97
004A198C   64:FF30         push dword ptr fs:
004A198F   64:8920         mov dword ptr fs:,esp
004A1992   B3 01             mov bl,1
004A1994   B2 01             mov dl,1
004A1996   A1 C47D4600       mov eax,dword ptr ds:
004A199B   E8 2465FCFF       call unpacked.00467EC4
004A19A0   8945 FC         mov dword ptr ss:,eax
004A19A3   33C0            xor eax,eax
004A19A5   55                push ebp
004A19A6   68 531C4A00       push unpacked.004A1C53
004A19AB   64:FF30         push dword ptr fs:
004A19AE   64:8920         mov dword ptr fs:,esp
004A19B1   BA 02000080       mov edx,80000002
004A19B6   8B45 FC         mov eax,dword ptr ss:
004A19B9   E8 A665FCFF       call unpacked.00467F64
004A19BE   B1 01             mov cl,1
004A19C0   BA AC1C4A00       mov edx,unpacked.004A1CAC         ; ASCII "Software\Microsoft\Windows\CurrentVersion\Visual Basic 6.0"
004A19C5   8B45 FC         mov eax,dword ptr ss:
004A19C8   E8 FB65FCFF       call unpacked.00467FC8
004A19CD   84C0            test al,al
004A19CF   0F84 68020000   je unpacked.004A1C3D
004A19D5   84DB            test bl,bl
004A19D7   0F84 60020000   je unpacked.004A1C3D
004A19DD   A1 D47E4B00       mov eax,dword ptr ds:
004A19E2   8B00            mov eax,dword ptr ds:
004A19E4   8B10            mov edx,dword ptr ds:
004A19E6   FF92 E8000000   call dword ptr ds:
004A19EC   A1 507B4B00       mov eax,dword ptr ds:
004A19F1   8038 00         cmp byte ptr ds:,0
004A19F4   0F84 25020000   je unpacked.004A1C1F
004A19FA   E8 A13B0100       call unpacked.004B55A0
004A19FF   83C4 F4         add esp,-0C
004A1A02   DB3C24            fstp tbyte ptr ss:
004A1A05   9B                wait
004A1A06   8D45 F4         lea eax,dword ptr ss:
004A1A09   E8 A686F6FF       call unpacked.0040A0B4
004A1A0E   8B45 F4         mov eax,dword ptr ss:
004A1A11   8D55 F8         lea edx,dword ptr ss:
004A1A14   E8 DF3B0100       call unpacked.004B55F8
004A1A19   8B55 F8         mov edx,dword ptr ss:
004A1A1C   A1 D47E4B00       mov eax,dword ptr ds:
004A1A21   8B00            mov eax,dword ptr ds:
004A1A23   8B80 98030000   mov eax,dword ptr ds:
004A1A29   E8 C2FFF9FF       call unpacked.004419F0
004A1A2E   E8 6D3B0100       call unpacked.004B55A0
004A1A33   83C4 F4         add esp,-0C
004A1A36   DB3C24            fstp tbyte ptr ss:
004A1A39   9B                wait
004A1A3A   8D45 E8         lea eax,dword ptr ss:
004A1A3D   E8 7286F6FF       call unpacked.0040A0B4
004A1A42   8B45 E8         mov eax,dword ptr ss:
004A1A45   8D55 EC         lea edx,dword ptr ss:
004A1A48   E8 AB3B0100       call unpacked.004B55F8
004A1A4D   8B45 EC         mov eax,dword ptr ss:
004A1A50   E8 BB87F6FF       call unpacked.0040A210
004A1A55   D805 E81C4A00   fadd dword ptr ds:      ; +99
004A1A5B   D80D EC1C4A00   fmul dword ptr ds:      ; ×88
004A1A61   D825 F01C4A00   fsub dword ptr ds:      ; -77
004A1A67   D835 F41C4A00   fdiv dword ptr ds:      ; /66
004A1A6D   E8 9E0FF6FF       call unpacked.00402A10            ; 四舍五入处理~    得到的返回值就是注册码前段~
004A1A72   8945 E0         mov dword ptr ss:,eax
004A1A75   8955 E4         mov dword ptr ss:,edx
004A1A78   DF6D E0         fild qword ptr ss:
004A1A7B   83C4 F4         add esp,-0C
004A1A7E   DB3C24            fstp tbyte ptr ss:
004A1A81   9B                wait
004A1A82   8D45 F0         lea eax,dword ptr ss:
004A1A85   E8 2A86F6FF       call unpacked.0040A0B4
004A1A8A   8D45 F0         lea eax,dword ptr ss:
004A1A8D   50                push eax
004A1A8E   E8 0D3B0100       call unpacked.004B55A0
004A1A93   83C4 F4         add esp,-0C
004A1A96   DB3C24            fstp tbyte ptr ss:
004A1A99   9B                wait
004A1A9A   8D45 D4         lea eax,dword ptr ss:
004A1A9D   E8 1286F6FF       call unpacked.0040A0B4
004A1AA2   8B45 D4         mov eax,dword ptr ss:
004A1AA5   8D55 D8         lea edx,dword ptr ss:
004A1AA8   E8 4B3B0100       call unpacked.004B55F8
004A1AAD   8B45 D8         mov eax,dword ptr ss:
004A1AB0   8A50 03         mov dl,byte ptr ds:      ; 机器码第4位 做为注册码后段
004A1AB3   8D45 DC         lea eax,dword ptr ss:
004A1AB6   E8 D92AF6FF       call unpacked.00404594
004A1ABB   8B55 DC         mov edx,dword ptr ss:
004A1ABE   58                pop eax
004A1ABF   E8 B02BF6FF       call unpacked.00404674            ; 上面计算的结果和机器码第4位连接
004A1AC4   8B45 F0         mov eax,dword ptr ss:
004A1AC7   50                push eax
004A1AC8   8D55 D0         lea edx,dword ptr ss:
004A1ACB   A1 D47E4B00       mov eax,dword ptr ds:
004A1AD0   8B00            mov eax,dword ptr ds:
004A1AD2   8B80 84030000   mov eax,dword ptr ds:
004A1AD8   E8 E3FEF9FF       call unpacked.004419C0
004A1ADD   8B55 D0         mov edx,dword ptr ss:
004A1AE0   58                pop eax
004A1AE1   E8 CA2CF6FF       call unpacked.004047B0            ; 经典代码~
004A1AE6   0F85 13010000   jnz unpacked.004A1BFF             ; 爆破点


【算法总结】
1.机器码生成:取C盘序列号-转换-得到正数-反序
2.((机器码+99)×88-77)/66结果四舍五入~然后取机器码第4位 连接起来即为注册码~

【算法注册机】    太简单了~~~

Dim code As String
Dim reg As Double
code = Text1.Text   
    If code <> "" Then
      reg = Round(((Val(code) + 99) * 88 - 77) / 66)      
      Text2.Text = reg & Mid(code, 4, 1)
            Else
            Text2.Text = "请输入完整信息!"
            End If


附:注册信息保存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Visual Basic 6.0删除可以重新研究~

【版权声明】 本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

飘云 发表于 2005-12-21 17:41:37

演示动画已制作完毕

风球 发表于 2005-12-21 18:15:03

我也刚分析完这个东东 ```哈```

yyjpcx 发表于 2005-12-21 19:52:16

呵呵!~~~才看到!~~~又有动画了!~~不错

BTW:Borland Delphi 6.0 - 7.0的程序
怎么要去???
附:注册信息保存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Visual Basic 6.0

风球 发表于 2005-12-21 20:05:38

原帖由 yyjpcx 于 2005-12-21 07:52 PM 发表
呵呵!~~~才看到!~~~又有动画了!~~不错

BTW:Borland Delphi 6.0 - 7.0的程序
怎么要去???
附:注册信息保存在:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Visual Basic 6.0

呵```可能是软件作者故意用来蒙人的吧```哈```注册信息

Windows Registry Editor Version 5.00


"Visual Basic"=hex:00,00,a9,6a,c3,57,38,42

飘云 发表于 2005-12-21 21:41:11

原帖由 风球 于 2005-12-21 08:05 PM 发表


呵```可能是软件作者故意用来蒙人的吧```哈```注册信息

Windows Registry Editor Version 5.00


"Visual Basi ...


确实

误认为是VB 哈哈~~

soyushi 发表于 2005-12-22 08:36:31

怎么显示的是这?

UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

lzq1973 发表于 2005-12-22 11:09:10

高啊。。。。。。。。。。。。。

冷血书生 发表于 2005-12-23 01:03:53

好文啊!!!

Nisy 发表于 2005-12-23 07:02:09

呵呵~
页: [1] 2
查看完整版本: 强力抓屏 3.1.0.0.200 机器码产生过程与算法研究