【文章标题】: 破解xx算命软件(初级)
【文章作者】: 明日雄鹰
【软件名称】: xx算命V2007
【软件大小】: 2.02M
【下载地址】: http://www.skycn.com/soft/7818.html
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 注册码保护
【编写语言】: Borland Delphi 6.0 - 7.0
【软件介绍】: 〖xx算命〗软件是一个简洁的算命软件,软件功能全面、实用、强大。一个软件集成 了多种测算选项,测算内容、测算项目极其丰富,包括姓名吉凶测算、命运推算、科学起 名向导、生男生女查询以及万年历、农历查询等
【作者声明】: 只是感兴趣,没有其他目的。本人第一次写破文,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
本人技术不高,所以习惯潜水,因破解遇到问题,所以写了这篇破文(超菜鸟级的高手不要见笑^_^)
首先查壳---脱壳--OD载入--字符串查找(大家都会)
查找字符串有“本软件已注册”和“注册成功”提示
0055BCCB BA A4BE5500 mov edx,tuoke.0055BEA4 ; 本软件已注册 //双击来到这里
0055BCD0 E8 3BC2EEFF call tuoke.00447F10
0055BCD5 8D95 50FFFFFF lea edx,dword ptr ss:[ebp-B0]
0055BCDB 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
0055BCE1 E8 FAC1EEFF call tuoke.00447EE0
0055BCE6 8B8D 50FFFFFF mov ecx,dword ptr ss:[ebp-B0]
0055BCEC BA BCBE5500 mov edx,tuoke.0055BEBC ; ssbxr
0055BCF1 8BC6 mov eax,esi
0055BCF3 E8 BCDEF4FF call tuoke.004A9BB4
0055BCF8 8D85 4CFFFFFF lea eax,dword ptr ss:[ebp-B4]
0055BCFE B9 CCBE5500 mov ecx,tuoke.0055BECC ; \c301l.dll
0055BD03 8B55 FC mov edx,dword ptr ss:[ebp-4]
0055BD06 E8 7D8FEAFF call tuoke.00404C88
0055BD0B 8B8D 4CFFFFFF mov ecx,dword ptr ss:[ebp-B4]
0055BD11 B2 01 mov dl,1
0055BD13 A1 E4F54600 mov eax,dword ptr ds:[46F5E4]
0055BD18 E8 7739F1FF call tuoke.0046F694
0055BD1D 8BF0 mov esi,eax
0055BD1F 8D95 48FFFFFF lea edx,dword ptr ss:[ebp-B8]
0055BD25 8B83 04030000 mov eax,dword ptr ds:[ebx+304]
0055BD2B E8 B0C1EEFF call tuoke.00447EE0
0055BD30 8B85 48FFFFFF mov eax,dword ptr ss:[ebp-B8]
0055BD36 50 push eax
0055BD37 B9 E0BE5500 mov ecx,tuoke.0055BEE0 ; dd
0055BD3C BA ECBE5500 mov edx,tuoke.0055BEEC ; ASCII "sysetup"
0055BD41 8BC6 mov eax,esi
0055BD43 8B38 mov edi,dword ptr ds:[eax]
0055BD45 FF57 04 call dword ptr ds:[edi+4]
0055BD48 8D95 44FFFFFF lea edx,dword ptr ss:[ebp-BC]
0055BD4E 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
0055BD54 E8 87C1EEFF call tuoke.00447EE0
0055BD59 8B85 44FFFFFF mov eax,dword ptr ss:[ebp-BC]
0055BD5F 50 push eax
0055BD60 B9 FCBE5500 mov ecx,tuoke.0055BEFC ; zc
0055BD65 BA ECBE5500 mov edx,tuoke.0055BEEC ; ASCII "sysetup"
0055BD6A 8BC6 mov eax,esi
0055BD6C 8B30 mov esi,dword ptr ds:[eax]
0055BD6E FF56 04 call dword ptr ds:[esi+4]
0055BD71 8D85 40FFFFFF lea eax,dword ptr ss:[ebp-C0]
0055BD77 B9 CCBE5500 mov ecx,tuoke.0055BECC ; \c301l.dll
0055BD7C 8B55 FC mov edx,dword ptr ss:[ebp-4]
0055BD7F E8 048FEAFF call tuoke.00404C88
0055BD84 8B85 40FFFFFF mov eax,dword ptr ss:[ebp-C0]
0055BD8A BA 02000000 mov edx,2
0055BD8F E8 18DCEAFF call tuoke.004099AC
0055BD94 B8 08BF5500 mov eax,tuoke.0055BF08 ; 注册成功!
0055BD99 E8 CE4EEEFF call tuoke.00440C6C
0055BD9E 8BC3 mov eax,ebx
0055BDA0 E8 A39BF0FF call tuoke.00465948
向上找
0055BC2E C2 EEFF retn 0FFEE
0055BC31 83BD 64FFFFFF 00 cmp dword ptr ss:[ebp-9C],0 //F2下断 F9运行
断下后F8单步
0055BC38 74 1A je short tuoke.0055BC54 \\判断注册码是否为空,为空跳走
0055BC3A 8D95 60FFFFFF lea edx,dword ptr ss:[ebp-A0]
0055BC40 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
0055BC46 E8 95C2EEFF call tuoke.00447EE0
0055BC4B 83BD 60FFFFFF 00 cmp dword ptr ss:[ebp-A0],0
0055BC52 75 0F jnz short tuoke.0055BC63 \\判断确认码是否为空,为空不跳走
0055BC54 B8 84BE5500 mov eax,tuoke.0055BE84 ; 注册信息没有填写齐全
0055BC59 E8 0E50EEFF call tuoke.00440C6C
0055BC5E E9 5E010000 jmp tuoke.0055BDC1
0055BC63 8D95 5CFFFFFF lea edx,dword ptr ss:[ebp-A4]
0055BC69 8B83 04030000 mov eax,dword ptr ds:[ebx+304]
0055BC6F E8 6CC2EEFF call tuoke.00447EE0
0055BC74 8B85 5CFFFFFF mov eax,dword ptr ss:[ebp-A4] \\读假码
0055BC7A 50 push eax
0055BC7B 8D95 54FFFFFF lea edx,dword ptr ss:[ebp-AC]
0055BC81 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
0055BC87 E8 54C2EEFF call tuoke.00447EE0
0055BC8C 8B85 54FFFFFF mov eax,dword ptr ss:[ebp-AC] \\读确认码
0055BC92 E8 E9D9EAFF call tuoke.00409680
0055BC97 B9 FC200000 mov ecx,20FC
0055BC9C 99 cdq
0055BC9D F7F9 idiv ecx
0055BC9F 8BC2 mov eax,edx
0055BCA1 8D95 58FFFFFF lea edx,dword ptr ss:[ebp-A8]
0055BCA7 E8 B0FDFFFF call tuoke.0055BA5C //关键call
0055BCAC 8B95 58FFFFFF mov edx,dword ptr ss:[ebp-A8] //此时寄存器出现真注册码
*******************************************************************************
EAX 0012F910
ECX 00000001
EDX 0106B54C ASCII "73084457"
EBX 01041434
ESP 0012F91C
************************************************************************************
0055BCB2 58 pop eax
0055BCB3 E8 C890EAFF call tuoke.00404D80 //比较真假注册码
0055BCB8 0F85 E9000000 jnz tuoke.0055BDA7 \\注册成功与否关键跳
0055BCBE A1 807D5700 mov eax,dword ptr ds:[577D80]
0055BCC3 8B00 mov eax,dword ptr ds:[eax]
0055BCC5 8B80 2C040000 mov eax,dword ptr ds:[eax+42C]
0055BCCB BA A4BE5500 mov edx,tuoke.0055BEA4 ; 本软件已注册
我的确认码是:456789
假注册码是:444444
真注册码是:73084457
注册信息保存在:C:\WINDOWS\system32\C301l.dll
可以删除C301l.dll(属性是隐藏的)就变成未注册版了
至此可以写内存注册机了,但问题也来了。
内存注册机
中断地址:0055BCAC
中断次数:1
第一字节:8B
指令长度:6
内存方式
寄存器选EDX
生成后一运行桌面就被锁死失去反应了,请高手指点,本人第一次遇到这种情况。
如果爆破
0055BCB8 0F85 E9000000 jnz tuoke.0055BDA7
jnz只能改成jz 不能nop掉否则软件报错
--------------------------------------------------------------------------------
【经验总结】
软件效验地方和注册算法因技术限制还不能解决,希望老大指点和补充。
--------------------------------------------------------------------------------
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)