制作注册机

制作注册机1 对明码比较软件的攻击 只要正确的序列号以明码的方式出现过 都属于这一类 1 使用 OD 加载 TraceMe exe 进行分析 具体分析和这篇文章相同 序列号保护 https blog csdn net weixin article details spm 1001 2014 3001

大家好,我是讯享网,很高兴认识大家。

1.对明码比较软件的攻击

只要正确的序列号以明码的方式出现过,都属于这一类。

1.使用OD加载TraceMe.exe,进行分析。具体分析和这篇文章相同,序列号保护
讯享网https://blog.csdn.net/weixin_/article/details/?spm=1001.2014.3001.5501

2.使用keymake软件

找到关键处代码,在004011E5处跳转到子程序,在此设置第一次中断地址,在0040138D处将真序列号放入ebp寄存器,此处设置第二次中断。

使用keymake,选择其他->内存注册机

设置如下图:

然后生产注册机就可使用。

 ​​​​​​​

 

2. 非明码比较

1.加载Serial.exe程序,观察,输入姓名以及序列号之后,系统提示“Incorrect!TryAgain”提示,以此为突破点。

2.使用OD加载该程序,点击右键,在查找中选择所有参考文本串。该文本串“Incorrect!TryAgain”出现两次,都下断点。

 3.运行程序,程序中断在第一处。

 使用快捷键Ctrl+F9,执行到返回处,观察返回处代码,在调用处下断点,重新运行程序。

 4.程序中断在刚才下断点处,观察此处代码,发现两处可疑处,分别下断点,再重新运行程序。

 5.程序中断在第一处,发现我们在对话框输入的用户名作为参数传递。进入该函数内部。

 该函数内部出现了第二个字符串的中断,观察可知此处是用户名输入错误与密码无关。可取消此处中断。然后观察该段代码,可知此处为计算用户名的函数。该段代码功能为:若用户名都为小写字母,则转为大写字母,若为大写字母则不做处理。然后将大写用户名的字母ASCII码累加在一起然后与0x5678异或,得到用户名的密码。将其保存在堆栈里。调用完之后,将密码把保存在eax中。

 6.再跟踪输入的序列号为参数,调用的函数。该函数功能比较简单,将输入的序列号与0x1234异或,得到序列号的密码,存储在ebx中。

7.返回到主程序,若eax与ebx相同则验证成功,若不同则验证失败。

 8.针对此可编写注册机代码。

#include"stdio.h" void main() { char name[10]; char ch; printf_s("please input your name:"); gets(name); int k1 = 0; int k2 = 0; for (int i = 0; name[i] != 0 && i <= 9; i++) { ch = name[i]; if (ch < 'A') break; k1 += (ch > 'Z') ? (ch - 32) : ch; } k2 = k1 ^ 0x5678 ^ 0x1234; printf_s("the password is :%d",k2); }

讯享网

 使用admin用户名,生成密码为:17701

 测试该密码是否正确。

小讯
上一篇 2025-03-30 22:21
下一篇 2025-01-09 16:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/29659.html