码迷,mamicode.com
首页 > Web开发 > 详细

.NET破解之google瓦片下载及拼接

时间:2015-07-30 18:47:19      阅读:629      评论:0      收藏:0      [点我收藏+]

标签:

由于最近一些其他事忙,加之电脑显卡坏了,所以,好长一段时间没有更新博客了,感觉对不注关注我的朋友。从本文开始,博客更新频率将会大大降低,但每周都会更新的

在上帝之眼论坛看到了新出来了一个google瓦片下载及拼接工具,看起来不错,这是第一次看到没有视图窗口的地图下载器,还没测试过功能,查壳是.NET写的,于是准备来看看。

技术分享技术分享

1.试用程序

试用程序的目的,一方面是熟悉软件的使用,进一步了解软件,另一方面,也更重要,看它的限制点有哪些,是什么。这往往是为下一步甚至整个过程打下基础。比如这个程序,打开就弹出提示消息 "试用次数为1000次",当然,这个软件是否还有其他限制,还需要进一步地观察。

技术分享

在试用程序时,我们可以借助帮助文档快速熟悉软件。程序的限制一般有三种:第一种是完全不能让你使用,需要插入加密狗或许可文件等,这通常是一些行业软件做法;第二种是让你试用,在时间、次数或功能上进行限制,这是大多商业软件的做法,所以,就有了我们经常听说标准版、专业版等;第三种,让你完全使用,但数据输出进行限制,比如地图下载器,试用版本下载的结果经常在地图上打上水印。

2.搜索关键

我们找到了"试用次数为1000次"的信息后,就按图索骥,用.NET Reflector打开GoogUrim.exe程序,搜索就可找到LinePassord函数。

技术分享

就像警察破案一样,我们得找关键的物证或人证,才有可能把案子给破了。整个过程需要分析、推理、上下关联等等,当然也有破不了案的情况,如证人做伪证(壳没脱好,乱码)。包括其他程序的破解基本都是这个过程。如果破解安卓程序也类似于这样。下面是此函数的具体内容:

public static bool LinePassord()
{
    string str2;
    int num = 0x3e8;
    RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", true);
    object objectValue = RuntimeHelpers.GetObjectValue(key.GetValue("Window pass"));
    if (objectValue == null)
    {
        str2 = Conversions.ToString((int) (num + 0xef811));
        key.SetValue("Window pass", str2);
        MessageBox.Show("首次启用软件,试用次数为" + Conversions.ToString(num) + "次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        return true;
    }
    int num2 = Conversions.ToInteger(objectValue) - 0xef811;
    int num3 = num2;
    if (num3 == (num + 1))
    {
        return true;
    }
    if ((num3 >= 1) && (num3 <= num))
    {
        str2 = Conversions.ToString((int) ((num2 - 1) + 0xef811));
        key.SetValue("Window pass", str2);
        return true;
    }
    string text = "试用次数已完,请您注册!";
    MessageBox.Show(text, "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    return false;
}

  

3.分析代码

找到了证据(关键点)我们就得认真来分析代码了,来搞清楚作案人员(开发者)的动机及作案过程。这需要一定的编程基础和实践经验。

上面这个函数主要读取注册表Software\Microsoft\Internet Explorer\Main路径下是否有Window pass项,这个项目应该是首次程序运行是新建的,以记录打开的次数,如果我们重新打开软件,程序将从982008变成982007次。这个开发者还是有良心的,试用次数还这么多,一般的程序都只能使用一次或者十几次。

技术分享

04.修改程序

最简单的修改方法即是修改次数,当然,也会学会IL的基本语法。

05.深入分析

我们在函数上右键,使用分析功能,即可发现,有两个Load函数调用它,而且都是进行条件判断使用,再结合这个函数本身没有基本设置,只是读取和操作了注册表中的信息。我们可以直接将这个函数的返回值改为真即可。

技术分享

加载一个1(即为真),返回即可。

技术分享

要想熟练修改程序,需要学好IL语法。

06,导出测试

将修改后的程序导出来,测试其他效果。

技术分享

"冰冻三尺,非一日之寒!"并不是说一次性就能操作成功,我们不得不进行反反复复修改,反反复复测试,反反复复使用。

 

原版程序及破解补丁:

http://pan.baidu.com/s/1pJxItrP

http://www.t00y.com/file/109538324

.NET破解之google瓦片下载及拼接

标签:

原文地址:http://www.cnblogs.com/liweis/p/4689774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!