黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]金易格坦克大战破解手记
      ★★★★

金易格坦克大战破解手记

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-5-19 8:59:12


0047DA14   |.  B9 5A030000       mov ecx,35A
0047DA19   |.  33D2              xor edx,edx
0047DA1B   |.  33C0              xor eax,eax
0047DA1D   |>  8B75 F8           /mov esi,dword ptr ss:[ebp-8]
0047DA20   |.  0FB63406          |movzx esi,byte ptr ds:[esi+eax]
0047DA24   |.  03D6              |add edx,esi
0047DA26   |.  40                |inc eax
0047DA27   |.  83F8 0E           |cmp eax,0E
0047DA2A   |.^ 75 F1             \jnz short RegTank.0047DA1D
0047DA2C   |.  3BD1              cmp edx,ecx
0047DA2E   |.  75 02             jnz short RegTank.0047DA32
0047DA30   |.  B3 01             mov bl,1
0047DA32   |>  33C0              xor eax,eax
0047DA34   |.  5A                pop edx
0047DA35   |.  59                pop ecx
0047DA36   |.  59                pop ecx
0047DA37   |.  64:8910           mov dword ptr fs:[eax],edx
0047DA3A   |.  68 54DA4700       push RegTank.0047DA54
0047DA3F   |>  8D45 F8           lea eax,dword ptr ss:[ebp-8]
0047DA42   |.  BA 02000000       mov edx,2
0047DA47   |.  E8 0C6BF8FF       call RegTank.00404558
0047DA4C   \.  C3                retn
对0047DA0F下断点,重新运行程序,输入'CDCDCDCDCDCDCD',保证注册码有14位,再次运行到0047DA0F
0047D9D4   /$  55                push ebp
0047D9D5   |.  8BEC              mov ebp,esp
0047D9D7   |.  83C4 F8           add esp,-8
0047D9DA   |.  53                push ebx
0047D9DB   |.  56                push esi
0047D9DC   |.  33C9              xor ecx,ecx
0047D9DE   |.  894D F8           mov dword ptr ss:[ebp-8],ecx
0047D9E1   |.  8955 FC           mov dword ptr ss:[ebp-4],edx
0047D9E4   |.  8B45 FC           mov eax,dword ptr ss:[ebp-4]
0047D9E7   |.  E8 A46FF8FF       call RegTank.00404990
0047D9EC   |.  33C0              xor eax,eax
0047D9EE   |.  55                push ebp
0047D9EF   |.  68 4DDA4700       push RegTank.0047DA4D
0047D9F4   |.  64:FF30           push dword ptr fs:[eax]
0047D9F7   |.  64:8920           mov dword ptr fs:[eax],esp
0047D9FA   |.  33DB              xor ebx,ebx
0047D9FC   |.  8D45 F8           lea eax,dword ptr ss:[ebp-8]
0047D9FF   |.  8B55 FC           mov edx,dword ptr ss:[ebp-4]
0047DA02   |.  E8 C56BF8FF       call RegTank.004045CC
0047DA07   |.  8B45 F8           mov eax,dword ptr ss:[ebp-8]
0047DA0A   |.  E8 CD6DF8FF       call RegTank.004047DC
0047DA0F   |.  83F8 0E           cmp eax,0E《=====试炼码'CDCDCDCDCDCDCD'通过了该判断,执行0047DA14
0047DA12   |.  75 1E             jnz short RegTank.0047DA32
0047DA14   |.  B9 5A030000       mov ecx,35A《=====35A这个常数进入ECX
0047DA19   |.  33D2              xor edx,edx《=====EDX清零
0047DA1B   |.  33C0              xor eax,eax《=====EAX清零
0047DA1D   |>  8B75 F8           /mov esi,dword ptr ss:[ebp-8]《=====0047DA1D至0047DA2A是将试炼码'CDCDCDCDCDCDCD'的每个字符
0047DA20   |.  0FB63406          |movzx esi,byte ptr ds:[esi+eax]《的ASII值累加,结果存在EDX
0047DA24   |.  03D6              |add edx,esi
0047DA26   |.  40                |inc eax
0047DA27   |.  83F8 0E           |cmp eax,0E
0047DA2A   |.^ 75 F1             \jnz short RegTank.0047DA1D《=====反复计算,直到所有字符都计算完,则进入0047DA2C
0047DA2C   |.  3BD1              cmp edx,ecx《=====将EDX与35A比较
0047DA2E   |.  75 02             jnz short RegTank.0047DA32《=====如果不等则转0047DA32,此时BL=0
0047DA30   |.  B3 01             mov bl,1《=====如果相等则将1存入BL,继续执行下面的指令
0047DA32   |>  33C0              xor eax,eax
0047DA34   |.  5A                pop edx
0047DA35   |.  59                pop ecx
0047DA36   |.  59                pop ecx
0047DA37   |.  64:8910           mov dword ptr fs:[eax],edx
0047DA3A   |.  68 54DA4700       push RegTank.0047DA54《=====压入将EBX转存EAX的指令段
0047DA3F   |>  8D45 F8           lea eax,dword ptr ss:[ebp-8]
0047DA42   |.  BA 02000000       mov edx,2
0047DA47   |.  E8 0C6BF8FF       call RegTank.00404558
0047DA4C   \.  C3                retn《=====因为前面压入RegTank.0047DA54,所以执行此指令将导致跳转0047DA54
0047DA4D    .^ E9 BE64F8FF       jmp RegTank.00403F10
0047DA52    .^ EB EB             jmp short RegTank.0047DA3F
0047DA54    .  8BC3              mov eax,ebx《=====将0047DA30执行后保存EBX的结果转存EAX
0047DA56    .  5E                pop esi
0047DA57    .  5B                pop ebx
0047DA58    .  59                pop ecx
0047DA59    .  59                pop ecx
0047DA5A    .  5D                pop ebp
0047DA5B    .  C3                retn《=====真正从0047D7DF执行的call RegTank.0047D9D4中返回执行0047D7E4的test al,al

由此分析可知注册码的各个字符的AII值之和必须为0X35A,因此造一个符合该条件的试炼码'=============A',重新执行程序,输入该试炼码,显示注册"恭喜您成为合法的用户!谢谢你的惠顾",注册成功。可以编写注册机,正确注册码符合两个条件:1、长14位;2、所有字符的ASII值总和为0X35A。注册成功后,程序将正确的注册码加密后保存在HKEY_LOCAL_MACHINE\SOFTWARE\WUZHIHUI\TANK中。至此,分析完成。
总结:1、根据提示字符串在反汇编中寻找关键代码,然后在调试中顺藤摸瓜向上寻找判断,这是一个比较通用的办法。
      2、在试炼中不断提高试炼码的正确度,以使调试一步一步走向成功。
      3、编写注册方法可以用注册码特征法,这样避免了明码比较,正确的注册码不容易在内存中直接被搜索出来,提高了破解难度。

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:sygbox 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886