由于最近一些其他事忙,加之电脑显卡坏了,所以,好长一段时间没有更新博客了,感觉对不注关注我的朋友。从本文开始,博客更新频率将会大大降低,但每周都会更新的。
在上帝之眼论坛看到了新出来了一个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,导出测试
将修改后的程序导出来,测试其他效果。
"冰冻三尺,非一日之寒!"并不是说一次性就能操作成功,我们不得不进行反反复复修改,反反复复测试,反反复复使用。
原版程序及破解补丁: