zoukankan      html  css  js  c++  java
  • OD使用教程9

    先运行程序打开about,发现这是一个未注册的软件需要注册后才能使用里面的工具,所以随便注册一下,跳出一个提示说注册的是非法的邮箱,所以就可以以此做为突破口来破解这个程序
    将提示的语句作为关键字去找出这段程序,重新载入程序,右键查找-所有参考文本字串
    拉到最上面右键-查找文本
    然后输入关键字
    找到这个关键字的所在地址,双击进入这行程序
    找到程序之后发现这是在一个跳转之内的而这个跳转之后就是提示“谢谢您的注册”所以这是一个关键跳转,给它加上注释
    然后往上看,发现判断这个跳转是否实现是这个指令,如图
    这里al al的值是为0的并且不能修改,而test起到的是and(与)的意思不能修改al的值只能修改标志位Z,两个值都为0,跳转就不能实现,给它加上注释,然后再往上看,发现了一个call语句(调用一个函数),是可以修改al的值的。
    为了待会能够准确的走出来给这个call语句也下注释
    在这里下个断点然后执行,跳出窗口点击about,用刚刚注册的那个邮箱再注册一次
    点击注册,跳到断点处,然后f7跟进。
    观察整个程序,发现下面有个call,call下面有 test al,al 也会影响al的值,所以给call做注释
    然后继续往下走其中会经过很多个call,但是里面的eax值使一个地址,所以这和注册与否是没有关系的,所以跳过
    然后一直走,最后走出来了
    然后执行程序,打开about再注册一次点击确定再次来到断点处
    然后f7跟进去,f8继续走,走到需进入2,进去。然后发现又有一个call。但是先不急着用f7进去不然进去就出不来了。
    走到call那行,按回车键进去看看。发现并没有什么
    然后f8继续走就走出来了,然后继续往下走就发现了关键点。这里有一行是al的值赋给bl,然后隔几行是bl又赋值给了al。然后猜测这里很有可能就是判断是否注册的点,因为不想al的值被下面的call改变,所以先赋给了bl
    所以上面的那个call是需要进入看一看的,记下注释
    进入之后发现其实就是bl的值赋给了al
    然后又走了出来
    然后继续走,走到需进入3再进去看看,然后发现需进入3和需进入2里面是一样的,然后继续走就走出来了
    然后走了一圈又出来了,然后重新注册再进入走到需进入2,然后再进入需进入4,然后f8一直走,走到这停下来,发现这是个关键点,最终目的是为了把bl的值赋给al
    然后试着把al的值改成1,变成已注册
    然后运行。。发现成功了。。
  • 相关阅读:
    c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测)
    C# Excel导入、导出【源码下载】
    微信支付服务器CA证书更换服务器安装der证书的方法 DigiCert的根证书
    重置winsock目录解决不能上网的问题
    模型验证组件 FluentValidation
    对于“Newtonsoft.Json”已拥有为“NETStander.Library”定义的依赖项,解决办法
    .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
    C# 中参数验证方式的演变
    一步一步ITextSharp 低级操作函数使用
    Winform 打印PDF顺序混乱,获取打印队列
  • 原文地址:https://www.cnblogs.com/chenxiaoqi/p/4923665.html
Copyright © 2011-2022 走看看