Light紫星 发表于 2019-4-8 14:24

新手向破解:某CSharp 转Java转换器

本帖最后由 云在天 于 2019-6-7 13:02 编辑


昨天破解了一个工具,下载地址 https://www.tangiblesoftwaresolutions.com/index.html ,包含好几个代码转换工具,我用到的是C#代码转Java代码工具。
先下载下来,然后安装,打开后选择一个项目进行转换,发现未注册版本只能转换100行代码,所以接下来准备破解。
查了一下壳,是.net的程序,先拖到de4dot里清理一下,然后用dnspy打开清理后的程序。找到主窗体frmMain,查找关键字“Unlock the Premium Edition”


发现_m142的点击事件为this._m288,点击跟进去,发现App._g13 变量应该就是控制是否注册的变量。对_g13进行分析,发现有三个地方赋值,于是依次进入,修改值为false。


修改完成后保存模块,测试,OK,打开关于看到程序已经为高级版,测试功能正常。

zxf4125 发表于 2019-4-8 20:50

感谢发布原创作品,吾爱破解论坛因你更精彩!

csjwaman 发表于 2019-6-14 08:27



新版本直接赋值不起作用,需要改返回值:

// frmMain
// Token: 0x06000445 RID: 1093 RVA: 0x00055038 File Offset: 0x00053238

private static void Main(string[] sArgs)
{
        Application.EnableVisualStyles();
        try
        {
                App._g13 = !App._g32();    //进入App._g32()
        }
        catch
        {
                App._g13 = true;    //直接赋值为TRUE没有用
        }
        _g1728 @Object = new _g1728();
        Application.ThreadException += @object._g1729;
        frmMain._m17 = sArgs;
        AppUI._g1673 = (frmMain._m17.Length > 0);
        Application.Run(new frmMain());
}



        // Token: 0x06000019 RID: 25 RVA: 0x00007EE8 File Offset: 0x000060E8
       
        public static bool _g32()
        {
                if (TangibleSettings.SettingsFileFoundOnStartup)
                {
                        App._m24 = TangibleSettings.GetUserValue(_g978._g1009(), "");
                        if (App._m24.Length == 0)
                        {
                                App._m24 = TangibleSettings.GetUserValue(_g978._g1008(), "");
                                if (App._m24.Length > 0)
                                {
                                        TangibleSettings.SetUserValue(_g978._g1009(), App._m24);
                                        TangibleSettings.RemoveUserValue(_g978._g1008());
                                }
                        }
                        App._m23 = TangibleSettings.GetUserValue(_g978._g1007(), "missing");
                        if (App._m23 == "missing")
                        {
                                App._m23 = TangibleSettings.GetUserValue(_g978._g1006(), "missing");
                                if (App._m23 != "missing")
                                {
                                        TangibleSettings.SetUserValue(_g978._g1007(), App._m23);
                                        TangibleSettings.RemoveUserValue(_g978._g1006());
                                }
                        }
                }
                else
                {
                        App._m23 = "missing";
                }
                if (App._m23 == "missing")
                {
                        return false;   //改成返回true就可以
                }
                if (!App.Copyright_Tangible_Software_Solutions_g35(App._m23, App._m24))
                {
                        AppUI._g1676(string.Concat(new string[]
                        {
                                _g978._g1002(),
                                " (",
                                App._m23,
                                "). ",
                                _g978.Copyright_Tangible_Software_Solutions_g1020(),
                                "."
                        }));
                        App._g31();
                        return false;
                }
                App._m6 = long.Parse(TangibleSettings.GetUserValue(_g978._g1011(), "0"));
                if (App._m6 == 0L)
                {
                        App._m6 = long.Parse(TangibleSettings.GetUserValue(_g978.Copyright_Tangible_Software_Solutions_g1010(), "0"));
                        if (App._m6 != 0L)
                        {
                                TangibleSettings.SetUserValue(_g978._g1011(), App._m6.ToString());
                                TangibleSettings.RemoveUserValue(_g978.Copyright_Tangible_Software_Solutions_g1010());
                        }
                }
                if (App._m6 == 0L)
                {
                        App._m6 = long.Parse(TangibleSettings.GetUserValue("Build Date on Reg Code Entry", "0"));
                        if (App._m6 != 0L)
                        {
                                bool flag;
                                bool flag2;
                                _g1807.Copyright_Tangible_Software_Solutions_g1820(App._m23, out flag, out flag2);
                                if (flag2 || !flag)
                                {
                                        App._m6 = DateTime.Now.Ticks;
                                        TangibleSettings.SetUserValue(_g978._g1011(), App._m6.ToString());
                                }
                                TangibleSettings.RemoveUserValue("Build Date on Reg Code Entry");
                        }
                }
                return (!App._g36 || !App.Copyright_Tangible_Software_Solutions_m25) && !App._g41("");

ee789852 发表于 2019-4-8 15:12

高手,这真是高手

yhf666 发表于 2019-4-8 15:19

学到了学到了!!!

rensd 发表于 2019-4-8 17:15

mark下,以后用得着再下。

ol416 发表于 2019-4-8 22:00

mark一下,说不定能用得上。

imwangxm 发表于 2019-4-8 23:07

还有这么牛的东西{:301_1009:}

zhaolisheng 发表于 2019-4-9 00:16

高手,向楼主学习

wujincai 发表于 2019-4-9 07:57

这个不错,很有用,赞楼主。

libozi 发表于 2019-4-9 08:25

mark下,向楼主学习
页: [1] 2 3
查看完整版本: 新手向破解:某CSharp 转Java转换器