PDF解密去除限制工具(RSA算法绕过破解)

26,017次阅读
没有评论

共计 2190 个字符,预计需要花费 6 分钟才能阅读完成。

博客很久都没动了,懒了。。

入正题:

PDF解密去除限制工具(RSA算法绕过破解)

    平时我们可能都有遇到过这种被加密的PDF,但我们又需要提取里面的内容或更改。这个时候就需要找PDF解密去除工具了,有人说网上在线破解的一大把,也是的,但如果文档有隐私你还会直接在网页上上传吗?

我直接搜了下,发现有很多这类的软件,我随手下了一个:http://app.pdfdo.com/download.aspx  (网上标价15元/永久)

可我是搞逆向破解爱好者啊,我肯定要练练手啊!

PDF解密去除限制工具(RSA算法绕过破解)

代码被.NET Reactor(4.5-4.7)混淆加密保护了。

PDF解密去除限制工具(RSA算法绕过破解)

第一想法,应该能做注册机。

先脱壳,用到的工具是:de4dot-Reactor5.0(因为是.NET Reactor(4.x),其他版本都没有脱掉壳)

PDF解密去除限制工具(RSA算法绕过破解)

脱壳后的程序能正常运行

丢进dnSpy-x86,简单的分析了下流程,发现注册机是没法做了(因为用了RSA非对称算法),只能尝试爆破。

PDF解密去除限制工具(RSA算法绕过破解)

PDF解密去除限制工具(RSA算法绕过破解)

PDF解密去除限制工具(RSA算法绕过破解)

//关键代码,注册逻辑

private void method_1()
        {

             //打开注册表 HKEY_CURRENT_USER\SoftWare\PDFdo\PasswordRemover
            RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(BLL.strRegistry);

            if (registryKey != null)
            {

                //获取注册表中"NowTimes"的值

                object value = registryKey.GetValue("NowTimes");
                if (value != null)
                {
                    int.TryParse(value.ToString(), out this.reVal);
                }

                //获取注册表中"Register"的值,这个值不能为空,这个也就是注册码,如果为空一定是试用版
                value = registryKey.GetValue("Register");
                if (value != null)
                {

                    //将注册码赋值给s_Code变量
                    this.s_Code = value.ToString();
                }

                //获取机器码与"PWRemover_"字符串连接

                this.
s_MKey = "PWRemover_" + RegisterBLL.getMNum();
            }


            if (this.s_Code != "" && this.s_MKey != "")
            {
                this.Rres = this.register_0.button2_Click(this.s_MKey, this.s_Code);
                if (this.Rres == RegType.Registered)
                {

                    //隐藏注册窗体
                    this.btnRegister.Visible = false;
                    return;
                }
            }
            if (this.Flag == "")
            {

                //弹出软件注册
                this.register_0.ShowDialog();
            }
        }

从上面的代码可以看出来,只要满足if (this.Rres == RegType.Registered)这个条件,那么软件就不会出现软件注册了。

PDF解密去除限制工具(RSA算法绕过破解)

先满足注册表的条件,手动加了一个Register

PDF解密去除限制工具(RSA算法绕过破解)

这段就是RSA的算法,但是这个只是验证部分,所以注册机是没法做了。

图中箭头指向的三个地方其实就是一个结构体。

Unregiste=0        //未注册

Registered =1     //已注册

Unknow=2          //未知

因为这个验证的返回值是regType,只要regType=1 就表示验证成功。

PDF解密去除限制工具(RSA算法绕过破解)

尝试把Unregiste赋值为1  Unknow赋值为1 ,这样return regType的时候就为1了

PDF解密去除限制工具(RSA算法绕过破解)

在return regType处下断点,然后需要改一下返回值

PDF解密去除限制工具(RSA算法绕过破解)

最后return regType 返回的都是1   就表示验证成功。

PDF解密去除限制工具(RSA算法绕过破解)

这个时候  F5运行,程序就破解了。

最后记得保存

PDF解密去除限制工具(RSA算法绕过破解)

PDF解密去除限制工具(RSA算法绕过破解)

15块的软件引发的一篇文章,这里我虽然没有写分析得过程,但破解的地方写的很详细了。

PDFdo_Password_Remover大小:26M | 来源:本站
已经过安全软件检测无毒,请您放心下载。

正文完
 0
admin
版权声明:本站原创文章,由 admin 于2018-10-10发表,共计2190字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码