**备份** 的追码 初学者的第一篇破文
【破文标题】**备份** 的追码【破文作者】GGLHY
【作者邮箱】
【作者主页】
【破解工具】PEID、AspackDie、OD
【破解平台】WINxp sp2
【软件名称】**备份**
【软件大小】
【原版下载】
【保护方式】ASPack 2.12 -> Alexey Solodovnikov壳 ASPack 2.12 -> Alexey Solodovnikov
【软件简介】**同步工具,能够将您重要的**资料进行自动备份
【破解声明】只为了解软件的保护技术、顺便看看非计算机专业的自己水平有多菜。时刻谨记:追码不为利只为艺!
------------------------------------------------------------------------------------------------------
【破解过程】 为尊重软件作者,特将该程序名以A.EXE代替。
1.先运行A.EXE,看见窗体上有“未购买用户”的字样。点注册窗口,随便填注册名和注册码,点注册验证,出现要求重起验证的对话框。
2.用PEID检测,是 ASPack 2.12 -> Alexey Solodovnikov 壳,用AspackDie脱之。将脱壳后程序改名为B.EXE。
3 OD载入B.EXE,F9运行,填入假码用户名:gglhy 注册码15987530,在OD反汇编窗口右键查找感兴趣的字符串,看到如下的信息:
Ultra String Reference
Address Disassembly Text String
.....(这里部分省略)...........
00526653 mov edx, 00526734 reguser
0052666F mov edx, 00526744 regno
00526682 mov edx, 00526754 filebackupchina
005266C3 mov edx, 0052676C - 未购买用户
005267DC mov edx, 0052684C 服务已经停止
005267FD mov edx, 00526864 服务已经停止。
005268F3 mov ecx, 00526924 提示
005268F8 mov edx, 0052692C 本软件需要注册后才能无限制使用,您现在要注册吗?
0052699A mov edx, 005269E4 cmd.exe /c
00526A15 mov edx, 00526A80 本软件已注册给:
.....(这里部分省略)...........
呵呵,关键信息出来了。先看“005266C3 movedx, 0052676C - 未购买用户”
这让你想起了什么?
再看“00526A15 movedx, 00526A80 本软件已注册给:”
比较一下005266C3与00526A15,看来未注册在注册成功的流程上方。
再看“00526653 movedx, 00526734 reguser”
还有“0052666F movedx, 00526744 regno”,想起前面的重起验证的对话框,再联系到刚才的未注册和注册成功都在很近的地方,基本上可以得出一个结论:这里的reguser和regno应该是程序重起后进行验证的信息。
好,双击“005266C3 movedx, 0052676C - 未购买用户”,来到这里:
00526649|.8BC3 mov eax, ebx
0052664B|.E8 1858F7FF call 0049BE68
00526650|.8D4D FC lea ecx,
00526653|.BA 34675200 mov edx, 00526734 ;reguser
00526658|.8BC3 mov eax, ebx
0052665A|.E8 D15BF7FF call 0049C230
0052665F|.8B55 FC mov edx,
00526662|.B8 DCD35200 mov eax, 0052D3DC ;ASCII "??
00526667|.E8 ACE2EDFF call 00404918
0052666C|.8D4D F8 lea ecx,
0052666F|.BA 44675200 mov edx, 00526744 ;regno
00526674|.8BC3 mov eax, ebx
00526676|.E8 B55BF7FF call 0049C230
0052667B|.8B45 F8 mov eax,
0052667E|.50 push eax
0052667F|.8D4D F4 lea ecx,
00526682|.BA 54675200 mov edx, 00526754 ;filebackupchina
00526687|.A1 DCD35200 mov eax,
0052668C|.E8 C3A2FDFF call 00500954
00526691|.8B55 F4 mov edx,
00526694|.58 pop eax
00526695|.E8 26E6EDFF call 00404CC0
0052669A|.75 07 jnz short 005266A3
0052669C|.C605 D8D35200>mov byte ptr ,>
005266A3|>8BC3 mov eax, ebx
005266A5|.E8 2AD3EDFF call 004039D4
005266AA|.803D D8D35200>cmp byte ptr ,>
005266B1|.75 27 jnz short 005266DA
005266B3|.8D55 F0 lea edx,
005266B6|.A1 D4D35200 mov eax,
005266BB|.E8 3819F2FF call 00447FF8
005266C0|.8D45 F0 lea eax,
005266C3|.BA 6C675200 mov edx, 0052676C ; - 未购买用户
005266C8|.E8 B7E4EDFF call 00404B84
........
接着向上看:看到 “reguser”“regno”,
在“00526653|.BA 34675200 mov edx, 00526734 ;reguser”处下断,点注册验证,呵呵,What happend?
看来重起验证是把注册信息加入到什么地方去了?先看看注册表,果然:
"RegUser"="gglhy"
"RegNo"="15987530"
好,OD重新载入,运行,在“00526653|.BA 34675200mov edx, 00526734;reguser”处断下来了,先F8走一遍,来到0052667B处,OD右边的寄存器的EAX出现了假码“15987530”,呵呵,要睁大眼睛哦,继续F8,来到00526691处,在OD右下方看到了什么?
0012FE08 00000000
0012FE0C 00ED3310ASCII "F44A615DA7621DA4"
0012FE10 00ED32E4ASCII "15987530"
0012FE14 00ED32D0ASCII "gglhy"
0012FE18/0012FE3C
F44A615DA7621DA4是不是长得很像注册码啊?
继续F8,来到
00526695|.E8 26E6EDFF call 00404CC0
0052669A|.75 07 jnz short 005266A3
0052669C|.C605 D8D35200>mov byte ptr ,>
005266A3|>8BC3 mov eax, ebx
005266A5|.E8 2AD3EDFF call 004039D4
005266AA|.803D D8D35200>cmp byte ptr ,>
005266B1|.75 27 jnz short 005266DA
005266B3|.8D55 F0 lea edx,
005266B6|.A1 D4D35200 mov eax,
005266BB|.E8 3819F2FF call 00447FF8
005266C0|.8D45 F0 lea eax,
005266C3|.BA 6C675200 mov edx, 0052676C ; - 未购买用户
看到在“005266C3|.BA 6C675200 mov edx, 0052676C ; - 未购买用户”前有两个JNZ,看来00526695处这个CALL是很关键的了。估计真码应该在这个时候之前出现了,那个F44A615DA7621DA4嫌疑真的很大!
F8继续,呵呵,N次F8以后,挂了。
那就先看看那个长得像注册码的F44A615DA7621DA4,把它填进去,呵呵,居然注册成功了!
到看看,
"RegUser"="gglhy"
"RegNo"="F44A615DA7621DA4"
删掉这个键值,变回 “- 未购买用户”
其实,这种明码比较容易追,否则,那就要研究算法了。
------------------------------------------------------------------------
【破解总结】 算法不懂(呵呵,下一步的目标是研究算法),不过想想不久前连什么是CALL、JE、JNZ等等都不懂的文科生,现在也能追追明码了,毕竟还是有了点点进步。呵呵,其实破解有时候对软件相关信息进行观察往往能够事半功倍!
呵呵,希望高手们多鼓励下我们这些菜菜鸟!毕竟没人生下来就是大师,我们都要一步一步往前行。
------------------------------------------------------------------------
【版权声明】请尊重软件作者的辛勤劳动,破解只为艺不为利! 好文章,继续努力。 现正看汇编,到时再跟楼主学习!! 希望高手们多鼓励下我们这些菜菜鸟!毕竟没人生下来就是大师,我们都要一步一步往前行。
--------/:good /:good 希望高手多写几篇适合超级新手看的。。有简单算法分析的文章 恩重启验证的呵呵
好像我还没有学会诶
只会简单的爆破,要是没有搜索字符,有点没辙
还在学习中啊 ~~
谢谢分享了啊 ~~ 一步一个脚印,让我们一起加油!! 加油加油!!!/:014 同是菜鸟~一起飞吧~ /:014 虽然简单,但还是支持。希望继续发表新作品。 ********************************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"注册完成,请重新运行程序!"
********************************************************************************
二、用PEiD对这个软件查壳,为 ASPack 2.12 -> Alexey Solodovnikov,
用PEiD插件脱壳,查壳,为 Borland Delphi 6.0 - 7.0
********************************************************************************
三、运行OD,打开FileBackup.exe.unpacked_,右键—超级字串参考—查找ASCII.
发现"注册完成,请重新运行程序!"
00523A84/.55 PUSH EBP
00523A85|.8BEC MOV EBP,ESP
00523A87|.6A 00 PUSH 0
00523A89|.6A 00 PUSH 0
00523A8B|.53 PUSH EBX
00523A8C|.56 PUSH ESI
00523A8D|.8BF0 MOV ESI,EAX
00523A8F|.33C0 XOR EAX,EAX
00523A91|.55 PUSH EBP
00523A92|.68 453B5200 PUSH FileBack.00523B45
00523A97|.64:FF30 PUSH DWORD PTR FS:
00523A9A|.64:8920 MOV DWORD PTR FS:,ESP
00523A9D|.B2 01 MOV DL,1
00523A9F|.A1 DCBA4900 MOV EAX,DWORD PTR DS:
00523AA4|.E8 9F81F7FF CALL FileBack.0049BC48
00523AA9|.8BD8 MOV EBX,EAX
00523AAB|.BA 01000080 MOV EDX,80000001
00523AB0|.8BC3 MOV EAX,EBX
00523AB2|.E8 6D82F7FF CALL FileBack.0049BD24
00523AB7|.B1 01 MOV CL,1
00523AB9|.BA 5C3B5200 MOV EDX,FileBack.00523B5C ;software\filebackup
00523ABE|.8BC3 MOV EAX,EBX ;//注册信息保存在Software\FileBackup
00523AC0|.E8 A383F7FF CALL FileBack.0049BE68
00523AC5|.8D55 FC LEA EDX,DWORD PTR SS:
00523AC8|.8B86 38030000 MOV EAX,DWORD PTR DS:
00523ACE|.E8 2545F2FF CALL FileBack.00447FF8 ;//将用户名长度送入EAX
00523AD3|.8B4D FC MOV ECX,DWORD PTR SS: ;//将用户名送入ECX
00523AD6|.BA 783B5200 MOV EDX,FileBack.00523B78 ;reguser
00523ADB|.8BC3 MOV EAX,EBX ;//将RegUser送入EDX
00523ADD|.E8 2287F7FF CALL FileBack.0049C204
00523AE2|.8D55 F8 LEA EDX,DWORD PTR SS:
00523AE5|.8B86 3C030000 MOV EAX,DWORD PTR DS:
00523AEB|.E8 0845F2FF CALL FileBack.00447FF8 ;//将试练码长度送入EAX
00523AF0|.8B4D F8 MOV ECX,DWORD PTR SS: ;//将试练码送入ECX
00523AF3|.BA 883B5200 MOV EDX,FileBack.00523B88 ;regno
00523AF8|.8BC3 MOV EAX,EBX ;//将RegNo送入EDX
00523AFA|.E8 0587F7FF CALL FileBack.0049C204
00523AFF|.8BC3 MOV EAX,EBX
00523B01|.E8 CEFEEDFF CALL FileBack.004039D4
00523B06|.6A 40 PUSH 40
00523B08|.B9 903B5200 MOV ECX,FileBack.00523B90 ;提示
00523B0D|.BA 983B5200 MOV EDX,FileBack.00523B98 ;注册完成,请重新运行程序!
00523B12|.A1 64A15200 MOV EAX,DWORD PTR DS:
00523B17|.8B00 MOV EAX,DWORD PTR DS:
00523B19|.E8 BE56F4FF CALL FileBack.004691DC ;//弹出对话框
00523B1E|.A1 64A15200 MOV EAX,DWORD PTR DS:
00523B23|.8B00 MOV EAX,DWORD PTR DS:
00523B25|.E8 0E56F4FF CALL FileBack.00469138
00523B2A|.33C0 XOR EAX,EAX
00523B2C|.5A POP EDX
00523B2D|.59 POP ECX
00523B2E|.59 POP ECX
00523B2F|.64:8910 MOV DWORD PTR FS:,EDX
00523B32|.68 4C3B5200 PUSH FileBack.00523B4C
00523B37|>8D45 F8 LEA EAX,DWORD PTR SS:
00523B3A|.BA 02000000 MOV EDX,2
00523B3F|.E8 A40DEEFF CALL FileBack.004048E8
00523B44\.C3 RETN
00523B45 .^ E9 1E06EEFF JMP FileBack.00404168
00523B4A .^ EB EB JMP SHORT FileBack.00523B37
00523B4C .5E POP ESI
00523B4D .5B POP EBX
00523B4E .59 POP ECX
00523B4F .59 POP ECX
00523B50 .5D POP EBP
00523B51 .C3 RETN
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注册信息保存在
"RegUser"和"RegNo"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00523AF3|.BA 883B5200 MOV EDX,FileBack.00523B88 ;regno //注册用
005262C3|.BA 98635200 MOV EDX,FileBack.00526398 ;regno //验证用
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00526258/.55 PUSH EBP
00526259|.8BEC MOV EBP,ESP
0052625B|.33C9 XOR ECX,ECX
0052625D|.51 PUSH ECX
0052625E|.51 PUSH ECX
0052625F|.51 PUSH ECX
00526260|.51 PUSH ECX
00526261|.53 PUSH EBX
00526262|.33C0 XOR EAX,EAX
00526264|.55 PUSH EBP
00526265|.68 56635200 PUSH FileBack.00526356
0052626A|.64:FF30 PUSH DWORD PTR FS:
0052626D|.64:8920 MOV DWORD PTR FS:,ESP
00526270|.E8 4BE0FFFF CALL FileBack.005242C0
00526275|.C605 D4C35200>MOV BYTE PTR DS:,0
0052627C|.B2 01 MOV DL,1
0052627E|.A1 DCBA4900 MOV EAX,DWORD PTR DS:
00526283|.E8 C059F7FF CALL FileBack.0049BC48
00526288|.8BD8 MOV EBX,EAX
0052628A|.BA 01000080 MOV EDX,80000001
0052628F|.8BC3 MOV EAX,EBX
00526291|.E8 8E5AF7FF CALL FileBack.0049BD24
00526296|.B1 01 MOV CL,1
00526298|.BA 6C635200 MOV EDX,FileBack.0052636C ;software\filebackup
0052629D|.8BC3 MOV EAX,EBX
0052629F|.E8 C45BF7FF CALL FileBack.0049BE68
005262A4|.8D4D FC LEA ECX,DWORD PTR SS:
005262A7|.BA 88635200 MOV EDX,FileBack.00526388 ;reguser
005262AC|.8BC3 MOV EAX,EBX
005262AE|.E8 7D5FF7FF CALL FileBack.0049C230
005262B3|.8B55 FC MOV EDX,DWORD PTR SS: ;//将用户名送入EDX
005262B6|.B8 D8C35200 MOV EAX,FileBack.0052C3D8
005262BB|.E8 58E6EDFF CALL FileBack.00404918
005262C0|.8D4D F8 LEA ECX,DWORD PTR SS:
005262C3|.BA 98635200 MOV EDX,FileBack.00526398 ;regno
005262C8|.8BC3 MOV EAX,EBX
005262CA|.E8 615FF7FF CALL FileBack.0049C230
005262CF|.8B45 F8 MOV EAX,DWORD PTR SS: ;//将试练码送入EAX
005262D2|.50 PUSH EAX ;//将试练码压栈
005262D3|.8D4D F4 LEA ECX,DWORD PTR SS:
005262D6|.BA A8635200 MOV EDX,FileBack.005263A8 ;filebackupchina
005262DB|.A1 D8C35200 MOV EAX,DWORD PTR DS: ;//将filebackupChina送入EDX
005262E0|.E8 0BA3FDFF CALL FileBack.005005F0 ;//算法CALL
005262E5|.8B55 F4 MOV EDX,DWORD PTR SS: ;//将真码送入EDX
005262E8|.58 POP EAX ;//将试练码出栈
005262E9|.E8 D2E9EDFF CALL FileBack.00404CC0 ;//比较CALL
005262EE|.75 07 JNZ SHORT FileBack.005262F7 ;//关键跳转
005262F0|.C605 D4C35200>MOV BYTE PTR DS:,1
005262F7|>8BC3 MOV EAX,EBX
005262F9|.E8 D6D6EDFF CALL FileBack.004039D4
005262FE|.803D D4C35200>CMP BYTE PTR DS:,0
00526305|.75 27 JNZ SHORT FileBack.0052632E
00526307|.8D55 F0 LEA EDX,DWORD PTR SS:
0052630A|.A1 D0C35200 MOV EAX,DWORD PTR DS:
0052630F|.E8 E41CF2FF CALL FileBack.00447FF8
00526314|.8D45 F0 LEA EAX,DWORD PTR SS:
00526317|.BA C0635200 MOV EDX,FileBack.005263C0 ; - 未购买用户
0052631C|.E8 63E8EDFF CALL FileBack.00404B84
00526321|.8B55 F0 MOV EDX,DWORD PTR SS:
00526324|.A1 D0C35200 MOV EAX,DWORD PTR DS:
00526329|.E8 FA1CF2FF CALL FileBack.00448028
0052632E|>E8 A9EAFFFF CALL FileBack.00524DDC
00526333|.33C0 XOR EAX,EAX
00526335|.5A POP EDX
00526336|.59 POP ECX
00526337|.59 POP ECX
00526338|.64:8910 MOV DWORD PTR FS:,EDX
0052633B|.68 5D635200 PUSH FileBack.0052635D
00526340|>8D45 F0 LEA EAX,DWORD PTR SS:
00526343|.E8 7CE5EDFF CALL FileBack.004048C4
00526348|.8D45 F4 LEA EAX,DWORD PTR SS:
0052634B|.BA 03000000 MOV EDX,3
00526350|.E8 93E5EDFF CALL FileBack.004048E8
00526355\.C3 RETN
00526356 .^ E9 0DDEEDFF JMP FileBack.00404168
0052635B .^ EB E3 JMP SHORT FileBack.00526340
0052635D .5B POP EBX
0052635E .8BE5 MOV ESP,EBP
00526360 .5D POP EBP
00526361 .C3 RETN
********************************************************************************
【破解总结】
--------------------------------------------------------------------------------
【内存注册机】
中断地址 5262E9
中断次数 1
第一字节 E8
指令长度 5
内存方式-寄存器-EDX
--------------------------------------------------------------------------------
【爆破地址】
005262EE|.75 07 JNZ SHORT FileBack.005262F7
NOP掉
--------------------------------------------------------------------------------
【注册信息】
用户名:abcdef
注册码:186628E6455FDDAB
--------------------------------------------------------------------------------
希望以后可以在猫老大和PYG 5.4Cracker学习小组的帮助下进一步提高自己。
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
页:
[1]
2