学习笔记第六课 VB程序
VB程序的特殊地方在于:
前几课学的破解方法,诸如设置API断点,修改关键CALL的返回值,MESSAGEBOX断点等,这些对于VB程序都是无效的。
这节课是设置VB的API断点,绕过报错弹窗来破解。
第一步 查一下程序的基本信息:

发现看不出来有壳无壳,也不知道程序用什么编写的.
载入OD再观察。
第一步 OD载入程序
图1是 OD载入程序后的反汇编窗口代码样式

图2是 OEP工具里VB6反汇编代码的特征截图

可以发现两者的相似度很高,程序很有可能就是VB6编写的。
如果还不确定,可以向上翻页,看到下图就可以完全确定了(红圈处的msvbvm60)

有这些VB6的函数,那就百分百能确定是VB6程序无疑。
另外,代码段很整齐,没有乱码之类,应该是无壳的。
第二步 下断点
上方工具栏点击 BreakPoint----VB APIs----rtcMsgBox,设置VB的信息框断点。

下好断点后,F9运行程序,注册界面输入假码,点击注册。程序会停在刚才设置的断点位置

可以看到,程序停在了系统领空,这里是没法修改的,所以要尽快跳转到程序领空。
一直按住F8,不用担心跳的太远,程序在运行到弹出错误窗口的时候OD会停住,在错误窗口点了确定OD才能继续F8下一步。
继续F8,会遇到一个retn,然后跳出了当前的CALL,来到了程序领空。

这时,可以在刚才跳出的CALL的上方寻找关键跳
往上翻找,发现一个左箭头 ">",说明有一个跳转进来了。
而这个跳转刚好跳过了一个JMP,点击这个JMP发现其可以跳过报错提示。(太长不截图了)
所以只要回到这个下图红圈标记出的JE的源头,NOP掉,令原先被跳过的JMP实现跳转,就可以实现破解。

第三步 NOP掉JE,F9运行程序,点击注册,发现果然跳过了验证,注册成功。

学习笔记第六课 VB程序的更多相关文章
- OD学习笔记10:一个VB程序的加密和解密思路
前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...
- angular8 大地老师学习笔记---第六课
export class TodolistComponent implements OnInit { public keyword:string; public todolist:any[]=[]; ...
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- JVM学习笔记-第六章-类文件结构
JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
随机推荐
- SpringBoot放置在static下面的静态页面无法访问
最近写项目本来写的好好的,突然static的静态页面访问不了了. 于是我各种上网查资料,看大佬的解决方案,还是没有解决. 直到发现了这篇文章 https://blog.csdn.net/cmqwan/ ...
- Go的并发调度原理
Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言:也正是Go语言的并发特性,吸引了全球无数的开发者. 并发(concurrency)和并行(parallellism) 并发 ...
- Blog Part I
写随笔是不可能写的,这辈子都不可能写的. ——https://music.163.com/song?id=5039077 ============ Blog?不,并不擅长,毕竟Blog不是Novel, ...
- PM学习梳理--需求管理
- 【JAVA】学习笔记(2)
Java完整的类的定义 [pubilc][abstact|final] class className [extends superclassName] [implements InterfaceNa ...
- IDEA鼠标显示javadoc的设置
IDEA鼠标显示javadoc的设置 从Eclipse切换到IDEA中以后最不适用的就是鼠标放到方法上没有注释弹出来给我看,很难受,每次使用ctrl+Q来看总觉得不开心,找了一下设置,设置方法如下: ...
- php项目中使用element.ui和vue
1.plugins中添加axios,element-ui 2.全局文件下引入 <script src="/static/plugins/vue@2.5.13/vue.js"& ...
- 学以致用三十六-----弄懂python装饰器
看了海峰老师讲解的装饰器视频,讲解的非常棒.根据视频,记录笔记如下: 装饰器: 1.本质是函数,用def来定义.功能就是用来(装饰)其他函数,为其他函数添加附加功能 现有两个函数如下, def tes ...
- C# 获取外网IP地址
很多情况下我们需要获取外网的IP地址,一般用自带的方法获取到的都是不准确,往往获取到的是内网的IP地址,所以需要采用外部网站接口来获取. 代码 通过访问第三方接口来获取真实的ip地址 public s ...
- php倒计时
<form name="form1"> <div align="center" align="center"> &l ...