AtomineerUtils爆破過程記錄


AtomineerUtils是國外的一款用於生成源代碼注釋的一款VS插件,官方網站:http://www.atomineerutils.com/products.php

通過鏈接,可以看出這款插件的功能十分強大,不像GhostDoc那樣,只支持C#,這款插件,支持C、C++、C++/CLI、C#、Java語言等,由此可以看出其強大,注釋的風格可以靈活配置。

雖然他功能十分強大,但是由於是收費的軟件,所以當使用超過30天后,就無法再繼續適用了。雖然價格不貴,只有40美刀,但是由於時間緊急,必須立刻使用他的功能,所以沒有時間去購買license。

那么能不能試着破解他呢,或者繼續使用。說到破解,我的水平也就只能研究一下未混淆的.Net程序,如果這個插件是用C++寫的話,那么不好意思,破不了。

用Reflector試着打開,發現能識別,如下:

Atomineer版本

同時也可以看到這個版本號是:8.16.5174.40541。這是最新版本了。

既然是.Net的DLL,那么相對來說就好說了,至少和C++相比來說,有希望了。

既然是VS的插件,那么肯定要遵守VS的插件接口規范。(VS的插件接口不在本篇中介紹)

首先找到它的OnConnect方法:

OnConnect方法

然后從OnConnect方法入手進行研究,最終定位到這里:

internal static bool b(bool A_0, bool A_1 = false)
{
    bool flag = true;
    int num = (((DateTime.Today.Year - 2010) * 365) + DateTime.Today.DayOfYear) << 8;
    int num2 = 0;
    try
    {
        num2 = Convert.ToInt32(c(f, "0", string.Empty));
    }
    catch
    {
    }
    int num3 = (num - num2) >> 8;
    if (num3 > 19)
    {
        if (e[0][0] == 'I')
        {
            for (int i = 0; i < e.Length; i++)
            {
                StringBuilder builder = new StringBuilder();
                for (int j = 0; j < e[i].Length; j++)
                {
                    builder.Append((char) (e[i][j] ^ (16 | (j % 16))));
                }
                e[i] = builder.ToString();
            }
        }
        if (num3 > 29)
        {
            flag = false;
            Commands.f();
            if ((num3 == g) || A_1)
            {
                return false;
            }
            MessageBox.Show(e[0] + Environment.NewLine + Environment.NewLine + e[1] + Environment.NewLine + Environment.NewLine + e[2], "Atomineer Pro Documentation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else
        {
            if ((num3 == g) || !A_0)
            {
                return true;
            }
            string[] strArray2 = new string[] { e[3], (30 - num3).ToString(), e[4], Environment.NewLine, Environment.NewLine, e[5] };
            if (MessageBox.Show(string.Concat(strArray2), "Atomineer Pro Documentation", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != DialogResult.Yes)
            {
                return true;
            }
        }
        k.h("t~e}xzws");
        g = num3;
    }
    return flag;
}

根據上面的邏輯,只要不執行 num3 > 29的邏輯,並且返回值為true即可,可以做如下修改:

bool flag = true;
...
int num3 = (num2 - num2) >> 8;

這樣,num3等於0,而且返回值為true。

那么如何修改這些代碼呢,基於Reflector的Reflexil插件,來修改IL代碼,然后另存為dll文件即可。

如下,是修改后的截圖:

Atomineer破解后

這樣,整個插件就算是被破解了,可以無限期使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM