| 注册机编写器说明文件 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:58:01
|
| 注册机编写器说明文件 这个注册机编写器以前一直是我自己为写注册机而编写的,通过它只要略有汇编基础很快就能写出一个注册机。而不需要再过多的了解程序的指令算法。 整个程序体实际上只是我用汇编写的一个模板。所以大家也可以在其中自定义自己的界面和提示信息。可以用VC++或BC++等资源编辑工具自行修改key1.res资源文件,但请不要修改它们对应的ID号。 在目录目录 EXAMPLE 下有一个例子程序,主要用来举例说明这个程序的使用(我先假设自己并不太懂Win32汇编)。 通过动态调试或反汇编例子程序可以得到以下注册码的计算过程: xxxx:00401077 CALL GetCommandLineA xxxx:0040107C CMP BYTE PTR [EAX],22 xxxx:0040107F JNZ 401082 xxxx:00401081 INC EAX xxxx:00401082 MOV CX,WORD PTR [EAX] xxxx:00401085 MOV WORD PTR [0040306C],CX xxxx:0040108C MOV WORD PTR [0040306E],5C xxxx:00401095 PUSH 0 xxxx:00401097 PUSH 0 xxxx:00401099 PUSH 0 xxxx:0040109B PUSH 0 xxxx:0040109D PUSH DWORD 00403058 xxxx:004010A2 PUSH 0 xxxx:004010A4 PUSH 0 xxxx:004010A6 PUSH DWORD 0040306C xxxx:004010AB CALL GetVolumeInformationA ………… ………… ………… ………… xxxx:0040111E MOV EAX,1 xxxx:00401123 CPUID xxxx:00401125 MOV ECX,DWORD PTR [00403058] xxxx:0040112B XOR EDX,EDX xxxx:0040112D MUL ECX xxxx:0040112F ADD EAX,EDX xxxx:00401131 PUSH EAX xxxx:00401132 PUSH DWORD 0040303E ; 在这里下D 40303E可以看到数据窗口中显示为“%1X” xxxx:00401137 PUSH DWORD 0040305C xxxx:0040113C CALL wsprintfA 对于以上的指令并不需要过多的了解它在干什么,只要将其中的每个地址改成一个变量地址的声明,然后再原封不动的抄到注册机编写器的代码窗口中即可。 这是写好的声明:a1 dd 0; 这是一个双字的内存空间,对应于上面的403058。 ;(因为40109D处的指令是DWORD 403058,所以用dd,如果是WORD就用dw,如果是BYTE就用db)a2 dd 0; 对应于上面的40306Ca3 db "%1X",0; 对应于上面的40303E指向的字符串 a4 db 20 dup (0); 这是20个字节的内存空间,用来存放输出的注册码,对应于上面的40305C 输入如图所示:  这是写好的程序代码:CALL GetCommandLineA CMP BYTE PTR [EAX],22h; 后面加h表示是十六进制JNZ n1 INC EAX n1: MOV CX,WORD PTR [EAX] MOV WORD PTR a2,CX&nb
[1] [2] [3] [4] 下一页
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: 实现调用加壳的外壳中的子程序的一点见解 下一篇文章: 8086/8088指令集 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |