1个密码学算法的crackme的分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1个密码学算法的crackme的分析

一个密码学算法的crackme的分析 -----文/KYO 这次写一篇关于软件运用了经典密码学算法的分析的文章。希望能给初学者带来进步。首先这个程序是happytown的第14个crackme,在看雪已经有人写了注册机,不过分析过程没有写,可能对初学者来说不太好看懂,我这里就做一次详细的分析吧。 首先运行下这个程序,随便填写一个用户名(kyo327)和密码(1234567)点击注册,没有任何提示。接着用PEID加载, 从抓图可以看到该程序没有加壳,编程语言采用的是VC++,用PEID的插件KANAL分析出它所采用的密码算法有SHA1和RSA,这样我们心里至少先有个底。 *************************************************************** 这里插播个广告,黑友们请无视,只是为朋友的网站能被搜索引擎收录,多加点流量。 返利网,淘你喜欢,淘宝返利,淘宝返现购物。 *************************************************************** 准备工作做完后,用OD加载,用万能断点下断,程序断在这里。 先粗略的用F8走一遍,发现一直走到这里, 到了0040108a处,跳转实现了,跳向了失败,这说明只要上面的eax 不等于0就能注册成功。再看这里 程序是走到004013e5 经过了 RETN后才到test eax,eax的。上面有个字符串比较函数,我们知道如果两个字符串相等,返回值eax=0,否则返回非0值。在经过了neg eax, sbb eax,eax inc eax后,只有当eax=0才能通过验证。因此只要上面两个字符串相等就可以注册成功,现在看来就只有这一处验证。当然如果把0040108a处的 Je 0040111d改为jne 0040111d就可以暴了它了。不过我们还是分析算法为主。 现在回到开始,一步步F8来到这里 可以看到从0040121c 间,是用输入的密码的长度做一个循环,来验证密码必须为0-9,a-f,A-F之间的字符,否则会跳向失败。我最开始输入的1234567算是混过去了,呵呵。接着看: 紧接着下面有一个call,右键点跟随,发现代码是这样的 这里面有5个常数的赋值,分别是, EFCDAB89h, 98BADCFEh,, C3D2E1F0h.这个是SHA1密码加密的标志,这里估计是SHA1的初始化。先不管f8过去。一直走到这里 经过了call,dd esp+1a0可以看到一串字符,根据上面代码我们知道这是对用户名kyo327做了sha1的加密。我现在通过zobox这个工具验证一下看看是否正确。 可以看到kyo327通过 SHA1加密后是D81E2A1A72F5A4F570B0F05BAAA0CFFC5D2D6820,刚好和上面的字符串一样。那么可以肯定我们的猜想是正确的。 *************************************************************** 这里插播个广告,黑友们请无视,只是为朋友的网站能被搜索引擎收录,多加点流量。 返利网,淘你喜欢,淘宝返利,淘宝返现购物。 *************************************************************** 接下来继续F8走来到这里,看下面这堆代码 从004012b2到0040131c这段代码作用是把上面用SHA1加密的字符数转换为16进制。送到[esi],也就是ss:[esp+268]处。然后下面一句 mov byte ptr ss:[esp+278],0,这句代码用0刚好把转换成16进制的密文从中间截断了。那么此时ss:[esp+268]对应的字符串就变成了D81E2A1A72F5A4F5,对应的16进制就是:44 38 31 45 32 41 31 41 37 32 46 35 41 34 46 35。也就是取了加密后的前8位字符。 至此SHA1的加密已经结束。现在看下面的代码。下面是RSA的加密。对于RSA,我先在这里说点基础知识,磨刀不误砍柴功嘛。 RSA的整个算法可以描述如下: (1)选取两个大素数p和q(保密); (2)计算n=p*q(公开),r=(p-1〉(q-1)(保密); (3)随机选取整数e(公开,加密密钥),使得gcd(e,r)=1; (4)计算d(保密,私人密钥),使得ed≡1(mod r),即d=e^-1(mod r);

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档