160 - 13 badboy
偷懒了很久也是时候要继续开始学习了。
环境:
windows xp sp3
工具:
VB Decompiler v8.3
这次是个vb文件,所以尝试一下用这个的感觉。
打开文件之后发现有两个CrackMe选择,分别是1.0版本和2.0版本。
打开vb decompiler,载入badboy,
在Forms的Form1里头,几乎有所有的控件的属性,找到Caption为“try”的commandbutton,然后记下它的标号,分别是2,4
然后跑到code,在form1里面找到command2和command4的click事件。
因为1.0版本的CrackMe只有一个输入框,那就可以猜测Command4是1.0的try,因为已经有代码了,照着看就好了。
发现要和Label3的caption相同才行,那么Label3的caption是如何来的呢?
把From1里头的事件都找一遍,最后在Combol的click中找到了Label3,然后上面有一长串的计算公式,就不难猜测上面公式的计算结果就是Label3的capton内容了。
公式内容是:
CStr((((CLng(Day(Now) * Day(23) + Month(Now) * Month(2) + Year(Now) * Year(3)) + CLng((((Day(Now) * Day(23)) + (Month(Now) * Month(2))) + (Year(Now) * Year(3)))))
+ CLng((Day(14) * Year(2020)))) + CLng((Day(14) * Year(2020)))))
根据这串公式就可以得出CrackMe 1,0的输入内容了。
Day(Now)是指今天的号数,Month(Now)是今天的月份,Year(Now)则是今年的年份了
Day(23) 则是 22, Moth(3)则是1,Year(3)是1900,Day(14)是13,Year(2020)是1905
然后就可以写出CrackMe1.0注册机了。
现在来看看CrackMe 2.0的command2的click事件。
首先看到的是一个长度判断,输入的Name长度不能小于5
然后有一个很长的字符串:
var_94 = "0110617121214051216101106141404110614140411091211100810101608040610121608100416"
var_98 = Text1.text 这个就是保存输入的name
紧接着就是2个for循环,其中:
Mid()函数在我理解中是:Mid(char * s, int begin,int length),即从s[begin-1]的位置开始,数到s[begin-1+length],将这个范围里的数字转为数字。
如:Mid(var_94,CLng(var_A8*3),3),假设var_A8 = 4吧,然后找到var_94[11]的位置,然后数3个数字,所以函数返回结果是:1405
val()函数就是将string类型转为double型
Asc()函数则是计算字母的ascii值
最后面是一个比较,比较的内容是输入的serial 和两个for得出的结果的对比,相同则显示成功。
在写注册机的时候需要注意的是,有些变量是突然间跑出来的,可以假设它之前为0,还有个问题是var_A8有一个var_A8+1判断是否大于等于39,但是显然找不到改变var_A8的值的地方,或许是工具反编译的时候有问题,但是仍然可以猜想var_A8的改变情况,拿第一个for循环来讲:或许是var_A8++,也可能是var_A8 *= 3,那么当它大于等于39的时候,它就会变成0,然后它将会一直为0,可以两种方法都测试一下,会发现都得不到正确serial,那么就有可能是在 if(var_A8+1)>=39 then 这里的判断多了,把“+1”去掉,在这个判断前面加上var_A8++,就能得到正确的serial
160 - 13 badboy相关推荐
- 苹果开发之Cocoa编程(原书第4版)
<苹果开发之Cocoa编程(原书第4版)> 基本信息 原书名:Cocoa Programming for Mac OS X: Fourth Edition 作者: (美)希莱加斯(Hill ...
- php 彩蛋 flag,php4的彩蛋
今天看了一些代码,看到了一个小彩蛋. /* env.php */ phpinfo(); ?> 用浏览器访问 http://ipaddress/dirname/env.php?=PHPE9568F ...
- 在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面
From: http://www.blogjava.net/ivanwan/archive/2012/04/26/376670.html From: http://www.bubuko.com/inf ...
- 在windows下使用Xming+Putty显示Linux下软件图形界面
From: http://www.blogjava.net/ivanwan/archive/2012/04/26/376670.html From: http://www.bubuko.com/inf ...
- 英寸、 Picas、 点、 跨度和 Twips 之间的关系
有几个方法 typographers 用于测量字符间距 (字距调整) 和行间距 (前导字符). 下面列出了定义,和您可能要使用的典型转换. POINT "点"是等于 1 / 72 ...
- python创意编程是什么_Python趣味创意编程
第 1 章 Python与Processing介绍 1 1.1 什么是Python 1 1.2 Processing下载与配置 2 1.3 小结 4 第 2 章 转动眼珠的圆脸 5 2.1 显示一个圆 ...
- CentOS7通过定时脚本阻断异常IP连接SSH(实测)
需求 由于业务需要将Linux服务器映射到公网访问,SSH 端口已经修改,但还是发现有很多IP进行暴力破解,尝试将异常IP阻止非法访问,实现方式①SSH黑名单 ②Firewalld防火墙添加drop规 ...
- 兰州大学2016年初试成绩基本要求
兰州大学2016年硕士研究生招生复试分数线(学术型) 学校确定的复试分数线为考生进入复试的最低要求,我校各招生学院可根据生源情况向上调整复试分数线.考生能否进入复试以各招生学院最终公布的复试分数线为准 ...
- 基于Python-turtle库绘制哆啦A梦和大雄在一起
源码: # -*- coding: utf-8 -*- from turtle import * import turtlespeed(0) penup() seth(180) fd(200) set ...
最新文章
- Linux学习之获取帮助
- 征集并发文献译者之Disruptor
- 怎么一键排版_做了这么久的PPT!终于找到可以自动排版的插件了
- ストアドプロシージャ(存储过程)
- boost::callable_traits的remove_member_volatile_t的测试程序
- Matlab变量、分支语句和循环语句
- CPU的主频,总线频率和L2缓存对电脑的性能有哪些影响
- [COCI 2017-2018-2]-San
- python socket.error: [Errno 24] Too many open files
- java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...
- 平台式可复用的应用集成能力,助您敏捷、高效的完成企业数字化转型
- c语言编写贪吃蛇难点解析,刚学C语言,想写一个贪吃蛇的代码
- java 解析xml文件
- FileSystemObject详解
- Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
- Mathematica图像处理
- デュナリス / 风奶
- excel表格打印每页都有表头_教你一招Excel打印技巧:每页有表头标题,阅读起来是真方便...
- 手机上可以拍一寸证件照吗
- r710服务器系统故障排除,DELL R710服务器安装windows sever2008 故障排除经历(一)硬件排错...
热门文章
- 摇杆控制方向原理_图文全面讲解多种方向控制阀的原理和区别....
- java获取系统当前时间格式化_java 获取系统当前时间并格式化
- php分页上一页下一页判断,分页(上一页,下一页)
- mysql 字符集测试_MySQL多字符集备份恢复测试
- 有多个python版本_python 多版本共存
- expr命令 linux,Shell expr命令进行整数计算的实现
- flask总结之session,websocket,上下文管理
- 精读《你不知道的javascript》中卷
- td过长,将固定宽度table撑开
- Mysql远程登录及常用命令