博客网 >

软件破解(二)
作者:分类:默认分类标签:

    在上一讲中,我们简单的介绍了如何在可执行文件中定位一个特定的字符串,比如密码串。今天,我们将会接着讨论一下如何在程序中定位处理这个字符串的代码,比如比较密码是否相等的函数。
    还是利用dumpbin这个小软件,首先反汇编一下可执行程序sample.exe,输入命令:dumpbin /disasm sample.exe >asm.txt。这个文件竟然有928kb,而程序却只有72kb??是的!因为反汇编得到的汇编码中有相当一部分都是字符串处理函数等系统函数。
    虽然我们不知道在程序中哪一部分是用来匹配密码的,也不知道它是怎么工作的。但是,我们可以很容易的想到,该进程中必然有一个参数是用来作为指向参照密码的指针的。所以,我们只需要在程序中找到密码存放在内存的那个位置,而那个地址就一定保存在指针变量中。还记得上一次查找到的地址是多少吗?如果记不得了,就再使用重新使用dumpbin命令查找一下吧。
    地址是0x0040D112。也就是说指针值必然也等于0x0040D112!搜索一下,就能得到:

  push  40D112h
  lea   edx, [ebp-68h]
  push  edx
  call  004010A0
  add   esp, 8
  test  eax, eax
  je    00401069
  push  40D122h

    显然,调用的程序004010A0是用来比较密码字符串的,要不然为什么要把密码传输给他呢?至于其具体是怎么工作的并不重要。看看在其后的代码:test eax, eax,显然是用来判断比较结果的。那跳转到的地址00401069是在密码正确还是不正确的时候使用呢?
    再往后看看,下一行代码是push 40D122h,查找就可以知道,40D122h指向的是字符串“Wrong Password!”。也就是说,je指令跳转到的地址00401069是在密码判断正确的时候进入的。
    到此,我们已经成功的定位了处理特定字符串的代码,好好练习一下,我们今天就讲到这里,下一次将会讨论如何对代码进行外科手术----直接修改代码,以破解密码检验系统。

<< FBI调查中国黑客攻击事件! / 计算机安全基础 >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

Romeo

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档