• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 软件应用 >> 病毒安全 >> 详细内容
 

推荐文章

 
 

热点文章

  • 网吧任我行
  • 诺基亚手机杀毒软件使用指南
  • 加密软件PGP教程
  • 如何防止黒客远程盗取QQ密码
  • 远程盗ADSL帐号密码竟如此简单?
  • 如何破解PCAnyWhere的密码
  • 破解 女性基础体温管理软件 v1.2
  • 破万象.免费上网
  • 使用ARP命令来绑定IP和MAC地址
  • 完全免费!国外杀毒软件AVG新版试用!
  • C语言学习系统 v3.0 破解过程
  • IE再现漏洞,立刻升级新补丁!
 
 

相关文章

 
 

百度搜索

 
 

注册机编写器说明文件(1)

  • 阅览次数:
  • 文章来源: CodePub整理
  • 原文作者: 不详
  • 整理日期: 2006-10-05
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

 这个注册机编写器以前一直是我自己为写注册机而编写的,通过它只要略有汇编基础很快就能写出一个注册机。而不需要再过多的了解程序的指令算法。 整个程序体实际上只是我用汇编写的一个模板。所以大家也可以在其中自定义自己的界面和提示信息。 可以用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 ; 对应于上面的40306C
a3 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
MOV WORD PTR a2+2,5Ch
PUSH 0
PUSH 0
PUSH 0
PUSH 0
LEA EAX,a1 ; 令EAX指向a1
PUSH EAX
PUSH 0
PUSH 0
LEA EAX,a2
PUSH EAX ; 令EAX指向a2
CALL GetVolumeInformationA ; 当然这几条语句也可以直接写成
invoke GetVolumeInformationA,addr a2,0,0,addr a1,0,0,0,0
的形式
MOV EAX,1
CPUID
MOV ECX,a1
XOR EDX,EDX
MUL ECX
ADD EAX,EDX
PUSH EAX
LEA EAX,a3 ; 令EAX指向a3,也就是指向字符“%1X”。
PUSH EAX
LEA EAX,a4
PUSH EAX
CALL wsprintfA

LEA EAX,a4

; 令EAX指向a4。因为程序最后显示的就是EAX寄存器所指向的内存地址的数据。

  输入如:

  可以看到这与上面的反汇编代码基本相同。点击编译就可以很容易的得到一个注册机了。

  生成的注册机如下图所示(这只是我写的外观,你也可以自行修改):

  需要说明的是因为这只是我写的一个模板,所以我也在程序中使用了几个变量。
   请不要再重复声明:hCursorHandle、hInstance、hIcon、hTempEbp、hInput、hMode以免出错。
   还有就是你一定要在指令结束时令EAX指向正确的注册码地址。

  

上一篇:PHP编程技巧:看实例学正则表达式
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号