eureka0225 发表于 2019-12-21 11:07

[求助]自己做的kengenme,自己解不出来

code:
```
#include <bits/stdc++.h>
#include <iostream>
#include <string>
#ifdef linux
    #include <unistd.h>
    #include <pwd.h>
#endif

#ifdef _WIN32
    #include<Windows.h>
#endif
using namespace std;
#include<stdio.h>
#include<string.h>
string xxooxxxoooxooxoooxo()
{
#if defined linux   //linux system
    uid_t userid;
    struct passwd* pwd;
    userid=getuid();
    pwd=getpwuid(userid);
    return pwd->pw_name;

#elif defined _WIN32
    const int MAX_LEN = 100;
    char szBuffer;
    DWORD len = MAX_LEN;
    if( GetUserName(szBuffer, &len) )
      return szBuffer;

#else
    return "";
#endif
}
int main()
{
    hash<string> h;
    string xxxooxx=xxooxxxoooxooxoooxo();
    string n;
    string k;
   
    cout<<"Name:";
    cin>>n;
    string xxooxx=n+xxxooxx;
    size_t kkk=h(xxooxx);
    string kk=to_string(kkk);
    cout<<"Key:";
    cin>>k;
    if(xxooxx.length()>17)
    {
      cout<<"Too Long!"<<endl;
      return 0;
    }   
   
    if(kk==k){
      cout<<"Ok, you kengened me!"<<endl;
    }else{
      cout<<"Key error!"<<endl;
    }
    system("pause");
    return 0;
}```

自制keygenme拿来练手的,自己解不出来了,求大神帮忙

可能大家理解有误,我的意思是试图通过逆向等方式从编译出来的exe中获取key

zfzhhh 发表于 2019-12-21 12:33

这个cm太简单,会被打
https://www.bilibili.com/video/av80055819/

冥界3大法王 发表于 2019-12-21 12:17

#include <bits/stdc++.h>
#include <iostream>
#include <string>
#ifdef linux
    #include <unistd.h>
    #include <pwd.h>
#endif

#ifdef _WIN32
    #include<Windows.h>
#endif
using namespace std;
#include<stdio.h>
#include<string.h>
string xxooxxxoooxooxoooxo()
{
#if defined linux   //linux system
    uid_t userid;
    struct passwd* pwd;
    userid=getuid();
    pwd=getpwuid(userid);
    return pwd->pw_name;

#elif defined _WIN32
    const int MAX_LEN = 100;
    char szBuffer;
    DWORD len = MAX_LEN;
    if( GetUserName(szBuffer, &len) )
      return szBuffer;

#else
    return "";
#endif
}
int main()
{
    hash<string> h;
    string xxxooxx=xxooxxxoooxooxoooxo();
    string n;
    string k;
   
    cout<<"Name:";
    cin>>n;
    string xxooxx=n+xxxooxx;
    size_t kkk=h(xxooxx);
    string kk=to_string(kkk);
    cout<<"Key:";
    cin>>k;
    if(xxooxx.length()>17)
    {
      cout<<"Too Long!"<<endl;
      return 0;
    }   
   
    if(kk==k){
      cout<<"Ok, you kengened me!"<<endl;
    }else{
      cout<<"Key error!"<<endl;
    }
    system("pause");
    return 0;
}
代码 是不是有问题啊,好多的#

eureka0225 发表于 2019-12-21 14:28

冥界3大法王 发表于 2019-12-21 12:17
#include
#include
#include


代码能过..

eureka0225 发表于 2019-12-21 14:33

zfzhhh 发表于 2019-12-21 12:33
这个cm太简单,会被打
https://www.bilibili.com/video/av80055819/

这。。这是keygen{:1_937:}

solly 发表于 2019-12-21 17:13

eureka0225 发表于 2019-12-21 14:33
这。。这是keygen

#include <bits/stdc++.h>
#include <iostream>
#include <string>
#ifdef linux
    #include <unistd.h>
    #include <pwd.h>
#endif

#ifdef _WIN32
    #include<Windows.h>
#endif
using namespace std;
#include<stdio.h>
#include<string.h>
string xxooxxxoooxooxoooxo()
{
#if defined linux   //linux system
    uid_t userid;
    struct passwd* pwd;
    userid=getuid();
    pwd=getpwuid(userid);
    return pwd->pw_name;

#elif defined _WIN32
    const int MAX_LEN = 100;
    char szBuffer;
    DWORD len = MAX_LEN;
    if( GetUserName(szBuffer, &len) )
      return szBuffer;

#else
    return "";
#endif
}
int main()
{
    hash<string> h;
    string xxxooxx=xxooxxxoooxooxoooxo();
    string n;
    string k;
   
    cout<<"Name: ";
    cin>>n;
    string xxooxx=n+xxxooxx;
    size_t kkk=h(xxooxx);
    string kk=to_string(kkk);
    cout<<" Key: "<<kk.c_str()<<endl;
    //system("pause");
    return 0;
}

涛之雨 发表于 2019-12-21 18:48

//。。。。。。。以上省略
if (kk==k){
      cout<<"Ok, you kengened me!"<<endl;
    }
//。。。。。。。以下省略

所以既然判断了,直接把kk输出不就好了。。。
去掉判断,直接输出kk,重新编译一下。
不就行了?还是楼主要分析出Keygen?那源码在这里,也没有意义啊。。。

zfzhhh 发表于 2019-12-21 21:02

eureka0225 发表于 2019-12-21 14:33
这。。这是keygen

不太明白规则,
你这个给的源码,里面有加密过程.
所以如果要keygen,最简单的是直接复制源码做出来.

你的意思是想通过编译后的exe,分析出来,而遇到困难是吗?

hao5205420 发表于 2019-12-22 09:42

大神还真多 在这扎堆了都

eureka0225 发表于 2019-12-22 12:00

zfzhhh 发表于 2019-12-21 21:02
不太明白规则,
你这个给的源码,里面有加密过程.
所以如果要keygen,最简单的是直接复制源码做出来.


是这样的
页: [1] 2
查看完整版本: [求助]自己做的kengenme,自己解不出来