专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »逆向工程 » 破解精装友情通讯录 V2005 Build 11.20 简单分析(图) »正文

破解精装友情通讯录 V2005 Build 11.20 简单分析(图)

来源: 发布时间:星期四, 2009年3月12日 浏览:0次 评论:0
【破文标题】精装友情通讯录 V2005 Build 11.20 简单分析
【破文作者】Nisy
【作者邮箱】[email protected]
【作者主页】bbs.chinapyg.com
【破解工具】PEiD v0.94、ODICEv1.10(汉化第 2版)
【破解平台】Win XPsp2
【软件Software名称】精装友情通讯录 V2005 Build 11.20
【软件Software大小】1722 KB
【保护方式】注册码
【原版下载】http://www.skycn.com/soft/10355.html

05年时候软件Software两年多未更新了加密强度相对来说不高我们通过分析这个软件Software来讲解下该软件Software验证方式、暴破
步PEiD插壳:Borland Delphi 6.0 - 7.0 无壳我们打开软件Software随意输入注册码注册看软件Software给我们什么提示以来是个对话框:“注册失败请重新注册!”=SpellE>=GramE>

这是=GramE>很关键信息通过他就可以有放矢来动态调试这个软件Software在该上右键我们OD载入该软件Software

我们在OD反汇编窗口点右键:选择Find ASCII


OK我们软件SoftwareASCII关键中找到注册失败在该行我们左键双击使其来到ODCPU窗口该句代码处

我们观看看到该行有个红色箭头从=GramE>上方指下来我们从该行代码向上找在上方=SpellE>retn语句PUSH这里下断(这里就是软件Software注册部分开始)F2或者左键双击该行Hex 数据这部分该行地址部分就会以红色表示我们已经成功下断

我们F8向下跟踪来到这里:

我们F8运行到0051539A行代码时候可以看到寄存器窗口EAX和EDX进行了真假码比较我们F8来到下行代码
我们看到这JNZ语句已经实现跳转(以默认红色显示)这里如果跳走软件Software就会执行“注册失败”代码我们在这里修改其代码暴力破解
在该行点空格出现汇编于此处代码我们在这里将“=SpellE>jnz”修改为“=SpellE>jz” 次汇编后我们看到该行语句已经变为了“JZ”

然后在我们修改后那行点右键如图操作:


我们为我们修改后文件重新命名保存即可=GramE>此时暴破完成
 
如果不修改该行代码其实我们也可以达到使其不跳转我们在寄存器窗口在标志未“Z”上左键双击为“1”(上方比较=GramE>处其实修改就是这里标志位)这里我们就发现该跳转已经变为了灰色接着我们继续跟踪看软件Software注册信息保存在哪里这里大家要注意软件Software在注册成功的后代码般包含了将注册信息保存在哪里软件Software注册信息我们定要尽力追到保存位置

该软件SoftwareOD简单分析(算法部分省略)

