软件介绍:TuneUp Utilities 2004是一个来自德国的系统调整工具,它能够让你的系统跑的更顺畅。TuneUp Utilities 的功能应有尽有,主要工具包括:系统改造/分析、硬盘/登录文件清理、系统加速、记忆体最佳化、登录文件编辑、软件卸载、工作管理员、文件还原/清理。
下载地址:http://soft.yzvod.com/down.php?id=19024
---------------------------------------------------------------
当我用了这个软件后,我发现它太棒了,好的无法用言语来形容了,真佩服这个公司的开发人员的水平
但是未注册的版本有功能限制这就很不爽了啊,于是想分析这个软件的注册算法,但是当我去努力分析
它的时候,我遇到了困难,走了弯路,但最后还是把它拿下了。当然它的注册算法很复杂,让我分析的
找不到北,后来还是把它给爆破了,^_*,但是爆破它也不容易,我改了7处才成功...
这个软件用了MD5,CRC32,SHA1,几乎都是单向散列算法,我想这样的软件一般是明码比较,或者很容易
攻破的,单向并不可怕.但让我惊奇的是我竟然看到了Message Digest 6 ! MD6??难道MD5被攻破后
Ron Rivest又完善了MD5?? 我不得而知...,也许这个软件用了某种注册组件,我也不太清楚:-(
如果你试图去分析它的主程序integrator.exe,找出它的注册算法或者爆破点,那么你最终一定会无功
而返^_^
用PeID查integrator.exe,Borland Delphi 6.0 - 7.0,接着分析它的密码学算法,没有,呵呵
在程序的目录中有很多的*.bpl文件,这些是Delph的动态链接库(组件?),那么我们根据.bpl的文件名就
可以判断它的功能了
AppInitialization.bpl 程序初始化
DEC.bpl 这个我要说一下啦 一看就是decryption,加密模块,^_*,我喜欢,用PeID的Krypto Analyzer
分析了一下13种密码学算法,呵呵,不要被吓倒了啊,虽然其中的BlowFish,MD5,CRC16&32,
TWOFISH,SHA1,RSA并不可怕,但也够受的啦
其它的模块并不重要,感兴趣你自己可以分析一下啊
程序启动的时候如果没有注册会有一个Nag,提示还可使用多少天,一开始我只是想分析注册算法,没有想去
掉它,但是后来我只有从它下手了^_*
如果想用MessageBoxA,RegQueryValueExA这样的断点来拦截它的话,你会发现这起不到任何作用^_*
用RegMon分析发现注册信息保存在
HKLM\SOFTWARE\TuneUp\Utilities\4.0
"Company"=
""
"RegCode"=
""
"UserName"=
""
"UseCounter"=
""
"ShowSplashScreen"=
""(注:这个只有在注册了之后才会有)
用OllyDBG装载它,然后右击=>查看=>模块
"Appini",给RTL60.System::LStrCmp全部下断,其它的
vcl60.Forms::TApplication::MessageBox
DEC.Hcmngr::THashManager::CalcString
DEC.Hcmngr::THashManager::SetAlgorithm
MainCont.Turegistry::GetProductRegDateTimeValue
MainCont.Turegistry::GetProductRegDWORDValue
像这些东东,一看就知道是什么用了,下不下断都无所谓,呵呵,为了保险我都下了
当我跟第一遍的时候我在下面的这个地方发现了调用那个Nag的call
0054B0CB E8 24EAFFFF
call AppIniti.Ufrmnagscreen::ShowNagscreen
把这个call Nop掉就可以去掉开始的Nag了
第一个
00543986 8B45 9C mov eax,dword ptr ss:[ebp-64]
00543989 8B55 D0 mov edx,dword ptr ss:[ebp-30]
0054398C E8 7FD7FFFF
call <jmp.&rtl60.System::LStrCmp>
00543991 /74 1E jne short AppIniti.005439B1 //chenge
to je
00543993 |8D45 EC lea eax,dword ptr ss:[ebp-14]
00543996 |50 push eax
00543997 |8B45 EC mov eax,dword ptr ss:[ebp-14]
0054399A |E8 51D7FFFF
call <jmp.&rtl60.System::LStrLen>
0054399F |8BC8 mov ecx,eax
005439A1 |49 dec ecx
005439A2 |BA 01000000 mov edx,1
005439A7 |8B45 EC mov eax,dword ptr ss:[ebp-14]
005439AA |E8 81D7FFFF
call <jmp.&rtl60.System::LStrCopy>
005439AF |EB 07 jmp short AppIniti.005439B8
005439B1 \33DB
xor ebx,ebx
005439B3 E9 17030000 jmp AppIniti.00543CCF
第二个
005439F2 E8 D9F5FFFF
call AppIniti.Turegcode::CalcShortHash
005439F7 8B45 94 mov eax,dword ptr ss:[ebp-6C]
005439FA 50 push eax
005439FB 8D4D 8C lea ecx,dword ptr ss:[ebp-74]
005439FE BA 02000000 mov edx,2
00543A03 8B45 EC mov eax,dword ptr ss:[ebp-14]
00543A06 E8 C9E5FFFF
call <jmp.&MainControls.Stringhelper::Ri>
00543A0B 8B55 8C mov edx,dword ptr ss:[ebp-74]
00543A0E 58 pop eax
00543A0F E8 FCD6FFFF
call <jmp.&rtl60.System::LStrCmp>
00543A14 75 07 je short AppIniti.00543A1D //chenge
to jnz
00543A16 33DB
xor ebx,ebx
00543A18 E9 B2020000 jmp AppIniti.00543CCF
00543A1D 8D45 EC lea eax,dword ptr ss:[ebp-14]
第三个
00543A92 E8 59D6FFFF
call <jmp.&rtl60.System::LStrLen>
00543A97 83F8 0E cmp eax,0E
00543A9A 75 07 je short AppIniti.00543AA3 //chenge
to jnz
00543A9C 33DB
xor ebx,ebx
00543A9E E9 2C020000 jmp AppIniti.00543CCF
00543AA3 8D4D FC lea ecx,dword ptr ss:[ebp-4]
第四个
005443D6 /74 1E jnz short AppIniti.005443F6 //chenge
to je
005443D8 |8D45 F8 lea eax,dword ptr ss:[ebp-8]
005443DB |50 push eax
005443DC |8B45 F8 mov eax,dword ptr ss:[ebp-8]
005443DF |E8 0CCDFFFF
call <jmp.&rtl60.System::LStrLen>
005443E4 |8BC8 mov ecx,eax
005443E6 |49 dec ecx
005443E7 |BA 01000000 mov edx,1
005443EC |8B45 F8 mov eax,dword ptr ss:[ebp-8]
005443EF |E8 3CCDFFFF
call <jmp.&rtl60.System::LStrCopy>
005443F4 |EB 21 jmp short AppIniti.00544417
005443F6 \55 push ebp
005443F7 8D55 9C lea edx,dword ptr ss:[ebp-64]
005443FA B8 1C355400 mov eax,AppIniti.Turegcodevalidation_tu2>
005443FF E8 9CCDFFFF
call <jmp.&rtl60.System::LoadResString>
第五个
00544480 /EB 21 je short AppIniti.005444A3 //chenge
to jmp
00544482 |55 push ebp
00544483 |8D55 88 lea edx,dword ptr ss:[ebp-78]
00544486 |B8 1C355400 mov eax,AppIniti.Turegcodevalidation_tu2>
0054448B |E8 10CDFFFF
call <jmp.&rtl60.System::LoadResString>
00544490 |8B55 88 mov edx,dword ptr ss:[ebp-78]
00544493 |B8 01000000 mov eax,1
00544498 |E8 83F9FFFF
call AppIniti.00543E20
0054449D |59 pop ecx
0054449E |E9 A3030000 jmp AppIniti.00544846
005444A3 \8D45 F8 lea eax,dword ptr ss:[ebp-8]
005444A6 50 push eax
第六个
00544520 /75 21 je short AppIniti.00544543 //chenge
to jnz
00544522 |55 push ebp
00544523 |8D55 84 lea edx,dword ptr ss:[ebp-7C]
00544526 |B8 1C355400 mov eax,AppIniti.Turegcodevalidation_tu2>
0054452B |E8 70CCFFFF
call <jmp.&rtl60.System::LoadResString>
00544530 |8B55 84 mov edx,dword ptr ss:[ebp-7C]
00544533 |B8 01000000 mov eax,1
00544538 |E8 E3F8FFFF
call AppIniti.00543E20
0054453D |59 pop ecx
0054453E |E9 03030000 jmp AppIniti.00544846
00544543 \8D45 FC lea eax,dword ptr ss:[ebp-4]
第七个
00544811 E8 FAC8FFFF
call <jmp.&rtl60.System::LStrCmp>
00544816 75 0F jnz short AppIniti.00544827 //nop nop
00544818 8B45 08 mov eax,dword ptr ss:[ebp+8]
0054481B BA 30495400 mov edx,AppIniti.00544930 ; ASCII
"OK"
00544820 E8 9BC8FFFF
call <jmp.&rtl60.System::LStrAsg>
00544825 EB 1F jmp short AppIniti.00544846
00544827 55 push ebp
00544828 8D95 54FFFFFF lea edx,dword ptr ss:[ebp-AC]
0054482E B8 3C355400 mov eax,AppIniti.Turegcodevalidation_tu2>
00544833 E8 68C9FFFF
call <jmp.&rtl60.System::LoadResString>
00544838 8B95 54FFFFFF mov edx,dword ptr ss:[ebp-AC]
0054483E 33C0
xor eax,eax
我强烈推荐兄弟去下载用用它,呵呵,超爽的一个软件
如果你想知道为什么要这么改,那么为什么不去下载一个来自己分析分析呢?
其实我是想分析它的注册算法,等有空的时候再看看吧,虽然不一定能成功 ^_*
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法