序列号明码比较的反汇编代码以及注册机的初步使用

参照 加密与解密 第三版,5.1.3、5.1.4节;

序列号明码比较的反汇编代码形式如下;

形式1:寄存器直接比较
mov eax []
mov ebx []
cmp eax, ebx
jz(jnz) xxxx
    eax,ebx,放的是直接比较的两个数;

形式2:函数比较1
mov eax []
mov ebx []
call xxxxxxxx   ;比较函数,可以是API函数,或自己写的函数;
test eax eax
jz(jnz)

形式3:函数比较2
push xxxx
push xxxx
call xxxxxxxx  ;比较函数
test eax eax
jz(jnz)

形式4:串比较
lea edi  []    ;edi指向字符串a
lea esi  []    ;esi指向字符串b
repz cmpsd    ;比较
jz(jnz)

keymake软件,它拦截程序指令并将出现的明码以某种方式直接显示出来;

由keymake软件生成注册机;

运行时,注册机装载目标程序,在指定地址处插入一个INT 3指令,目标程序会在此中断,然后注册机将内存或寄存器值读出,再恢复原程序指令;

TraceMe的反汇编代码如下;

此处,keymake需要拦截TraceMe两次;第一次是4011E5h的call;然后是40138Dh地址,以便查看EBP指向的字符串;

此处序列号保存在ebp指向的内存地址;

下载keymake;

从菜单选择 其它/内存注册机;

浏览打开TraceMe.exe;如图添加要拦截的地址;选中 内存方式,寄存器,EBP;

点 生成 按钮;让你选择生成的注册机外观;

选择生成的注册机保存的地址;默认和要装载的程序同一目录;

生成一个注册机zc1.exe;

运行zc1.exe;果然装载运行了TraceMe.exe;

注册机装载TraceMe,输入用户名,单击Check按钮,注册机拦截到以后,会弹出一个窗口告知正确的序列号;

但是操作到此;注册机并未如原书所说,弹出窗口告知正确的序列号;

估计是Windows版本不同;TraceMe反汇编出来的代码地址并不一致;

就是keymake设置时,输入的中断地址不对;

没有时间了,下回再搞;


 

发布了475 篇原创文章 · 获赞 545 · 访问量 304万+

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/104645950
今日推荐