打开abexcm5.exe可执行文件
002-abexcm5(Crack练习)

1.png


随便输入一串数字查看一下运行效果,可以看到返回一个窗口显示注册码错误
002-abexcm5(Crack练习)

2.png


查一下文件信息看到是使用汇编写的,无壳
002-abexcm5(Crack练习)

3.png


用OllyDbg打开abexcm5.exe,搜索字符串可以找到刚才消息框中弹出的字符串,点进去看一下代码
002-abexcm5(Crack练习)

4.png


分析代码段可以看到这里调用了GetDigitemTextA、GetVolumeInformation、lstrcat、MessageBoxA等函数,004010FF处还有一处相等跳转转到MessageA显示注册码正确,所以这里就很轻松找到了关键代码。可以将je改成jmp进行强行跳转,实现任意注册码进入。
002-abexcm5(Crack练习)

5.png


下面我们分析验证码算法实现用C语言写一个简易注册机
在关键代码入口点0040106C按F2打上断点,运行程序,程序停在断点处后输入任意数字提交。
002-abexcm5(Crack练习)

6.png


按F8单步运行
运行完GetDigitemTextA可以在栈帧窗口看到我输入的数字123456存储在00402324
002-abexcm5(Crack练习)

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                         // 文件系统缓冲区长度
);
002-abexcm5(Crack练习)

8.png


接着运行到下个函数lstrcatA可以看到函数在0040225C(存放的是卷名Windows)后追加了4562-ABEX
002-abexcm5(Crack练习)

9.png


002-abexcm5(Crack练习)

10.png


再接着运行到下一段,经过观察可以发现是一个do..while..循环
循环2次,每次循环分别在下面4个地址的值加1
002-abexcm5(Crack练习)

11.png


循环过后查看一下内存窗口可以看到前4位分别加了2
002-abexcm5(Crack练习)

12.png


再接着运行到下一个函数lstrcatA,和前面一样,将L2C-5781加在了00402000的位置
002-abexcm5(Crack练习)

13.png


再接着运行到下一个函数lstrcatA,还是一样的,将00402225C加在00402000后
002-abexcm5(Crack练习)

14.png


此时00402000的数据是这样的
L2C-5781Ykpfows4562-ABEX
002-abexcm5(Crack练习)

15.png


然后就可以看到用户输入的数据在与L2C-5781Ykpfows4562-ABEX做比较,如果相等就跳转到正确窗口,反之就跳到错误窗口。因此可以判断L2C-5781Ykpfows4562-ABEX就是我本机的注册码。
002-abexcm5(Crack练习)

16.png


输入L2C-5781Ykpfows4562-ABEX就可以看到显示注册码正确!
002-abexcm5(Crack练习)

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;
}
运行效果:
002-abexcm5(Crack练习)

18.png


参考资料:
[https://blog.csdn.net/pjf_1806339272/article/details/107368909](https://blog.csdn.net/pjf_1806339272/article/details/107368909)
标签:
002-abexcm5(Crack练习)

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“002-abexcm5(Crack练习)”
暂无“002-abexcm5(Crack练习)”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。