00515264  /.  55            push    ebp                         ;  我们在这里下断点 然后F8路向下即可
00515265  |.  8BEC          mov     ebp, esp
00515267  |.  B9 17000000   mov     ecx, 17
0051526C  |>  6A 00         /push    0
0051526E  |.  6A 00         |push    0
00515270  |.  49            |dec     ecx
00515271  |.^ 75 F9         \jnz      0051526C
00515273  |.  53            push    ebx
00515274  |.  56            push    esi
00515275  |.  8BD8          mov     ebx, eax
00515277  |.  33C0          xor     eax, eax
00515279  |.  55            push    ebp
0051527A  |.  68 E9545100   push    005154E9
0051527F  |.  64:FF30       push    dword ptr fs:[eax]
00515282  |.  64:8920       mov     dword ptr fs:[eax], esp
00515285  |.  68 80000000   push    80                          ; /BufSize = 80 (128.)
0051528A  |.  8D85 7BFFFFFF lea     eax, dword ptr [ebp-85]     ; |
00515290  |.  50            push    eax                         ; |Buffer
00515291  |.  E8 B220EFFF   call    <jmp.&kernel32.GetDir>; \GetDirectoryA
00515296  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
00515299  |.  8D95 7BFFFFFF lea     edx, dword ptr [ebp-85]
0051529F  |.  B9 81000000   mov     ecx, 81
005152A4  |.  E8 DBF9EEFF   call    00404C84
005152A9  |.  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
005152AF  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
005152B5  |.  E8 F2D8F2FF   call    00442BAC                    ;  这里取出我们输入注册码位数 在EAX寄存器中
005152BA  |.  83BD 74FFFFFF>cmp     dword ptr [ebp-8C], 0       ;  我们输入注册码位数和0比较
005152C1  |.  74 1A         je       005152DD              ;  如果和0相等就跳向“注册信息没有填写齐全”对话框
005152C3  |.  8D95 70FFFFFF lea     edx, dword ptr [ebp-90]
005152C9  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
005152CF  |.  E8 D8D8F2FF   call    00442BAC                    ;  这里取我们输入定单号位数 放EAX寄存器中
005152D4  |.  83BD 70FFFFFF>cmp     dword ptr [ebp-90], 0       ;  和0比较
005152DB  |.  75 0F         jnz      005152EC              ;  相等就飞走
005152DD  |>  B8 00555100   mov     eax, 00515500               ;  注册信息没有填写齐全
005152E2  |.  E8 B96AF2FF   call    0043BDA0
005152E7  |.  E9 80010000   jmp     0051546C
005152EC  |>  8D95 6CFFFFFF lea     edx, dword ptr [ebp-94]
005152F2  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
005152F8  |.  E8 AFD8F2FF   call    00442BAC
005152FD  |.  8B85 6CFFFFFF mov     eax, dword ptr [ebp-94]
00515303  |.  50            push    eax
00515304  |.  8D95 60FFFFFF lea     edx, dword ptr [ebp-A0]
0051530A  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515310  |.  E8 97D8F2FF   call    00442BAC
00515315  |.  8B85 60FFFFFF mov     eax, dword ptr [ebp-A0]
0051531B  |.  E8 9042EFFF   call    004095B0
00515320  |.  B9 40080000   mov     ecx, 840
00515325  |.  99            cdq
00515326  |.  F7F9          idiv    ecx
00515328  |.  8BC2          mov     eax, edx
0051532A  |.  8D95 64FFFFFF lea     edx, dword ptr [ebp-9C]
00515330  |.  E8 1742EFFF   call    0040954C
00515335  |.  FFB5 64FFFFFF push    dword ptr [ebp-9C]
0051533B  |.  8D95 54FFFFFF lea     edx, dword ptr [ebp-AC]
00515341  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515347  |.  E8 60D8F2FF   call    00442BAC
0051534C  |.  8B85 54FFFFFF mov     eax, dword ptr [ebp-AC]
00515352  |.  E8 5942EFFF   call    004095B0
00515357  |.  8D95 58FFFFFF lea     edx, dword ptr [ebp-A8]
0051535D  |.  E8 C6FCFFFF   call    00515028
00515362  |.  8B85 58FFFFFF mov     eax, dword ptr [ebp-A8]
00515368  |.  E8 4342EFFF   call    004095B0
0051536D  |.  8D95 5CFFFFFF lea     edx, dword ptr [ebp-A4]
00515373  |.  E8 90FDFFFF   call    00515108
00515378  |.  FFB5 5CFFFFFF push    dword ptr [ebp-A4]
0051537E  |.  68 20555100   push    00515520                    ;  1
00515383  |.  8D85 68FFFFFF lea     eax, dword ptr [ebp-98]
00515389  |.  BA 03000000   mov     edx, 3
0051538E  |.  E8 01FAEEFF   call    00404D94
00515393  |.  8B95 68FFFFFF mov     edx, dword ptr [ebp-98]
00515399  |.  58            pop     eax                         ;  上方汇编语言是来计算软件Software正确注册码 我们这里不做分析
0051539A  |.  E8 79FAEEFF   call    00404E18                    ;  这个Call 用来比较真假注册码 我们看寄存器窗口
0051539F      0F85 A3000000 jnz     00515448                    ;  还记得这个跳转吧 如果跳走 软件Software注册失败
005153A5  |.  B8 2C555100   mov     eax, 0051552C               ;  注册码正确感谢你注册!
005153AA  |.  E8 F169F2FF   call    0043BDA0                    ;  如果不跳走则向系统写入正确注册信息
005153AF  |.  A1 109C5300   mov     eax, dword ptr [539C10]
005153B4  |.  8B00          mov     eax, dword ptr [eax]
005153B6  |.  8B80 C8040000 mov     eax, dword ptr [eax+4C8]
005153BC  |.  8B80 08020000 mov     eax, dword ptr [eax+208]
005153C2  |.  33D2          xor     edx, edx
005153C4  |.  E8 A79BF5FF   call    0046EF70
005153C9  |.  BA 50555100   mov     edx, 00515550               ;  精装友情-软件Software已注册
005153CE  |.  E8 F99AF5FF   call    0046EECC                    ;  这里弹出“注册成功”对话框 点确定后 又返回到OD 我们继续向下分析看注册信息保存到哪里
005153D3  |.  8D85 50FFFFFF lea     eax, dword ptr [ebp-B0]
005153D9  |.  B9 6C555100   mov     ecx, 0051556C               ;  \hdwl21.dll
005153DE  |.  8B55 FC       mov     edx, dword ptr [ebp-4]      ;  OK 这里基本上就可以断定注册信息保存在C:\WINDOWS\system32\hdwl21.dll文件中 我们收工
005153E1  |.  E8 3AF9EEFF   call    00404D20
005153E6  |.  8B8D 50FFFFFF mov     ecx, dword ptr [ebp-B0]     ;   上方注册信息地址 我们看OD信息窗口看到这个:C:\WINDOWS\system32\ 所以才得出这个结论
005153EC  |.  B2 01         mov     dl, 1
005153EE  |.  A1 8C424600   mov     eax, dword ptr [46428C]
005153F3  |.  E8 44EFF4FF   call    0046433C
005153F8  |.  8BF0          mov     esi, eax
005153FA  |.  8D95 4CFFFFFF lea     edx, dword ptr [ebp-B4]
00515400  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515406  |.  E8 A1D7F2FF   call    00442BAC
0051540B  |.  8B85 4CFFFFFF mov     eax, dword ptr [ebp-B4]
00515411  |.  50            push    eax
00515412  |.  B9 80555100   mov     ecx, 00515580               ;  et567
00515417  |.  BA 94555100   mov     edx, 00515594               ;  sym
0051541C  |.  8BC6          mov     eax, esi
0051541E  |.  8B18          mov     ebx, dword ptr [eax]
00515420  |.  FF53 04       call    dword ptr [ebx+4]
00515423  |.  8D85 48FFFFFF lea     eax, dword ptr [ebp-B8]
00515429  |.  B9 A0555100   mov     ecx, 005155A0               ;  \hdw121.dll
0051542E  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
00515431  |.  E8 EAF8EEFF   call    00404D20
00515436  |.  8B85 48FFFFFF mov     eax, dword ptr [ebp-B8]
0051543C  |.  BA 02000000   mov     edx, 2
00515441  |.  E8 9644EFFF   call    004098DC
00515446  |.  EB 24         jmp      0051546C
00515448  |>  B8 B4555100   mov     eax, 005155B4               ;  注册失败请重新注册!


