是否有可能解决这个方程式无暴力破解呢? [英] Is it possible to solve this equation without brute forcing it?

查看:144
本文介绍了是否有可能解决这个方程式无暴力破解呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对,所以我想从凯基这crackmes.de程序
http://crackmes.de/users/lutio/keygenme1_by_lutio/

Right, so I'm trying to keygen this program from crackmes.de http://crackmes.de/users/lutio/keygenme1_by_lutio/

我不要求别人为我做这个,我只是问,如果可能没有暴力破解。

I'm not asking someone to do this for me, I'm just asking if its possible without brute forcing.

我通常没有这样的事情的麻烦,但由于某些原因该用户不从用户名,唯一的序列使用的任何变量。他还表示,暴力破解是不允许解决他凯基。我相信这是不可能没有暴力破解来解决。

I normally don't have trouble with such things, but for some reason this user doesn't use any variables from the username, only the serial. He also says that brute forcing isn't allowed to solve his keygen. I believe that it is impossible to solve without brute forcing.

是否有人真正知道它可能没有穷举解决?这基本上是code我有:

Does someone actually know if its possible to solve without bruteforcing? This is basically the code I have:

    unsigned int key = 0x1FE339E4; //compute == this for success

    unsigned int serialvar = unknown; //gennerated according to serial
    unsigned int magic1 = 0x1FE339E7;

    for( int i = 0; i < 0x10; i++ ) {

        serialvar = (((magic1 * i + serialvar) << 0x10) ^ serialvar) + 0x13371337;
        serialvar = (((i * magic1 + serialvar) >> 0x10) ^ serialvar) + 0x73317331;

    }



    unsigned int computed = 0;

    for( int i = 0; i < serialvar; i++ ) {
        computed += 0x3C;
    }

对,所以在code年底,为了取得成功,并打出了goodboy我们的无符号整型计算必须等于关键。

Right, so at the end of the code, in order to succeed and hit the "goodboy" our unsigned int computed has to be equal to key.

我们知道,在serialvar是未知的变数,我不得不产生。 (这基于关闭,我会再生成一个序列)

As we know, the "serialvar" is the unknown variable that I have to generate. (Which I will then generate a serial based off of)

在我的数学和布尔代数的水平,我认为,这个公式是不可能解决的。

At my level of mathematics and boolean algebra, I believe that this equation is impossible to solve.

现在我不能完全肯定,如果这道数学说法是正确的......但是,如果我把钥匙,并划分为0x3C吧...我没有得到一个整数!

Now I'm not exactly sure if this math statement is correct... But if I take key and divide it by 0x3C... I don't get an integer!

不这类意味着它是不可能解决的?由于键/ 0x3C符号没有整数解?

Doesn't this sort of mean it is impossible to solve? Since key / 0x3C has no integer solution?

推荐答案

如果我的理解是正确的,你的最终值计算,你想知道的价值的未知 ...

if I understand that correctly, you have the final value of computed and you want to know the value of unknown...

首先你要解决的方程式:

first of all you have to solve the equation:

=计算serialvar点¯x0x3C符号(MOD 2 ^ 32)

computed = serialvar x 0x3C (mod 2^32)

有可能会得到serialvar的多个值。

there you may get multiple values of serialvar.

之后,你必须扭转16倍的循环。

after that you have to reverse the 16 fold loop..

我看不出有什么简单的方法如何解决(((我* MAGIC1 + serialvar)GT;&GT; 0×10)^ serialvar)和其他前$为 serialvar 点$ pssion。
serialvar的高16位没有改变,因为&GT;&GT; 将使其对异零。
下半部分可以由precalculated阵列来计算。有可能会被多个解决方案(这是非常probbable)和您的计算会分裂。
与下半区同样将举行第二前pression。

I don't see any simple way how to solve (((i * magic1 + serialvar) >> 0x10) ^ serialvar) and the other expression for serialvar. The top 16 bits of serialvar are not changed because >> will make it xor against zeros. bottom half may be computed by precalculated array. There will probably be multiple solutions (which is very probbable) and your computation will split. The same with bottom half will hold for the second expression.

此方式计算总费用将类似于暴力破解。

This way the total computation expenses will be similar to bruteforcing.

这篇关于是否有可能解决这个方程式无暴力破解呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