首页 > 其他分享 >CppDepend2023.1分析

CppDepend2023.1分析

时间:2023-04-14 22:25:23浏览次数:57  
标签:分析 CppDepend2023.1 false string flag bool return out

       这是一个.Net程序,使用 dotfuscator进行了混淆。虽然混淆了,但是不影响调试,可以直接使用dnspy进行调试。Help>License Information可以作为调试的入口点。

       通过实时调试可以很轻松的找到校验授权的代码,在CppDepend.Core.dll中。可以将其修改为总是返回true。你可以通过搜索下面这个字符串快速的抵达目标位置:

<RSAKeyValue><Modulus>js+lphb91jLdPAiud7BvAgtTU2KIiLSrt/UitlMEEdxUQpDD4/+TxoO9XimXrcknJAVrXU8uWaBnbgA/tJt/0R2p2MzAGRn5KOUZWtNDk8xtYm0muj9J+JxUqf2xcpmSPfeehmxhI8cnk7X8vJYVbbjEjgx7BEcJMyBWYz4E00s=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

      

internal static bool a(string A_0, out aiq A_1)
    {
        A_1 = null;
        a9a a9a;
        if (!l4.a(A_0, out a9a))
        {
            a9a = null;
        }
        bool flag;
        try
        {
            using (StringReader stringReader = new StringReader(A_0))
            {
                using (XmlReader xmlReader = new XmlTextReader(stringReader))
                {
                    if (!bgz.a(xmlReader, a9a, out A_1))
                    {
                        flag = false;
                    }
                    else
                    {
                        string text = A_1.a();
                        string text2 = "<RSAKeyValue><Modulus>js+lphb91jLdPAiud7BvAgtTU2KIiLSrt/UitlMEEdxUQpDD4/+TxoO9XimXrcknJAVrXU8uWaBnbgA/tJt/0R2p2MzAGRn5KOUZWtNDk8xtYm0muj9J+JxUqf2xcpmSPfeehmxhI8cnk7X8vJYVbbjEjgx7BEcJMyBWYz4E00s=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
                        bool flag2 = ms.a(text2, A_0, text);   // 这就是我们要修改的函数...
                        flag = flag2;
                    }
                }
            }
        }
        catch
        {
            flag = false;
        }
        return flag;
    }

       修改

internal static class ms
{
    // Token: 0x0600417D RID: 16765 RVA: 0x0012BFD8 File Offset: 0x0012A1D8
    internal static bool a(string A_0, string A_1, string A_2)
    {
        byte[] array;
        return ms.a(A_1, out array) == aye.a && ms.a(A_0, A_2, array);
    }
}

     为:

internal static class ms
{
    // Token: 0x0600417D RID: 16765 RVA: 0x00004DD4 File Offset: 0x00002FD4
    internal static bool a(string A_0, string A_1, string A_2)
    {
        return true;
    }
}

     这可以使得不管什么license文件都是有效的license文件,然后找到license保存的函数,这个函数跟前面搜索的字符串使用处是挨着的,将有效期改得特别长,即可:

// Token: 0x060035E1 RID: 13793 RVA: 0x00102968 File Offset: 0x00100B68
    private static bool a(XmlReader A_0, a9a A_1, out bga A_2)
    {
        bool flag = A_1 != null;
        A_2 = null;
        string text = "EvaluationResponse";
        string text2 = "DateRegister";
        string text3 = "DateExpire";
        string text4 = "MoreEvalAlreadyAsked";
        string text5 = "HardwareID";
        string text6 = "HardwareIDUnhashed";
        string text7 = "EvalNbDaysLeftToShowActivationForm";
        string text8 = "EvalNbDaysLeftToShowAskForMoreEvalButton";
        string text9 = "CanReEvalNbDaysAfterEvalExpiration";
        string text10 = "EvalRegisteredWithProductVersion";
        A_0.ReadToDescendant(text);
        string text11;
        string text12;
        if (flag)
        {
            text11 = A_1.b();
            text12 = A_1.c();
            A_0.ReadToDescendant(text2);
        }
        else
        {
            A_0.ReadToDescendant(text5);
            text11 = A_0.ReadString();
            if (!text11.b(36))
            {
                return false;
            }
            a46.b(A_0);
            if (A_0.Name != text6)
            {
                return false;
            }
            text12 = A_0.ReadString();
            if (!text12.b(289))
            {
                return false;
            }
            a46.b(A_0);
        }
        if (A_0.Name != text2)
        {
            return false;
        }
        aaf aaf;
        if (!aaf.a(A_0.ReadString(), out aaf))
        {
            return false;
        }
        a46.b(A_0);
        if (A_0.Name != text3)
        {
            return false;
        }
        string text13 = A_0.ReadString();
        text13 = text13.Substring(0, text13.Length - 4) + "2050";  // 这可以让你的试用时长变得特别长
        aaf aaf2;
        if (!aaf.a(text13, out aaf2))
        {
            return false;
        }
        if (aaf2.d() <= aaf.d())
        {
            return false;
        }
        a46.b(A_0);
        if (A_0.Name != text4)
        {
            return false;
        }
        bool flag2;
        if (!bool.TryParse(A_0.ReadString(), out flag2))
        {
            return false;
        }
        int num;
        if (!ao3.a(A_0, text7, out num))
        {
            return false;
        }
        int num2;
        if (!ao3.a(A_0, text8, out num2))
        {
            return false;
        }
        int num3;
        if (!ao3.a(A_0, text9, out num3))
        {
            return false;
        }
        if (num < num2)
        {
            return false;
        }
        if (flag)
        {
            a46.b(A_0);
            if (A_0.Name != text10)
            {
                return false;
            }
            Version version;
            if (!Version.TryParse(A_0.ReadString(), out version))
            {
                return false;
            }
            A_2 = new ayi(aaf, aaf2, flag2, num, num2, num3, version, A_1);
        }
        else
        {
            A_2 = new bga(aaf, aaf2, flag2, text11, text12, num, num2, num3);
        }
        return true;
    }

       如果你觉得evaluate remain days这种字符串很碍眼的话,也可以直接把它改成其它的。保存的时候,需要勾选"MD写入选项”的所有参数以确保不会破坏dll本身。

 原版下载:

