打开abexcm5.exe可执行文件
1.png
随便输入一串数字查看一下运行效果,可以看到返回一个窗口显示注册码错误
2.png
查一下文件信息看到是使用汇编写的,无壳
3.png
用OllyDbg打开abexcm5.exe,搜索字符串可以找到刚才消息框中弹出的字符串,点进去看一下代码
4.png
分析代码段可以看到这里调用了GetDigitemTextA、GetVolumeInformation、lstrcat、MessageBoxA等函数,004010FF处还有一处相等跳转转到MessageA显示注册码正确,所以这里就很轻松找到了关键代码。可以将je改成jmp进行强行跳转,实现任意注册码进入。
5.png
下面我们分析验证码算法实现用C语言写一个简易注册机
在关键代码入口点0040106C按F2打上断点,运行程序,程序停在断点处后输入任意数字提交。
6.png
按F8单步运行
运行完GetDigitemTextA可以在栈帧窗口看到我输入的数字123456存储在00402324
7.png
接着单步运行到下个函数GetVolumeInformation
栈帧窗口中出现了GetVolumeInformation中参数,百度看一下这个函数的信息
BOOL GetVolumeInformationA(
[IN] LPCTSTR lpRootPathName, //卷所在的根目录,如:"C:\", 如果为NULL,表示当前目录
[OUT] LPTSTR lpVolumeNameBuffer, // 输出参数,存放卷名缓冲区
[IN] DWORD nVolumeNameSize, // 卷名缓冲区长度
[OUT] LPDWORD lpVolumeSerialNumber, // 卷序列号
[OUT] LPDWORD lpMaximumComponentLength, // 最大文件文件名组件长度,随文件系而变化
[OUT] LPDWORD lpFileSystemFlags, // 文件系统的一些属性,通常为一些宏的组合
[OUT] LPTSTR lpFileSystemNameBuffer, // 说明何种文件系统,例如NTFS, FAT等
[IN] DWORD nFileSystemNameSize // 文件系统缓冲区长度
);
8.png
接着运行到下个函数lstrcatA可以看到函数在0040225C(存放的是卷名Windows)后追加了4562-ABEX
9.png
10.png
再接着运行到下一段,经过观察可以发现是一个do..while..循环
循环2次,每次循环分别在下面4个地址的值加1
11.png
循环过后查看一下内存窗口可以看到前4位分别加了2
12.png
再接着运行到下一个函数lstrcatA,和前面一样,将L2C-5781加在了00402000的位置
13.png
再接着运行到下一个函数lstrcatA,还是一样的,将00402225C加在00402000后
14.png
此时00402000的数据是这样的
L2C-5781Ykpfows4562-ABEX
15.png
然后就可以看到用户输入的数据在与L2C-5781Ykpfows4562-ABEX做比较,如果相等就跳转到正确窗口,反之就跳到错误窗口。因此可以判断L2C-5781Ykpfows4562-ABEX就是我本机的注册码。
16.png
输入L2C-5781Ykpfows4562-ABEX就可以看到显示注册码正确!
17.png
然后我按照分析出来的算法用C写一个注册机,代码如下:
#include <stdio.h>
#include<Windows.h>
int main() {
char szVolumeNameBuf[MAX_PATH] = { 0 };
DWORD dwVolumeSerialNum;
DWORD dwMaxComponentLength;
DWORD dwSysFlags;
char szFileSystemBuf[MAX_PATH] = { 0 };
DWORD dwFileSystemBuf = MAX_PATH;
char serial[MAX_PATH] = { 0 };
int i = 2;
BOOL bGet = GetVolumeInformationA("C:\\",
szVolumeNameBuf,
MAX_PATH,
&dwVolumeSerialNum,
&dwMaxComponentLength,
&dwSysFlags,
szFileSystemBuf,
MAX_PATH);
lstrcatA(szVolumeNameBuf,"4562-ABEX");
do
{
szVolumeNameBuf[0]++;
szVolumeNameBuf[1]++;
szVolumeNameBuf[2]++;
szVolumeNameBuf[3]++;
} while (--i);
lstrcatA(serial, "L2C-5781");
lstrcatA(serial, szVolumeNameBuf);
printf("注册码:");
printf(serial);
return 0;
}
运行效果:
18.png
参考资料:
[https://blog.csdn.net/pjf_1806339272/article/details/107368909](https://blog.csdn.net/pjf_1806339272/article/details/107368909)
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月01日
2024年11月01日
- 群星《狐妖小红娘月红篇 电视剧原声带》[320K/MP3][233.61MB]
- 英雄联盟s14四强淘汰赛规则是什么 全球总决赛四强淘汰赛规则详解
- 英雄联盟s14四强赛怎么分组 S14全球总决赛四强赛分组规则详解
- 英雄联盟s14四强赛抽签规则是什么 S14全球总决赛四强抽签规则详解
- ButterQuartet-ScintillaEarlyItalianStringQuartets(DeLuxe)(2024)[24Bit-WAV]
- 草原最美情歌《迷醉女中音》2CD/DTS-ES[WAV]
- 爵士女伶何芸妮《靡靡之音》(香港版)[WAVCUE]
- 游戏中辱骂他人同样侵犯名誉权 一玩家被判道歉
- 老游戏远程共享申请失败 美国版权局拒绝豁免请愿
- 通过本地化支付解决方案,解锁150亿美元拉美和非洲游戏市场
- 群星《狐妖小红娘月红篇 电视剧原声带》[FLAC/分轨][574.68MB]
- 群星《红色冲浪板 电影配乐专辑》[320K/MP3][106.63MB]
- 罗艺恒《What Could've Been》[320K/MP3][50.62MB]
- 于台烟.1989-人间山水【银河唱片】【WAV+CUE】
- 杨克强.1992-特制的面具【恩华声视】【WAV+CUE】