前几天由于网络的原因,appcelerator.com在中国大陆访问不了,很多开发者都不能进入大Studio中。这里为大家详细讲解如果不用输入用户名和密码直接进入到Titanium Studio中。
首先我们说说Titanium Studio是如何启动的。
大家都知道Titanium Studio是来源于appcelerator收购的Aptana,而Aptana是基于Eclipse的JavaScript开发IDE,所以他的启动过程应该完全遵守Eclipse的规则。
在扩展Eclipse的时候,如果要自定义启动界面的话,必须创建一个org.eclipse.ui.splash.AbstractSplashHandler的实现,Titanium的实现是:
[quote]com.appcelerator.titanium.rcp_1.0.9.201202141208.jar
com.appcelerator.titanium.rcp.handlers.TitaniumSplashHandler[/quote]
在TitaniumSplashHandler中,通过以下方法来自定义启动界面:
这里就不说他们具体的内容了,重在于创建好页面后,它启动了一个线程,在该线程中,它调用了以下代码:
所以可想而知,是在TitaniumUserManager类中,做的认证。
TitaniumUserManager.class在以下文件夹下:
[quote]plugins\com.appcelerator.titanium.core_1.0.7.1328807407\com\appcelerator\titanium\core[/quote]
TitaniumUserManager类中的代码大家应该都能看懂,不是很复杂!如果我们能够反编译这个类后,修改其中的认证过程,就能实现Studio的crack。但是发现这个类的处理还是比较多,我们把重点放在,loadSignedInUser方法中的以下代码上:
取到这个值后:
可见在byPassLogin为True,username为空的时候,他会创建一个anonymous的TitaniumUser。那么我们就可以想办法把“titanium.bypassAuthentication”属性的值设置为true即可。
查看EclipseUtil.isSystemPropertyEnabled()方法,我们发现这个类很容易被Crack。
只需要在isSystemPropertyEnabled方法中,追加一下代码:
试着我们反编译EclipseUtil代码,修改isSystemPropertyEnabled方法后,再放回com.aptana.core_3.0.4.1325689477.jar中,覆盖plugins中的jar文件后在启动。
你就会看到不用输入用户名和密码了,直接进入了Studio中,至此,大功告成!
[img]http://dl.iteye.com/upload/attachment/0065/6078/aa51d2c6-ba93-30f2-97be-6aa721106b20.gif[/img]
[img]http://dl.iteye.com/upload/attachment/0065/6080/e1ccfb87-c5af-3207-bf86-773c1d11a6f1.gif[/img]
注意上图右下角以前是登陆用户名,现在变成了“Sign out”.
类似像“titanium.bypassAuthentication”这样的key还有“titanium.hideDashboard”,“titanium.dashboardUrl”等,如果需要你也可以这么来修改!
代码和编译好的com.aptana.core_3.0.4.1325689477.jar,从[url=http://dl.iteye.com/topics/download/d28b2e15-c301-3959-9ecd-64f7b350b55d]这里[/url]下载后用。
首先我们说说Titanium Studio是如何启动的。
大家都知道Titanium Studio是来源于appcelerator收购的Aptana,而Aptana是基于Eclipse的JavaScript开发IDE,所以他的启动过程应该完全遵守Eclipse的规则。
在扩展Eclipse的时候,如果要自定义启动界面的话,必须创建一个org.eclipse.ui.splash.AbstractSplashHandler的实现,Titanium的实现是:
[quote]com.appcelerator.titanium.rcp_1.0.9.201202141208.jar
com.appcelerator.titanium.rcp.handlers.TitaniumSplashHandler[/quote]
在TitaniumSplashHandler中,通过以下方法来自定义启动界面:
createLoginComposite(this.mainComp);//Login输入Form
createLinksComposite(this.mainComp);//按钮下方的链接
createProgressComposite(this.mainComp);//进度条
这里就不说他们具体的内容了,重在于创建好页面后,它启动了一个线程,在该线程中,它调用了以下代码:
TitaniumUserManager userManager = TitaniumCorePlugin.getDefault().getUserManager();
userManager.loadSignedInUser();
if (userManager.getSignedInUser() == null)
{
TitaniumSplashHandler.this.status = TitaniumSplashHandler.Status.USER_NOT_LOADED;
}
else
{
TitaniumSplashHandler.this.status = TitaniumSplashHandler.Status.USER_LOADED;
}
所以可想而知,是在TitaniumUserManager类中,做的认证。
TitaniumUserManager.class在以下文件夹下:
[quote]plugins\com.appcelerator.titanium.core_1.0.7.1328807407\com\appcelerator\titanium\core[/quote]
TitaniumUserManager类中的代码大家应该都能看懂,不是很复杂!如果我们能够反编译这个类后,修改其中的认证过程,就能实现Studio的crack。但是发现这个类的处理还是比较多,我们把重点放在,loadSignedInUser方法中的以下代码上:
boolean byPassLogin = EclipseUtil.isSystemPropertyEnabled("titanium.bypassAuthentication");
取到这个值后:
if (byPassLogin)
{
if (username != null)
{
this.user = new TitaniumUser(username, password);
}
else
{
this.user = new TitaniumUser("anonymous", null);
}
}
可见在byPassLogin为True,username为空的时候,他会创建一个anonymous的TitaniumUser。那么我们就可以想办法把“titanium.bypassAuthentication”属性的值设置为true即可。
查看EclipseUtil.isSystemPropertyEnabled()方法,我们发现这个类很容易被Crack。
只需要在isSystemPropertyEnabled方法中,追加一下代码:
if("titanium.bypassAuthentication".equals(option)) {
return true;
}
试着我们反编译EclipseUtil代码,修改isSystemPropertyEnabled方法后,再放回com.aptana.core_3.0.4.1325689477.jar中,覆盖plugins中的jar文件后在启动。
你就会看到不用输入用户名和密码了,直接进入了Studio中,至此,大功告成!
[img]http://dl.iteye.com/upload/attachment/0065/6078/aa51d2c6-ba93-30f2-97be-6aa721106b20.gif[/img]
[img]http://dl.iteye.com/upload/attachment/0065/6080/e1ccfb87-c5af-3207-bf86-773c1d11a6f1.gif[/img]
注意上图右下角以前是登陆用户名,现在变成了“Sign out”.
类似像“titanium.bypassAuthentication”这样的key还有“titanium.hideDashboard”,“titanium.dashboardUrl”等,如果需要你也可以这么来修改!
代码和编译好的com.aptana.core_3.0.4.1325689477.jar,从[url=http://dl.iteye.com/topics/download/d28b2e15-c301-3959-9ecd-64f7b350b55d]这里[/url]下载后用。