GGLHY 发表于 2008-1-4 10:10:51

**备份** 的追码 初学者的第一篇破文

【破文标题】**备份** 的追码
【破文作者】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等等都不懂的文科生,现在也能追追明码了,毕竟还是有了点点进步。呵呵,其实破解有时候对软件相关信息进行观察往往能够事半功倍!

呵呵,希望高手们多鼓励下我们这些菜菜鸟!毕竟没人生下来就是大师,我们都要一步一步往前行。
------------------------------------------------------------------------
【版权声明】请尊重软件作者的辛勤劳动,破解只为艺不为利!

pw2000 发表于 2008-1-4 10:38:41

好文章,继续努力。

GDONGYONG 发表于 2008-1-4 11:22:14

现正看汇编,到时再跟楼主学习!!

magic659117852 发表于 2008-1-4 12:13:45

希望高手们多鼓励下我们这些菜菜鸟!毕竟没人生下来就是大师,我们都要一步一步往前行。



--------/:good   /:good   希望高手多写几篇适合超级新手看的。。有简单算法分析的文章

unpack 发表于 2008-1-4 16:43:34

恩重启验证的呵呵
好像我还没有学会诶
只会简单的爆破,要是没有搜索字符,有点没辙
还在学习中啊 ~~
谢谢分享了啊 ~~

zjid520 发表于 2008-1-4 18:43:59

一步一个脚印,让我们一起加油!!

jmzhwf 发表于 2008-1-4 19:48:10

加油加油!!!/:014

dying 发表于 2008-1-5 12:39:00

同是菜鸟~一起飞吧~ /:014

xxdowns 发表于 2008-1-5 13:49:16

虽然简单,但还是支持。希望继续发表新作品。

tianxj 发表于 2008-1-5 14:11:03

********************************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"注册完成,请重新运行程序!"
********************************************************************************
二、用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
查看完整版本: **备份** 的追码 初学者的第一篇破文