首页
社区
课程
招聘
[原创]Crackme(C#编译,重启验证)(初级+) 算法简析
发表于: 2007-3-2 19:18 5402

[原创]Crackme(C#编译,重启验证)(初级+) 算法简析

2007-3-2 19:18
5402

【文章标题】: Crackme(C#编译,重启验证)(初级+) 算法简析
【文章作者】: hawking
【作者邮箱】: rich_hawking@hotmail.com
【作者主页】: inraining
【软件名称】: crackme1.exe
【软件大小】: 40.0k
【下载地址】: http://bbs.pediy.com/showthread.php?s=&threadid=32317&perpage=10&highlight=&pagenumber=1
【加壳方式】: MaxtoCode试用版
【保护方式】: 重启验证
【编写语言】: C#
【使用工具】: OD、PEiD
【操作平台】: 2k
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  这个Crackme其实发布已经有一段时间了,不过一直运行不起来,所以就没加理会。现在发现之所以运行不起来,是因为用了MaxtoCode试用版加密的原因,因为是试用版,可能加了时间限制吧。Crackme发布没多久就过期了,所以打不开。调试的时候不得不将时间往前调了调(好像要在2006年10月以前)就OK了。
  
  1 寻找关键代码
  
  由于是C#程序,所以用Reflector打开看看。可惜由于用了MaxtoCode加过密了,所有的方法体都是空的。我们看看crackme程序本身,可以发现SoftWare\Crackme\No1\CrackmeInfo 及 UserName、Serial字样,并且程序本身是重启验证的,而我们随便输入用户名及密码之后程序所在的目录并没能生成新的文件,由此可初步判定验证信息是存放在注册表中的。
  OD载入程序,下RegQueryValueExW断点(.net程序调用Win32API好像都是Unicode方式),并且对取到的UserName及Password值下硬件访问断点,就可以顺利跟踪到下面的关键代码段。
  
  2 算法简析
  
  039B5D23    55              push    ebp
  039B5D24    83EC 1C         sub     esp, 1C
  039B5D27    33C0            xor     eax, eax
  039B5D29    894424 04       mov     dword ptr [esp+4], eax
  039B5D2D    33D2            xor     edx, edx
  039B5D2F    A1 D41EC401     mov     eax, dword ptr [1C41ED4]                ;UserName 值取自HKEY_LOCAL_MACHINE\SOFTWARE\Crackme\No1\CrackmeInfo username
  039B5D34    8378 08 00      cmp     dword ptr [eax+8], 0
  039B5D38    0F8E 15020000   jle     039B5F53
  039B5D3E    A1 D01EC401     mov     eax, dword ptr [1C41ED0]                ;Password 值取自HKEY_LOCAL_MACHINE\SOFTWARE\Crackme\No1\CrackmeInfo serial
  039B5D43    8378 08 00      cmp     dword ptr [eax+8], 0
  039B5D47    0F8E 06020000   jle     039B5F53
  039B5D4D    8B1D 9830C401   mov     ebx, dword ptr [1C43098]
  039B5D53    8B05 9C30C401   mov     eax, dword ptr [1C4309C]
  039B5D59    894424 18       mov     dword ptr [esp+18], eax
  
  039B5D5D    33ED            xor     ebp, ebp
  039B5D5F    8B0D D41EC401   mov     ecx, dword ptr [1C41ED4]
  039B5D65    33D2            xor     edx, edx
  039B5D67    8B71 08         mov     esi, dword ptr [ecx+8]
  039B5D6A    85F6            test    esi, esi
  039B5D6C    7E 0C           jle     short 039B5D7A
  039B5D6E    0FB74451 0C     movzx   eax, word ptr [ecx+edx*2+C]
  039B5D73    03E8            add     ebp, eax
  039B5D75    42              inc     edx
  039B5D76    3BF2            cmp     esi, edx
  039B5D78  ^ 7F F4           jg      short 039B5D6E
  

[color=#0000D0]for[/color] ( [color=#0000D0]int[/color] i = 0 ; i < sUserName.Length ; i++)
  {
  	sumName += buffer[2*i] + buffer[2*i+1] * 0x100 ;
  }
[color=#0000D0]for[/color] ( [color=#0000D0]int[/color] i = 0 ; i < 0x14 ; i++ )
  {
  	temp = (sumName + temp) % table1.Length ;
  	result[i] = table1[temp] ;
  }
[color=#0000D0]for[/color] ( [color=#0000D0]int[/color] i = 0 ; i < 0x14 ; i++ )
  {
  	temp = (table3[i] * result[i]) % table2.Length ;
  	result[i] = table2[temp];
  }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 461
活跃值: (93)
能力值: ( LV9,RANK:1170 )
在线值:
发帖
回帖
粉丝
2
支持楼主!
2007-3-2 22:19
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼主,学习中
2007-3-10 21:13
0
雪    币: 220
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不错,学习中
2007-3-14 14:18
0
游客
登录 | 注册 方可回帖
返回
//