- 热门文章:
- · MD5算发汇编代码[着重优化]
- · Twofish加密算法详解
- · 关于加壳时处理 TLS 的讨论
- · International CueClub主程序脱壳
- · AsProtect Loader v0.c 壳盲脱壳
- · Obsidium V1.25加壳VB程序的脱壳——超级自动注册申请王
- · 用Ollydbg手脱Petite V2.2加壳的DLL
- · 用Ollydbg手脱Armadillo加壳的DLL
- · arm4.1主程序Patch分析
- · PESHiELD V0.25完美脱壳——PESHIELD.eXe主程序
- · EncryptPE V2.2004.7.27脱壳
- · ACDSee3.0和ASPACK
上一篇:jslwl破解 >>
Tray.Commander.v2.3 注册算法分析
【使用工具】 Peid,OD
【破解平台】 Win XP SP2
【软件名称】 Tray.Commander.v2.3
【下载地址】 http://www.ardamax.com
【软件简介】
Tray Commander is a tray launcher that lets you gain quick access to your most frequently used applications
and system commands via a customizable menu. Not only can you open applications and files, but also
launch screen savers, shutdown, reboot your computer and much more, all from the system tray!
【软件大小】 912kb
【加壳方式】 ACProtectV1.3X-1.4XDLL->risco *
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
1.Peid 侦壳,显示"ACProtectV1.3X-1.4XDLL->risco *"。这里直接带壳调试
2.OD载入,用IsDebugPresent插件隐藏调试器标志。F9运行
在所有调用"GetWindowTextA"处下断点; 输入下列内容进行试注册。
Registration Name:abcde
Registration Key :123456789
程序在431749处被断下,取消断点。F8单步运行,返回上一层调用。
察看寄存器窗口可知,前面这个Call (Call 431725)的作用是获得输入的Name;紧接着下面还有一个相同的Call,
猜测它的作用是获得输入的Key。F8单步运行至41b7ad,察看寄存器窗口,可以看到我们输入的Key,这就证明了我
们的猜测。
下面的一段代码检验输入的Name和Key是否为空,F4运行到41b7fa。
F8单步运行到41b838,看到我们前面输入的Name和Key全部被压入栈中。F7跟进。
3.运行到40464的时候,可以看到栈中压入了两个字符串,其中一个为我们输入的Key,另外一个则很像是真实的注
册码。事实证明我们的猜测是正确的。
4.在前面的404b52处下断,重新注册。被断在404b52。F7跟进
将此Call中的反汇编代码贴出如下
00403190 /$ push ecx ; TC.00489190
00403191 |. push ebx
00403192 |. push esi
00403193 |. push edi
00403194 |. mov edi,dword ptr ds:[<&KERNEL32.lstrlenA>] ; kernel32.lstrlenA
0040319A |. push TC.0046AF88 ; /String = "5391026E7F829842"
0040319F |. call edi ; \lstrlenA
004031A1 |. mov esi,eax ; eax =0x10
004031A3 |. mov eax,dword ptr ss:[esp+14]
004031A7 |. push eax ; /String
004031A8 |. mov dword ptr ss:[esp+10],esi ; |
004031AC |. call edi ; \lstrlenA
004031AE |. mov ebx,eax
004031B0 |. test ebx,ebx
004031B2 |. jnz short TC.004031C1
004031B4 |. mov ecx,dword ptr ss:[esp+18]
004031B8 |. pop edi
004031B9 |. pop esi
004031BA |. mov byte ptr ds:[ecx],al
004031BC |. pop ebx
004031BD |. pop ecx
004031BE |. retn 8
004031C1 |> mov edi,dword ptr ss:[esp+18]
004031C5 |. push TC.0046AF88 ; /String2 = "5391026E7F829842"
004031CA |. push edi ; |String1
004031CB |. call dword ptr ds:[<&KERNEL32.lstrcpyA>] ; \lstrcpyA
004031D1 |. cmp ebx,esi
004031D3 |. jle short TC.004031DD
004031D5 |. mov eax,ebx
004031D7 |. mov dword ptr ss:[esp+18],eax
004031DB |. jmp short TC.004031E3
004031DD |> mov eax,esi
004031DF |. mov dword ptr ss:[esp+18],esi
004031E3 |> xor ecx,ecx ; ecx = index
004031E5 |. test eax,eax
004031E7 |. jle short TC.00403226
004031E9 |. push ebp
004031EA |. jmp short TC.004031F4
004031EC | lea esp,dword ptr ss:[esp]
004031F0 |> mov esi,dword ptr ss:[esp+10] ; esi <= len of STR
004031F4 |> mov eax,ecx
004031F6 |. cdq
004031F7 |. idiv esi ; 0x10 ;len of STR
004031F9 |. mov eax,ecx ; store index ;edx!
004031FB |. mov ebp,19
00403200 |. add ecx,1 ; index ++
00403203 |. mov esi,edx ; esi <= edx!
00403205 |. cdq
00403206 |. idiv ebx ; ebx = 5 注册名的长度
00403208 |. mov eax,dword ptr ss:[esp+18] ; eax <= name ;edx!
0040320C |. movsx eax,byte ptr ds:[edx+eax]
00403210 |. movsx edx,byte ptr ds:[esi+edi] ; edi == STR
00403214 |. xor eax,edx
00403216 |. cdq
00403217 |. idiv ebp ; ebp = 0x19 所有大写字母的数目
00403219 |. add dl,41
0040321C |. cmp ecx,dword ptr ss:[esp+1C]
00403220 |. mov byte ptr ds:[esi+edi],dl
00403223 |.^ jl short TC.004031F0
00403225 |. pop ebp
00403226 |> pop edi
00403227 |. pop esi
00403228 |. pop ebx
00403229 |. pop ecx
0040322A \. retn 8
5.上面已经写出了简要的注释。下面总结注册算法如下:
char str[]="5391026E7F829842";
char name[]=输入的Name
char key[20]
int strlen=0x10; //str字符串的长度
int namelen=输入的Name的长度
int i; //index
for(i=0;i< 0x10;i++)
{
key[i]=( (name[i%namelen]^str[i%strlen]) % 0x19 ) + 0x41;
}
key[i]=0;
--------------------------------------------------------------------------------
下一篇:MD5算发汇编代码[着重优化] >>
相关文章:
- · 手工脱壳 Advanced Adminis…
- · mmxbricksht破解
- · The Bat! 1.39脱壳笔记
- · 谁能脱 opt 0.99 的壳?
- · PELOCKnt破解
- · Professional Quest脱壳实例…
- · EncryptPE V2.2005314 主程…
- · 软件狗介绍
- · 菜鸟挑战VB程序 - 跟踪经验和实例(之二) 2
- · 从一个简单破解中浅谈破解的思路
- · 另类破解练习的算法详细分析(献给初学者)
- · DDXia主页crackme中的aLoNg…
- · QHQPatchme #1 破解手记
- · [新人必看]Rith CrackMe 1-…
- · PYCG论坛的会员认证Crackme…
- · 用Ollydbg手脱ASPack加壳的DLL
- · vcasm的多进程反跟踪技术学习心得(菜鸟篇)
- · 易语言核心runtime的loader和部分services的逆向工程
- · 概览: DB2 和 Visual Studio .NET
- · ADO.NET 的数据存取性能
- · Dan Wolfson 就 DB2 和 Web…
- · 从数据管理到信息集成: 自然…
- · 有效利用 Domino/Notes 缓存(Cache)机制
- · 集成 Macromedia Flash 和 IBM Lotus Notes/Domino:基于 Domino 解决方案的基于 Fla…
- · 了解 IBM Lotus Sametime 7.5 中的新特性和新技术
- · Lotus Sametime 开发入门: 使用客户端 ToolKit 与 Sametime 服务器交互
- · Lotus C API Extension Manager 应用举例
- · 在 IBM Workplace 中部署更…
- · 比较基于服务器的邮件和本地…
- · Web 客户端集成到 WebSpher…
- · Lotus Instant Messaging
- · Collaboration Services 2.…
- · Collaboration Services 2.5
- · 向 IBM Workplace portlet …
- · Instant Messaging SPI 进行…
- · WebSphere Application Server 中的内存泄漏检测与分析: 第 1 部分:内存泄漏概述
- · 使用 Rational Application Developer 创建接收 SOAP 附件的 Web 服务
- · 使用 WebSphere Business Monitor ——综述
