破解精装友情通讯录 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加密上个败笔 该软件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加密上个败笔 0
相关文章读者评论发表评论 |
|