免责声明:

该教程仅为个人学习笔记,并无任何商业目的,本人所发布的一切**补丁、***和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

课程课件:https://files.cnblogs.com/files/LyShark/CrackMe_05.zip

 

上一个**实例,我们会发现一个弊端,就是我们只改变了一处验证,并没有改变其他的,这也就导致程序有些地方显示注册成功而有些地方则显示未注册版本,本节我们将通过寻找关键Call的方式,来改变call的返回值,从而间接影响关键跳,达到完全**的目的。

在开始**之前,我们先来了解一下关键call的返回值,一般情况下程序的返回值会由eax寄存器完成传递工作,通常eax=0则表示验证未通过,而反之则表示验证通过,在一个程序中有时会出现多处调用验证的环节,比如用户登录时验证一次,登陆后进行了其他特权操作,程序也会默认验证一次,这些验证过程可能是由一个Call来完成的,我们的目标就是找到这个关键CALL,并改变其返回值,那么程序只要调用这个验证CALL就会返回真,这样就可以一劳永逸!

 

1.打开这个程序,发现直接跳出了软件注册,尼玛。输入假码点击注册,看下提示并记录下关键字。

X86逆向实战5:通过修改关键CALL**

 

2.OD直接载入,运行程序让字符串完全加载,直接中文搜索-智能搜索,输入【注册】,直接看到了注册成功,我们点进去。

X86逆向实战5:通过修改关键CALL**

 

3.这里由于我们注册失败了,这里并没有执行下面的代码,那就说明是有一个跳转跳过了注册成功,那么我们向上找,找找看有没有能跳过它的关键跳转。

X86逆向实战5:通过修改关键CALL**

 

4.这里我找到了一处大跳转,这个跳转跳过了注册成功,转向了注册失败,而往往大跳转的前几个CALL就是关键call了,关键call返回一个状态,间接的影响下方的关键跳转。

X86逆向实战5:通过修改关键CALL**

 

5.我们在call处下断点,然后回到注册窗口,输入假***,然后点击注册,程序会在call处断下。

X86逆向实战5:通过修改关键CALL**

 

6.我们这次不改关键跳转,当然改下方的关键跳转也是可以实现**的,我们直接【F7】进入这个CALl的内部,会看到关键CALL有多处调用,说明有三个地址调用了这个模块来验证软件是否被注册了。

X86逆向实战5:通过修改关键CALL**

 

7.此处我们直接清空eax寄存器,然后将eax赋值为1,并返回。

X86逆向实战5:通过修改关键CALL**

 

8.输入***,并再次点击注册按钮。

X86逆向实战5:通过修改关键CALL**

 

8.最后直接保存修改后的文件,然后重新打开看效果。

X86逆向实战5:通过修改关键CALL**

 

9.最后打开程序

 X86逆向实战5:通过修改关键CALL**

相关文章:

  • 2022-02-09
  • 2021-11-26
  • 2022-12-23
  • 2021-12-02
  • 2021-10-02
  • 2021-06-04
  • 2021-12-13
猜你喜欢
  • 2021-08-17
  • 2021-07-28
  • 2021-06-10
  • 2022-12-23
  • 2021-11-29
  • 2021-12-14
  • 2021-10-28
相关资源
相似解决方案