2019-03-19 CrackMe 3

2019-03-19  本文已影响0人  月夜阑珊

首先程序会有一个Nag窗口,而后进入name和serial输入框
首先选择了吾爱上一位师傅讲的方法去掉Nag窗口:4C法
首先确定这是VB 5.0/6.0程序,根据VB程序特点:
在程序开始都会有一个push紧跟call指令:


VB

根据此处push位置0x4067D4,在数据框中追踪此位置偏移0x4C位置,即:
0x4067D4+0x4C:


data
此处为0x406868,再跳到此位置:
data
可以看到每0x50字节一个结构体(实际上在初始位置有大小说明:0x50)
对应结构体0x24位置指明了资源的优先级,可以看到第一个为00,第二个为01,程序会先加载00,后加载01,因此我们将这两个字节改变,让输入窗口先出现,而后复制到可执行文件->所有修改即可在patch的程序中去除Nag窗口
另一种方法:

在SetTimer下断点(ctrl+g即可在x32dbg下找到SetTimer函数,OD下总是断失败,应该是我的OD有问题)
SetTime函数定义:

UINT_PTR SetTimer(
  HWND hWnd,              // 窗口句柄
  UINT_PTR nIDEvent,      // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
  UINT uElapse,           // 时间间隔,单位为毫秒
  TIMERPROC lpTimerFunc   // 回调函数
);

运行程序看到栈中的参数:


stack

看到对应时间为0x1B58
在二进制文件中搜索此字符"58 1b 00 00"
只有一处,改为"01 00 00 00"(直接改为"00 00 00 00"会卡在Neg窗口)
运行即可发现neg窗口一闪而过(基本看不到了)

上一篇下一篇

猜你喜欢

热点阅读