破解练习-CRACKME010

查看 64|回复 4
作者:逸聆君   
010-注册算法分析
一、工具和调试环境
  • PE信息查看工具:Die
  • 动态调试工具:x64dbg
  • 系统环境:win10 1909

    二、分析用户名/注册码的算法
    2.1运行程序
    只有一个key编辑框和ok按钮,直接点击ok按钮会报错


    010-01.png (17.72 KB, 下载次数: 0)
    下载附件
    2023-2-10 17:20 上传

    2.2查壳
    用Die查壳,无壳,vb程序
    2.3详细分析
    依然是搜索字符串,直接上x64dbg搜索字符串


    010-02.png (37.95 KB, 下载次数: 0)
    下载附件
    2023-2-10 17:20 上传

    然后跳转,基本情况和009一样,下面直接放出关键算法位置


    010-03.png (176.54 KB, 下载次数: 0)
    下载附件
    2023-2-10 17:20 上传

    其中用到的函数基本在009我们已经熟悉过了,又添加了两个函数rtcBstrFromAnsi和vbaVarCat,前一个是将ascii字符转换为字符串,后一个是拼接字符串,只不过参数是变体。
    这段代码就是将name的每个字符的ascii值加10,组成一个新的字符串


    010-04.png (118.64 KB, 下载次数: 0)
    下载附件
    2023-2-10 17:20 上传

    将之前新组成的字符串与上图红框框出来的字符串相比较,如果相等,就提示成功。
    所以真正的key只要将上面框出来的字符串每个字符的ascii值减10,就可以得到一个固定的key值,为:aNoThEr oNe cRaCkEd !
    三、算法核心代码模拟
    char* GetKey9()
    {
        char szName[] = "kXy^rO|*yXo*m\kMuOn*+";
        static char szKey[60] = {};
        for (int i = 0; i
    四、API总结
    rtcBstrFromAnsi
    // 字符转换为字符串
    // 栈传参
    char* rtcBstrFromAnsi(char ch);
    vbaVarCat
    // 变体字符串拼接(pVariant1 = pVariant2 + pVariant3)
    // pVariant2 和 pVariant3 字符串拼接在一起,结果放在 pVariant1中
    // 返回值等于 pVariant1
    Variant* vbaVarCat(Variant* pVariant1, Variant* pVariant2, Variant* pVariant3);

    字符串, 算法

  • p紫气东来   

    来看看下了
    戰龍在野   

    谢谢楼主的坚持不错好好学习
    lxhlw   

    学习学习
    decency   

    感谢分享,学习学习
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部