一个Keygen,参考参考
看到一个Keygen,我觉得还可以,参考参考
//////////////////////////////////////////////////////////////////
// //
// keygen for PCHunter_pro //
// //
// //
// //
//////////////////////////////////////////////////////////////////
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
#include "crypto/aes.h" // 用到了cryptopp 库
#include "crypto/modes.h"
#include "crypto/filters.h"
using namespace CryptoPP;
template<class ByteT>
string hex2str(ByteT* hex, int len, const string& delim=" ") {
if(len == 0) return "";
string s;
char x[4];
for(int i=0; i<len; i++) {
sprintf_s(x, 4, "%02X", ((unsigned char*)hex)[i]);
s += x;
if(i != len-1) s += delim; // append delim if not the last char
}
return s;
}
string hex2str(const string& hex, const string& delim=" ") {
return hex2str(hex.c_str(), hex.length(), delim);
}
string aes_encrypt(string& plain, string& key) {
ECB_Mode< AES >::Encryption e((byte*)key.c_str(), key.length());
string cipher;
StringSource ss(plain, true,
new StreamTransformationFilter( e,
new StringSink( cipher ),
StreamTransformationFilter::NO_PADDING) );
return cipher;
}
#pragma pack(push, 1)
struct reg {
byte unknown_1[80];
FILETIME ft_beg;
FILETIME ft_end;
byte unknown[32];
};
#pragma pack(pop)
int main() {
string key = "ShouJiErShiSiShi";
reg r;
byte* p = (byte*)&r;
for(unsigned int i=0; i<sizeof(reg); i++) { // 填充 00 ~ FF
p[i] = i;
}
SYSTEMTIME st;
GetSystemTime(&st); // 得到当前时间 -> start time
SYSTEMTIME st_new = st;
st_new.wYear += 10; // 当前时间+10年 -> end time
SystemTimeToFileTime(&st, &r.ft_beg); // 转成8字节的 FILETIME,xuetr用的这个
SystemTimeToFileTime(&st_new, &r.ft_end);
string plain;
plain.assign((const char*)&r, sizeof(r));
cout << "raw:" << endl << hex2str(plain) << endl;
string encrypted = aes_encrypt(plain, key); // 加密
// cout << "encrypted:" << endl << hex2str(encrypted) << endl;
ofstream ofs("c:/pchunter.ek", ios::binary); // 写到 key file
ofs << hex2str(encrypted, "");
ofs.close();
}
一个Keygen,参考参考的更多相关文章
- fileinput 配置项大全,从源码中翻出了很多属性,没那么多时间一一验证,特发出来给大家参考参考
fileinput 配置项大全,从源码中翻出了很多属性,没那么多时间一一验证,特发出来给大家参考参考 fileinput 配置项大全 option 属性名 属性类型 描述说明 默认值 language ...
- Servlet模板,一个供新手参考的模板
由于这学期老师的进度是刚开始教JavaSE部分,而我的进度比较快,所以买了3本javaee的书,我根据自己的基础,选择了合适的开发实践,另外两本书都和框架相关,我自认为我的web基础还不是很牢固,所以 ...
- 一个简单可参考的API网关架构设计
网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关. 相应的 API 网关将各系统对外暴露的服务聚合起来,所有要调用 ...
- Linux 一个sysv 脚本参考模板
说明: 1.很多时候我们的服务都是通过源码包编译安装,但是有的源码包编译完成后并不提供该服务的sysv风格脚本,我们只能手动执其二进制程序+配置文件 2.如果服务器宕机或重启,就不能自动完 ...
- [development][tcp/ip][ids] 一个简单有参考价值的库 libnids
libhtp 中的例子, 可以通过libnids快速使用. 或者可以快速的写个sniffer. 支持三个功能 ip分片重组, tcp乱序重排, 端口扫描发现. 工程: https://github.c ...
- 一个很有参考意义的unity博客
http://blog.csdn.net/lyh916/article/details/45133101
- 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。
转载https://www.cnblogs.com/zhang-bo/p/9138151.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建 ...
- 使用uniapp开发项目来的几点心得体会,供新手参考参考
先说一下提前须要会的技术 要想快速入手uniapp的话,你最好提前学会vue.微信小程序开发,因为它几乎就是这两个东西的结合体,不然,你就只有慢慢研究吧. 为什么要选择uniapp??? 开发多个平台 ...
- ABAP 数据字典中的参考表和参考字段的作用
ABAP数据字典中的参考表和参考字段的作用 大家最初在SE11中创建表和结构的时候都会遇到一个问题,如果设定了某个字段为QUAN或者CURR类型,也就是数量或金额的时候,总会要求输入一个参考 ...
随机推荐
- Transistor latch improves on/off circuitry
Figure 1 shows an example of on/off circuitry commonly used in battery-operated devices. The p-chann ...
- serial-input, parallel-output (SIPO) chip : TPIC6595 , 74HC164 , 74HC4094 or 74HC595
http://electronics.stackexchange.com/questions/6676/which-sipo-chip-is-better-74hc4094-or-74hc595-or ...
- Spartan-6 FPGA Configuration
These configuration pins serve as the interface for a number of different configuration modes: • JTA ...
- [转]如何在Windows Server 2012中安装.Net Framework 3.5?
http://www.cnblogs.com/westsource/archive/2012/12/26/2834876.html If you have Windows Server 2012 is ...
- 如何注入值到Spring bean属性
在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 b ...
- setTimeout你知多少
假期这么快就结束了,其实对我来说没什么影响,因为我一周才两节课,对于课多的同学来说,我天天在休假,不要羡慕哟~ 但休假并不代表闲着,还是得苦逼的编代码,唉..一入程序深似海.. 不管学得多少,还是总 ...
- 《转》OpenStack Ceilometer 安装配置和API说明
1.概述 Ceilometer是OpenStack中的一个子项目.它像一个漏斗一样.能把OpenStack内部发生的差点儿全部的事件都收集起来,然后为计费和监控以及其他服务提供数据支撑.Ceilome ...
- Python学习(九)IO 编程 —— 文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- iOS开源项目:DYNavigationController
DYNavigationController是一个实现了左右滑动导航的项目. https://github.com/dyang/DYNavigationController 首先用之前的跟视图初始化D ...
- C#中的yield
一.C#中yield关键字用于遍历循环中,yield语句的两种形式 yield return用于返回IEnumerable<T>, yield break用于终止循环遍历. 二.yield ...