PS_URINE 发表于 2017-2-18 13:55

一个重复造轮子的内存注册机生成工具


使用KeyMake写内存注册机遇到过一个短板,碰到DLL就GG了,所以加了这个功能,生成的注册机样式还是比较死板,不过可以自己用源码修改。

那个生成器的源码是在凌晨3点写的,晕乎乎的,自己都不知道自己到底在写什么J8玩意……我汗

不过最后还是能用,是吧,能用就是硬道理。

本人菜鸡一只,如有不对之处,还望指教,本人不胜感激。


生成的注册机的样式

目录下有一份帮助文档,第一次使用还是看一下吧。
1.本工具支持两种地址下断模式
      1.VA地址模式
      2.RVA地址模式
      
      VA = ImageBase + RVA

      VA地址针对EXE程序,RVA地址针对DLL

      VA地址就和KeyMake的地址是一样的,RVA地址需要填写DLL名,和RVA偏移

      (选择RVA模式时,填写VA地址的地方填写模块名,再右边一个Edit(TextBox、编辑框)填写偏移)
      
      DLL名请不要填写.dll后缀,如果是ABC.DLL,直接填写ABC即可

      RVA偏移请不要写上+符号,只需要填入十六进制偏移即可

2.【注册码在内存中模式】的偏移如何使用
      本偏移与写内存外挂的偏移不是同一回事!请仔细理解以下内容

      本偏移使用需要写上+号或-号,分别代表加与减

      第一层偏移,表示对您所选择的寄存器的值进行偏移+-操作,得到的数值作为第一层偏移的结果

      第二层偏移,表示把第一层偏移得到的结果加减第二层偏移数值,得到的结果作为一个内存地址,再从这个内存地址中读取出一个DWORD(int、整数型)数据,作为第二层偏移的结果

      第三层偏移以此类推

      用[]内存寻址符号来表示就是

      第一层偏移:寄存器+第一层偏移
      第二层偏移:[寄存器+第一层偏移+第二层偏移]
      第三层偏移:[[寄存器+第一层偏移+第二层偏移]+第三层偏移]
      无论如何设置,最后一层偏移的结果,都要指向要获取的注册码!!!

      偏移支持0偏移,但前面要带上+或者-号

      本人觉得这一块设计得太糟糕了,如果您有更好的办法,请联系我,本人不胜感激!!!

3.为什么要设置第一字节
      这个第一字节一定要填好,因为这个字节是用来判断写入INT3断点时机的

4.支持把注册码读取为什么形式
      1.DWORD(int、整数型) 以十进制表示
      2.DWORD(同上) 以十六进制表示
      3.ASCII字符串
      4.UNICODE字符串

      其中3、4方式如果选择的是【注册码在寄存器中方式】则无法使用!(我觉得一个32位寄存器不可能被用来存Byte数组吧?)

5.发现BUG如何反馈?
      请致信fjack2002.3.10@gmail.com

这是编译后的成品:
这是源代码:

webstz 发表于 2017-2-18 14:27

支持原创

ywtvag 发表于 2017-2-18 14:55

怎么玩的

seemanglee 发表于 2017-2-18 16:03

a165 发表于 2017-2-19 21:58

感谢楼主分享的设计哦
页: [1]
查看完整版本: 一个重复造轮子的内存注册机生成工具