OK我们跟出了注册信息保存在哪里(C:\WINDOWS\system32\hdwl21.dll文件中)现在就去该文件看看我们用记事本打开该文件(DLL文件还能用记事本打开?呵呵这里是软件Software作者偷懒了现在更多软件Software都会对注册信息先进行加密在保存)

hdwl21.dll文件中内容:
[sym]
et567=2597758

这里保存就是我们输入定单号那为什么我们修改个跳转就达到了软件Software注册呢?由于时间关系这里就不再详述只是简单把软件Software验证思路和大家说下:软件Software在重新启动时肯定要软件Software保存注册信息来判断软件Software是否已注册而该软件Software判断注册和否标志呢就是看系统中是否存在hdwl21.dll这个文件至于文件中有什么信息无所谓大家把hdwl21.dll文件中内容删除后再打开软件Software呵呵仍是注册版点也可以说是该软件Software加密上个败笔
 1 2 



该软件SoftwareOD简单分析(算法部分省略)

00515264  /.  55            push    ebp                         ;  我们在这里下断点 然后F8路向下即可
00515265  |.  8BEC          mov     ebp, esp
00515267  |.  B9 17000000   mov     ecx, 17
0051526C  |>  6A 00         /push    0
0051526E  |.  6A 00         |push    0
00515270  |.  49            |dec     ecx
00515271  |.^ 75 F9         \jnz      0051526C
00515273  |.  53            push    ebx
00515274  |.  56            push    esi
00515275  |.  8BD8          mov     ebx, eax
00515277  |.  33C0          xor     eax, eax
00515279  |.  55            push    ebp
0051527A  |.  68 E9545100   push    005154E9
0051527F  |.  64:FF30       push    dword ptr fs:[eax]
00515282  |.  64:8920       mov     dword ptr fs:[eax], esp
00515285  |.  68 80000000   push    80                          ; /BufSize = 80 (128.)
0051528A  |.  8D85 7BFFFFFF lea     eax, dword ptr [ebp-85]     ; |
00515290  |.  50            push    eax                         ; |Buffer
00515291  |.  E8 B220EFFF   call    <jmp.&kernel32.GetDir>; \GetDirectoryA
00515296  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
00515299  |.  8D95 7BFFFFFF lea     edx, dword ptr [ebp-85]
0051529F  |.  B9 81000000   mov     ecx, 81
005152A4  |.  E8 DBF9EEFF   call    00404C84
005152A9  |.  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
005152AF  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
005152B5  |.  E8 F2D8F2FF   call    00442BAC                    ;  这里取出我们输入注册码位数 在EAX寄存器中
005152BA  |.  83BD 74FFFFFF>cmp     dword ptr [ebp-8C], 0       ;  我们输入注册码位数和0比较
005152C1  |.  74 1A         je       005152DD              ;  如果和0相等就跳向“注册信息没有填写齐全”对话框
005152C3  |.  8D95 70FFFFFF lea     edx, dword ptr [ebp-90]
005152C9  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
005152CF  |.  E8 D8D8F2FF   call    00442BAC                    ;  这里取我们输入定单号位数 放EAX寄存器中
005152D4  |.  83BD 70FFFFFF>cmp     dword ptr [ebp-90], 0       ;  和0比较
005152DB  |.  75 0F         jnz      005152EC              ;  相等就飞走
005152DD  |>  B8 00555100   mov     eax, 00515500               ;  注册信息没有填写齐全
005152E2  |.  E8 B96AF2FF   call    0043BDA0
005152E7  |.  E9 80010000   jmp     0051546C
005152EC  |>  8D95 6CFFFFFF lea     edx, dword ptr [ebp-94]
005152F2  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
005152F8  |.  E8 AFD8F2FF   call    00442BAC
005152FD  |.  8B85 6CFFFFFF mov     eax, dword ptr [ebp-94]
00515303  |.  50            push    eax
00515304  |.  8D95 60FFFFFF lea     edx, dword ptr [ebp-A0]
0051530A  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515310  |.  E8 97D8F2FF   call    00442BAC
00515315  |.  8B85 60FFFFFF mov     eax, dword ptr [ebp-A0]
0051531B  |.  E8 9042EFFF   call    004095B0
00515320  |.  B9 40080000   mov     ecx, 840
00515325  |.  99            cdq
00515326  |.  F7F9          idiv    ecx
00515328  |.  8BC2          mov     eax, edx
0051532A  |.  8D95 64FFFFFF lea     edx, dword ptr [ebp-9C]
00515330  |.  E8 1742EFFF   call    0040954C
00515335  |.  FFB5 64FFFFFF push    dword ptr [ebp-9C]
0051533B  |.  8D95 54FFFFFF lea     edx, dword ptr [ebp-AC]
00515341  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515347  |.  E8 60D8F2FF   call    00442BAC
0051534C  |.  8B85 54FFFFFF mov     eax, dword ptr [ebp-AC]
00515352  |.  E8 5942EFFF   call    004095B0
00515357  |.  8D95 58FFFFFF lea     edx, dword ptr [ebp-A8]
0051535D  |.  E8 C6FCFFFF   call    00515028
00515362  |.  8B85 58FFFFFF mov     eax, dword ptr [ebp-A8]
00515368  |.  E8 4342EFFF   call    004095B0
0051536D  |.  8D95 5CFFFFFF lea     edx, dword ptr [ebp-A4]
00515373  |.  E8 90FDFFFF   call    00515108
00515378  |.  FFB5 5CFFFFFF push    dword ptr [ebp-A4]
0051537E  |.  68 20555100   push    00515520                    ;  1
00515383  |.  8D85 68FFFFFF lea     eax, dword ptr [ebp-98]
00515389  |.  BA 03000000   mov     edx, 3
0051538E  |.  E8 01FAEEFF   call    00404D94
00515393  |.  8B95 68FFFFFF mov     edx, dword ptr [ebp-98]
00515399  |.  58            pop     eax                         ;  上方汇编语言是来计算软件Software正确注册码 我们这里不做分析
0051539A  |.  E8 79FAEEFF   call    00404E18                    ;  这个Call 用来比较真假注册码 我们看寄存器窗口
0051539F      0F85 A3000000 jnz     00515448                    ;  还记得这个跳转吧 如果跳走 软件Software注册失败
005153A5  |.  B8 2C555100   mov     eax, 0051552C               ;  注册码正确感谢你注册!
005153AA  |.  E8 F169F2FF   call    0043BDA0                    ;  如果不跳走则向系统写入正确注册信息
005153AF  |.  A1 109C5300   mov     eax, dword ptr [539C10]
005153B4  |.  8B00          mov     eax, dword ptr [eax]
005153B6  |.  8B80 C8040000 mov     eax, dword ptr [eax+4C8]
005153BC  |.  8B80 08020000 mov     eax, dword ptr [eax+208]
005153C2  |.  33D2          xor     edx, edx
005153C4  |.  E8 A79BF5FF   call    0046EF70
005153C9  |.  BA 50555100   mov     edx, 00515550               ;  精装友情-软件Software已注册
005153CE  |.  E8 F99AF5FF   call    0046EECC                    ;  这里弹出“注册成功”对话框 点确定后 又返回到OD 我们继续向下分析看注册信息保存到哪里
005153D3  |.  8D85 50FFFFFF lea     eax, dword ptr [ebp-B0]
005153D9  |.  B9 6C555100   mov     ecx, 0051556C               ;  \hdwl21.dll
005153DE  |.  8B55 FC       mov     edx, dword ptr [ebp-4]      ;  OK 这里基本上就可以断定注册信息保存在C:\WINDOWS\system32\hdwl21.dll文件中 我们收工
005153E1  |.  E8 3AF9EEFF   call    00404D20
005153E6  |.  8B8D 50FFFFFF mov     ecx, dword ptr [ebp-B0]     ;   上方注册信息地址 我们看OD信息窗口看到这个:C:\WINDOWS\system32\ 所以才得出这个结论
005153EC  |.  B2 01         mov     dl, 1
005153EE  |.  A1 8C424600   mov     eax, dword ptr [46428C]
005153F3  |.  E8 44EFF4FF   call    0046433C
005153F8  |.  8BF0          mov     esi, eax
005153FA  |.  8D95 4CFFFFFF lea     edx, dword ptr [ebp-B4]
00515400  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
00515406  |.  E8 A1D7F2FF   call    00442BAC
0051540B  |.  8B85 4CFFFFFF mov     eax, dword ptr [ebp-B4]
00515411  |.  50            push    eax
00515412  |.  B9 80555100   mov     ecx, 00515580               ;  et567
00515417  |.  BA 94555100   mov     edx, 00515594               ;  sym
0051541C  |.  8BC6          mov     eax, esi
0051541E  |.  8B18          mov     ebx, dword ptr [eax]
00515420  |.  FF53 04       call    dword ptr [ebx+4]
00515423  |.  8D85 48FFFFFF lea     eax, dword ptr [ebp-B8]
00515429  |.  B9 A0555100   mov     ecx, 005155A0               ;  \hdw121.dll
0051542E  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
00515431  |.  E8 EAF8EEFF   call    00404D20
00515436  |.  8B85 48FFFFFF mov     eax, dword ptr [ebp-B8]
0051543C  |.  BA 02000000   mov     edx, 2
00515441  |.  E8 9644EFFF   call    004098DC
00515446  |.  EB 24         jmp      0051546C
00515448  |>  B8 B4555100   mov     eax, 005155B4               ;  注册失败请重新注册!


OK我们跟出了注册信息保存在哪里(C:\WINDOWS\system32\hdwl21.dll文件中)现在就去该文件看看我们用记事本打开该文件(DLL文件还能用记事本打开?呵呵这里是软件Software作者偷懒了现在更多软件Software都会对注册信息先进行加密在保存)

hdwl21.dll文件中内容:
[sym]
et567=2597758

这里保存就是我们输入定单号那为什么我们修改个跳转就达到了软件Software注册呢?由于时间关系这里就不再详述只是简单把软件Software验证思路和大家说下:软件Software在重新启动时肯定要软件Software保存注册信息来判断软件Software是否已注册而该软件Software判断注册和否标志呢就是看系统中是否存在hdwl21.dll这个文件至于文件中有什么信息无所谓大家把hdwl21.dll文件中内容删除后再打开软件Software呵呵仍是注册版点也可以说是该软件Software加密上个败笔
 1 2 


标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: