功能:

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

  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. 【PY从0到1】 一文掌握Pandas量化基础

    # 2[PY从0到1] 一文掌握Pandas量化基础 # Numpy和pandas是什么关系呢? # 在我看来,np偏向于数据细节处理,pd更偏向于表格整体的处理. # 要记住的pd内部的数据结构采用 ...

  2. servlet+Http

    Servlet:server applet 1.概念:运行在服务器端的小程序. *servlet就是一个接口,定义了Java类被服务器访问到(tomcat识别)的规则. *我们定义一个类,实现serv ...

  3. 【不在混淆的C】指针函数、函数指针、回调函数

    一.指针函数 函数的返回值是指针类型. int* fun(int a,int b); 指针函数使用: 返回字符串 这里要注意,"1234567890abc"是字符串常量,*p指向的 ...

  4. 若依管理系统RuoYi-Vue(三):代码生成器原理和实战

    历史文章 若依管理系统RuoYi-Vue(一):项目启动和菜单创建 若依管理系统RuoYi-Vue(二):权限系统设计详解 本篇文章将会讲解ruoyi-vue系统下代码生成器的使用.原理分析以及将这部 ...

  5. Java基础自学小项目

    实现一个基于文本界面的<家庭记账软件> 需求:能够记录家庭的收入,支出,并能够收支明细表 主要涉及一下知识点: - 局部变量和基本数据类型 - 循环语句 - 分支语句 - 方法调用和返回值 ...

  6. Redis数据结构和对象三

    1.Redis 对象系统 Redis用到的所有主要数据结构,简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合.跳跃表. Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些 ...

  7. ios打包的IDP证书的创建方法

    在我们打包ios应用的时候,需要一个IDP证书. 那么我们如何生成这个IDP证书呢?网上介绍的方法都是需要使用mac电脑,然后用mac电脑的钥匙串访问的功能先生成csr文件,然后去苹果开发者生成,然而 ...

  8. Hi3559AV100外接UVC/MJPEG相机实时采图设计(四):VDEC_Send_Stream线程分析

    下面随笔将对Hi3559AV100外接UVC/MJPEG相机实现实时采图设计的关键点-VDEC_Send_Stream线程进行分析,一两个星期前我写了有三篇系列随笔,已经实现了项目功能,大家可以参考下 ...

  9. 少走弯路之marshalsec的编译(RMI必备工具)

        0x00 实验环境 实验机:Ubuntu18(公网Linux系统) 0x01 安装包 私聊我博客将会第一时间提供安装包环境: 0x02 避坑指南 由上篇文章:https://www.cnblo ...

  10. 白嫖微软Azure12个月服务器

    前言 Azure是微软提供的一个云服务平台.是全球除了AWS外最大的云服务提供商.Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务.这里的Azure是Azure国 ...