|
作者:白狐 文章来源:本站原创
软件大小:697 KB
软件语言:简体中文
软件类别:国产软件 / 共享版 / 文件分割
应用平台:Win9x/NT/2000/XP
界面预览:无
加入时间:2005-04-20 11:40:05
下载次数:9664
下载地址: http://www.skycn.com/soft/7876.html
破解工具: OD,C32dasm,windows计算器
破解作者:白狐
所属组织:华夏黑客同盟,[DFCG]破解组织
本软件是文件分割软件!可以把一个较大的文件,分割成好多份较小的文件,以便装于软盘中携带!别看只有一百多K的大小!功能却很强大它不但能完成普通的分割功能,而且分割后还能把输出文件放在新建的文件夹中,便于您查看和管理,合并后还能删除输出文件,以节省您的硬盘空间!本软件还能从中提取MP3的片断!这样您就可以从中间开始播放您喜爱的歌曲了!另外,本软件还支持批处理功能,这使您能一次分割几十个文件,大大节省了您的时间!本软件界面美观,简单易用您不需学习就能轻松掌握它的所有功能!相信您在磁盘空间不够时,它会成为您的得力助手!^_^
拿到软件,以前暴破过它的旧版本,新出了,不知道注册机理是什么样子.....-)-
由于不是强壳,手脱了....建议初学者能手脱就手脱,不要依赖于某些工具,多找机会提高自己的能力
上次它是用ASPACK加壳的,等等,这次没加壳?-_-|||
c32asm反汇编,也有人用w32dasm载入,我习惯用前者,第一,国产,第二,好用,功能多,结合了UE十六进制和W32DASM的功能
点,查看>>字符串,向下找到"注册码不正确!"这里,打开这个CALL
::004014FB::3BC7 CMP EAX,EDI<<显然这里是关键比较
::004014FD::74 14JE SHORT 00401513\:JMPDOWN
::004014FF::53 PUSH EBX
::00401500::53 PUSH EBX
::00401501::68 58504100PUSH 415058\->: 注册码不正确!
::00401506::E8 BFBF0000CALL 0040D4CA\:JMPDOWN>>>: MFC42.DLL:?AfxMessageBox@@YGHPBDII@Z
::0040150B::393D 545C4100CMP [415C54],EDI
::00401511::75 5CJNZ SHORT 0040156F \:JMPDOWN
::00401513::8D4C24 18LEA ECX,[ESP+18] \:BYJMP JmpBy:004014FD,
::00401517::8D5424 0CLEA EDX,[ESP+C]
我们在004014FB处下断,OD出马(对于非爆破的软件,还是用动态跟踪吧)
断下后我们就能看到真正的注册码的十六进制长相,(这和以前一样的哈.....)
好,现在我们分析算法,在关键比较前面有一段循环代码,我们在这个循环的第一句上下断:
就是004014C7这,我的测试用户名为www.77169.com,断下后发现此时的寄存器EBP里存放了我们的用户名:
________________________________________________________
EBP 00374A70 ASCII "www.77169.comOOOOOOOOOOOOOOOOO"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
由此可以用户名被补足为30位,不够的用0补上,然后完成算法,什么算法呢,用F8慢慢跟就知道了
在这里给大家介绍粗跟踪的方法,这是没有任何技术而言的,高手也要慢慢的分析
为了了解程序注册的大致流程,我们必须先粗略的跟一下,做到心中有数
方法是在循环开始处(004014C7)下好断点,填假码注册,断下后按F9继续运行,会再次被断在这里
我们要数出断下的次数和断下时寄存器和堆栈里的值的变化,你会明白大概是一个什么样的算法
好了,我们数出程序一共要在这个循环被断下30次,正好我们的注册码是30位,所以应该是按位计算的
004014C7 |> /8A0429/mov al,byte ptr ds:[ecx+ebp] <<这里是循环开始
004014CA |. |83E0 7F |and eax,7F
004014CD |. |69C0 3B2E08>|imul eax,eax,82E3B
004014D3 |. |8BF0|mov esi,eax
004014D5 |. |B8 E10217B8 |mov eax,B81702E1
004014DA |. |F7EE|imul esi
004014DC |. |03D6|add edx,esi
004014DE |. |C1FA 06 |sar edx,6
004014E1 |. |8BC2|mov eax,edx
004014E3 |. |C1E8 1F |shr eax,1F
004014E6 |. |03D0|add edx,eax
004014E8 |. |41|inc ecx
004014E9 |. |83F9 1E |cmp ecx,1E
004014EC |. |8DBC17 7A07>|lea edi,dword ptr ds:[edi+edx+850>
004014F3 |.^\7C D2 \jl short x-cut.004014C7<<这里是循环结束
004014F5 |.A1 545C4100 mov eax,dword ptr ds:[415C54]
004014FA |.5Dpop ebp
004014FB |.3BC7cmp eax,edi <<这里是关键比较,我们往上找
004014FD |.74 14 je short x-cut.00401513
004014FF |.53push ebx
00401500 |.53push ebx
00401501 |.68 58504100 push x-cut.00415058
00401506 |.E8 BFBF0000 call
===========================================================================
下面我们具体分析一下这个循环:(还是上面的代码,只是提取出循环部分,去掉多余的部分,这再看不明白就找块豆腐碰死吧)
注:以下数字一般为十六进制,可以用WINDOWS自带的计算器换算成十进制的,如果想学习的话还是自己动手做一做吧!
/mov al,byte ptr ds:[ecx+ebp] <<这里是循环开始,每次提一位,第一次就是w,ASC码是77,mov是赋值的意思,这句话就是说把77送给al,就是寄存器eax的低四位,什么?哪是低四位?按F8看看EAX哪里变了就知道了.....
|and eax,7F <<这是and 逻辑运算,用WINDOWS自带的计算器自算算结果,看看和它的一样吧eax=7f and 77 ,这里eax=00000077
|imul eax,eax,82E3B <<这个是乘法运算,让eax=eax*82E3B,这时eax=03cd7d6d,嗯,就是乘个数,看看还做什么
|mov esi,eax <<又是赋值,把我们算好的EAX值送给了esi,单纯的移动,没什么好说的
|mov eax,B81702E1<<把另一个数给了EAX(B81702E1)
|imul esi <<乘...eax=eax*esi=B81702E1*3cd7d6d=????FEEE8C3A8F6116CD,后八位入EAX=8F6116CD,再高八位入EDX=FEEE8C3A,由于这个数太大,有十六位以上,十六位以上的,给舍去了
|add edx,esi <<再加...edx=edx+esi作者倒不怕麻烦...还好这两个值我们知道是怎么来的,edx+esi=FEEE8C3A+3cd7d6d=02BC09A7(舍弃第一位了)
|sar edx,6 <|mov eax,edx <<赋值...
|shr eax,1F<|add edx,eax<<普通的加法,eax为除完的结果,edx为刚才除的结果,
|inc ecx <|cmp ecx,1E <<看看够不够30(1E的十进制为16+14=30)
|lea edi,dword ptr ds:[edi+edx+85077A] <<这个就是我们最后要进行比较的edi了,它的值是有edx有关的,每次都要累加上一个edx+85077A,所以我们要找edx,还好上算法我的都顺下来了,还有一个就是edi的初始值,还好是1,第一次断下来时就看到了....
\jl short x-cut.004014C7<<这里是循环结束,如果30位都用过了就往下走,否则下一位
这样走一次就明了了,
eax作中间结果,
esi等,作转换工具,
edi最后的真码.
好了,再理一下一次循环的过程:
按位取ASCII码,先和7F做and运算,再和固定数82E3B相乘,再和B81702E1相乘,结果的中八位与第一次乘法结果相加,取后八位除以2的6次方,这个八位数与自己的第一位相加,最后和85077A进行累加.每一次循环的最后都要在这里累加的,累死的说~~~~~唾沫飞了一屏幕了...
由此可以写一个注册机了,要注册的就是高位的取法和舍弃,为了保护作者的权益,就不贴出代码了,过几天大家可以在www.chinadfcg.com上找到注册机.
好了,希望广大网友能够有所收获,如果你想学习破解,还是先把它看完吧,不要回一句"收了","太长了","留着以后看",以前看一个人学问有多少看的是他的藏书有丰富,现在看一个人会多少东西可不是看他的硬盘里资料有多少个G,保存的东西再多,你不花时间去看,去学,去练习,光是存下来就去打游戏,聊天,那样的话一辈子也是不会!!!!没有人逼你交作业的时候,就尽量要以自己的兴趣为主,加油吧!
|