NuclearEngine 发表于 2020-4-4 18:38

一个KeyGenMe有空来看看?

本帖最后由 NuclearEngine 于 2020-4-4 19:14 编辑

一个keygenme
上次那个由于编译器错误优化导致部分东西丢掉了,立刻被gg了,再来一个

一样的VMP3.4虚机+码执行器



逆向下算法呗 链接
https://www.lanzouj.com/iazty0d

来看看啊 发表于 2020-4-6 10:18

灌水 灌水 水满了算 灌水 灌水 水满了算 灌水 灌水 水满了算

alicc 发表于 2020-4-4 20:47

第一帖旧版本的CM发我下;没来得及下。

另外兄弟你这有点猛。


NuclearEngine 发表于 2020-4-6 11:00

本帖最后由 NuclearEngine 于 2020-4-6 11:02 编辑

没人看出来啥了吗,算法不难的呀
vs2010mfc ida可以反的

周易 发表于 2020-4-11 18:14

本帖最后由 周易 于 2020-4-12 08:43 编辑

NuclearEngine 发表于 2020-4-6 11:00
没人看出来啥了吗,算法不难的呀
vs2010mfc ida可以反的
没仔细看。
首先是`ChrMap`,如图。
!(https://i.loli.net/2020/04/11/eJaYlE4DAsSBF3P.png)
结果分两部分,**字符加密部分**和**长度加密部分**。两部分长度都和输入长度相同。
## KeyGenerator ##

```
#include <stdio.h>
char ChrMap[] = "?MRSPQVWXUABCYAFGDEJKHIJOPMRSPQVWXUABCYAFGDEJKHIJOPMRSPQVWXUABCYAFGDEJKHIJOPMRSPQVWXUABCYAFGDEJKHIJOPMRSPQVWXUABCYAFGDEJKHIJOFKL";
char buf;
int main(int argc, char *argv[])
{
      scanf("%[^\n]", buf);
      int iStrLen;
      for(iStrLen = 0; buf != '\0'; iStrLen++)
      {
                printf("%c", ChrMap]);
      }
      for(int iPos = 0; iPos < iStrLen; iPos++)
      {
                printf("%c", ChrMap);
      }
      printf("\n");
      return 0;
}
```

## 后记 ##
另外你这个好像有bug,取值会超过范围的。**KeyGenerator我大概写的,也会超过范围,并且还用了scanf,很不安全,执行请谨慎!**字符串长度超过20以后,多半要崩溃。
不是我说,你这个“UPX”,你确定IDA能直接分析吗……

NuclearEngine 发表于 2020-5-17 14:40

周易 发表于 2020-4-11 18:14
没仔细看。
首先是`ChrMap`,如图。
!()


emmmmm你这个注册机是数学方法算来的???怎么跟我生成码的算法那么不一样呢

周易 发表于 2020-5-17 16:03

本帖最后由 周易 于 2020-6-9 22:32 编辑

内容有误,已删除。
页: [1]
查看完整版本: 一个KeyGenMe有空来看看?