功能:

  拿到文件,先执行一下。功能如下:

  1、nag窗口

    会先出现如下nag窗口,持续几秒

    

  2、注册窗口:

    出现错误会提示:You Get Wrong  Try Again  

    

破解:

  1、查壳:

    无壳,并且是用VB5.0-6.0写的  

    

解除nag窗口:

    方法一:Timer搜索法:找到timer函数的位置,并做修改

      缺点:程序的作者将计时器的默认名称改掉之后,根本无法在内存中搜索到Timer关键字,也就无法下手

      步骤:

        程序加载进od,在入口处点击在数据窗口跟随,数据窗口右键查找二进制字符串,Timer(Timer是VB程序默认的定时器变量):  

        

        其中58 1B表示的就是时间参数:0x1B58,这个是计时器的秒数。也就是十进制的7000,7000毫秒就是7秒。

        

        所以第一种去Neg的方法就是将0x1B58改为0x0001,就是将时间缩短到最短。当然还是会有一瞬间

         

    方法二:4c法:

       重新载入程序:

        在数据窗口中,右键转到表达式:输入4067d4+4c,找到form GUI描述表的指针    

            

        选中,右键,数据窗口跟随DWORD    

            

        跟随到406868这个数据段:

        每一个小块的数据是每一个窗体的信息,其中00和01是窗体的序号 而10是第一个窗体的启动标志。

         

        所以:我们只要把第一个窗体数据块的00改成10 然后把第二个窗体的数据块的10改成00。(注:亲测无效)。

        将窗体的序号调换。即可去除neg。  

        

        保存 ,去除nag成功

注册:

   一:爆破

      老规矩:查找:  

      

      向上看,找到关键跳转,nop,保存

      

      运行:

      

  二、注册机

      找到到关键跳转,在这里尝试下断,判断call的功能是否与加密有关:

      

      测试:输入1234,56789

      

      程序断下,看到栈空间中出现1066822,有点像注册码

      

      输入测试:

      

      成功,那么还在上面。

      找到这个函数的开始位置,下断:

      

      第一部分:f8一直跟随,看到eax='1234'出现,主要是:获得的长度*0x15B38 + 第一位数0x31  得到edi = 56d11 十进制为 355601    

      

      继续向下,

      第二部分:将刚才计算的结果转为浮点数,放入到FPU栈,然后将结果加上2.0 得到355603

       

      继续向下,

      第三部分:刚刚得到的浮点数*3-2得到1066807并保存进ST7  

      

      继续向下,

      第四部分:得到的浮点数减去(-15)也就是加15  -->  1066807+15=1066822  这个就是我们刚刚看到的验证码了  

      

总结一下算法:

      [(长度*0x15B38 + 第一位数的十六进制)--->变为十进制 +2]*3-2 +15

下面可以写注册机了:

Num = input('输入:\n')

pwd = ''

test = 0x15B38*len(Num)+ord(Num[0])

pwd = (test+2)*3-2+15

print(pwd)

注册机代码

参考文档:https://bbs.pediy.com/thread-249719.htm

总结:慢慢来,要细心

Crackme_003的更多相关文章

随机推荐

  1. django学习-6.模板templates

    1.前言 首先,我们要知道html是一门静态语言,里面没法传一些动态参数,也就是一个写死的html页面. 那么,如果我们想实现在一个html页面里传入不同的参数对应的参数值,这就可以用django框架 ...

  2. SPEC-RFC3261总述

    最近学习VoLTE(Voice Vver LTE)相关知识,而学习VoLTE必须要学相关的协议,最基础的就是RFC3261,RFC3261的全称是:SIP: Session Initiation Pr ...

  3. 鸿蒙的js开发部模式16:鸿蒙布局Grid网格布局的应用一

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.Grid简介2.使用Grid布局实现的效果3.grid-row-gap和grid-colunm-gap属性4.< ...

  4. 从Java的堆栈到Equals和==的比较

    以下为链接 https://www.2cto.com/kf/201503/383832.html 栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地 ...

  5. TkMybatis添加对象后返回数据的id

    在实体类的id属性上加上下面的注解 //导入的包import javax.persistence.GeneratedValue; @GeneratedValue(generator = "J ...

  6. .Net -- NLog日志框架配置与使用

    NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台,NLog可将日志写入多个目标,比如Database.File.Console.Mail.下面介绍下NLog的基本使用方法 ...

  7. 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)

    小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优)  //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...

  8. 后端程序员之路 29、Thrift

    Apache Thrift是Facebook实现的一个高效的.支持多种编程语言的远程服务调用(RPC)框架. Apache Thrift - Homehttp://thrift.apache.org/ ...

  9. ProBuilder快速原型开发技术 ---不规则模型与材质

    ProBuilder开发模型的强大之处,还在于可以按照要求精确定制不规则模型.克隆镜像模型.给模型着色以及添加材质等,下面笔者就这几方面进行讲解. 一:定制不规则模型 PB有一个专门定制不规则模型的功 ...

  10. HDOJ-1260(动态规划水题)

    Tickets HDOJ-1260 #include<bits/stdc++.h> using namespace std; const int maxn=2003; int n; int ...