链接: https://pan.baidu.com/s/1pUuc49bvtiOIyvFJ-nAjcw?pwd=jnx7 提取码: jnx7 

标签:分析,CppDepend2023.1,false,string,flag,bool,return,out
From: https://www.cnblogs.com/bodong/p/17320104.html

相关文章

  • r0capture 原理分析
    r0capture是比较好用的抓包工具仅限安卓平台,测试安卓7、8、9、10、11、12可用;无视所有证书校验或绑定,不用考虑任何证书的事情;通杀TCP/IP四层模型中的应用层中的全部协议;通杀协议包括:Http,WebSocket,Ftp,Xmpp,Imap,Smtp,Protobuf等等、以及它们的SSL版本;通杀所有应用层框......
  • Weka数据挖掘Apriori关联规则算法分析用户网购数据
    全文链接:http://tecdat.cn/?p=32150原文出处:拓端数据部落公众号随着大数据时代的来临,如何从海量的存储数据中发现有价值的信息或知识帮助用户更好决策是一项非常艰巨的任务。数据挖掘正是为了满足此种需求而迅速发展起来的,它是从大量的、不完全的、有噪声的、模糊的、随机的数据......
  • 深度分析辉瑞在新冠肺炎疫情结束后的投资价值
    辉瑞(PFE)是全球最大的制药公司之一,专门开发和生产用于治疗心血管疾病、癌症和自身免疫性疾病等多种疾病的药物,以及用于预防流感、COVID-19和其他病毒的疫苗。尽管现阶段人们接种COVID-19疫苗的意愿已经明显下降,但辉瑞还是在2022年第四季度实现了了242.9亿美元的收入,并较2021年第四......
  • 中电金信:2022银行年报分析——金融科技资金投入及人才队伍建设
    ......
  • jsjiami.v6解密分析
    JS加密是Web前端开发中常用的一种技术,可以用于保护敏感数据或者代码,避免被恶意攻击者窃取或篡改。其中,JS加密库JSJiami.v6是一款广受欢迎的JS加密库,下面我们来详细介绍一下。JSJiami.v6是一款基于JavaScript语言的加密库,其主要功能是将JavaScript代码进行混淆、压缩和加密,使得代码......
  • 深度分析和黄医药在中国医药领域的投资价值
    分析和黄医药在中国医药领域的投资价值和黄医药简介和黄医药(HCM)是一家成立于2000年,由前华人首富李嘉诚旗下的长江和记实业投资3000万美元在上海张江成立的创新药物研发研发企业。而且是中国最早的一批专注于癌症和免疫性疾病的靶向创新药物研发研发企业。和黄医药主要通过两个分部......
  • fastjson 1.2.24 反序列化漏洞(审计分析)
    环境JDK8u181Fastjson1.2.24POC跟进parse方法跟进到底层deserialze方法Poc中传入的dataSourceName:ldap://192.168.3.229:8084/vnSYPYwMs值这里实际对应setDataSourceName方法,调用此方法并传入ldap跟进setDataSourceName方法,这里只是简单赋值 步出......
  • 基于编辑距离相似度分析的单词编译器
    单词分析器单词数据想要构建一个单词分析器,首先数据是必不可少的,这部分单词就靠大家自己去爬取了......
  • MySQL(十四)分析查询语句Explain 七千字总结
    分析查询语句:EXPLAIN1概述​ 定位了查询慢的SQL之后,就可以使用EXPLAIN或者DESCRIBE工具做针对性的分析查询。两者使用方法相同,并且分析结果也是相同的。​ MySQL中有专门负责SQL语句优化的优化器模块,主要功能是计算分析系统中收集到的统计信息,为客户端请求的Query提供它最优的......
  • 大道至简:Python奇技淫巧记录 | 语法糖分析
    目录0.内置函数enumerate1.zip妙用2.Python传参0.内置函数enumerate偶然看到别人题解中fori,iteminenumerate(arr)的写法,非常方便。在需要获取元素index而又不关心数组长度情况下,推荐这种写法,节省了两行代码!否则:n=len(arr)foriinrange(n):item=arr[i]......