功能:

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

  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. 微软YARP初体验

    本文讨论了微软的反向代理--YARP.YARP是一个可以创建高性能.高度可定制的反向代理服务器的类库.那么什么是反向代理呢?反向代理是位于用户与目标服务器之间的中间连接点.它接收初始的HTTP连接请求 ...

  2. 必知必会之Java注解

    必知必会之Java注解 目录 不定期更新中-- 元注解 @Documented @Indexed @Retention @Target 常用注解 @Deprecated @FunctionalInte ...

  3. matlab load函数用法 实例

    一 语法: load(filename) load(filename,variables) load(filename,'-ascii') load(filename,'-mat') load(fil ...

  4. oracle ora-01114 IO error writing block to file 207 (block # )

    oracle ORA-01114 IO error writing block to file 207 (block # ) Reference: https://stackoverflow.com/ ...

  5. WPF权限控制框架——【4】抛砖引玉

    写第一篇"权限控制框架"系列博客是在2021-01-29,在这不到一个月的时间里,收集自己零碎的时间,竟然写出了一个"麻雀虽小,五脏俱全"的权限控制框架:对于一 ...

  6. 更换 grub 主题

    默认的 grub 界面比较简陋 然后突然有想法了,想换个主题 具体操作 1.下载 grub 主题包 去这个地址下载主题(应该是这个地址): https://www.gnome-look.org/bro ...

  7. 后端程序员之路 44、Redis结合protobuf

    protobuf序列化速度不错,在往Redis里存对象时,用protobuf序列化可以节省内存,省去写序列化反序列化代码的工作. google protocol buffer 与 redis 结合使用 ...

  8. MySQL:单表查询

    在线数据库:http://sqlfiddle.com/ 建表脚本:https://gitee.com/bqzzz/sql/tree/master/Scripts 基本查询 ①.查询所有记录 SELEC ...

  9. HDOJ-2181(深搜记录路径)

    哈密顿绕行世界问题 HDOJ-2181 1.本题是典型的搜索记录路径的问题 2.主要使用的方法是dfs深搜,在输入的时候对vector进行排序,这样才能按照字典序输出. 3.为了记录路径,我使用的是两 ...

  10. `vi`——终端中的编辑器

    `vi`--终端中的编辑器 目标* `vi` 简介* 打开和新建文件* 三种工作模式* 常用命令* 分屏命令* 常用命令速查图 01. `vi` 简介 1.1 学习 `vi` 的目的 * 在工作中,要 ...