`
cugbmao09
  • 浏览: 35400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Titanium Studio离线使用

 
阅读更多

一直在搞跨平台的移动开发,之前家里的网络一直没安好,所以Titanium Studio都无法登录使用,因此研究了一下。


在使用Titanium Studio时需要登录,因此在hosts中加入

127.0.0.1 api.appcelerator.net

 这样并不能绕开登录,但是可以使你在离线的情况下登录成功。


再一种方式就是破解Titanium Studio的登录过程:

 

 

Titanium Studio是来源于appcelerator收购的Aptana,而Aptana是基于Eclipse的JavaScript开发IDE,所以他的启动过程应该完全遵守Eclipse的规则。 

在扩展Eclipse的时候,如果要自定义启动界面的话,必须创建一个org.eclipse.ui.splash.AbstractSplashHandler的实现,Titanium的实现是: 

 

引用
com.appcelerator.titanium.rcp_1.0.9.201202141208.jar 
com.appcelerator.titanium.rcp.handlers.TitaniumSplashHandler



在TitaniumSplashHandler中,通过以下方法来自定义启动界面: 

Java代码   收藏代码
  1. createLoginComposite(this.mainComp);//Login输入Form  
  2. createLinksComposite(this.mainComp);//按钮下方的链接  
  3. createProgressComposite(this.mainComp);//进度条  



这里就不说他们具体的内容了,重在于创建好页面后,它启动了一个线程,在该线程中,它调用了以下代码: 

Java代码   收藏代码
  1. TitaniumUserManager userManager = TitaniumCorePlugin.getDefault().getUserManager();  
  2. userManager.loadSignedInUser();  
  3. if (userManager.getSignedInUser() == null)  
  4. {  
  5.   TitaniumSplashHandler.this.status = TitaniumSplashHandler.Status.USER_NOT_LOADED;  
  6. }  
  7. else  
  8. {  
  9.   TitaniumSplashHandler.this.status = TitaniumSplashHandler.Status.USER_LOADED;  
  10. }  



所以可想而知,是在TitaniumUserManager类中,做的认证。 
TitaniumUserManager.class在以下文件夹下: 

引用
plugins\com.appcelerator.titanium.core_1.1.0.1340061699\com\appcelerator\titanium\core



TitaniumUserManager类中的代码大家应该都能看懂,不是很复杂!如果我们能够反编译这个类后,修改其中的认证过程,就能实现Studio的crack。但是发现这个类的处理还是比较多,我们把重点放在,loadSignedInUser方法中的以下代码上: 

Java代码   收藏代码
  1. boolean byPassLogin = EclipseUtil.isSystemPropertyEnabled("titanium.bypassAuthentication");  



取到这个值后: 

Java代码   收藏代码
  1. if (byPassLogin)  
  2. {  
  3.   if (username != null)  
  4.   {  
  5.     this.user = new TitaniumUser(username, password);  
  6.   }  
  7.   else  
  8.   {  
  9.     this.user = new TitaniumUser("anonymous"null);  
  10.   }  
  11. }  


可见在byPassLogin为True,username为空的时候,他会创建一个anonymous的TitaniumUser。那么我们就可以想办法把“titanium.bypassAuthentication”属性的值设置为true即可。 

查看EclipseUtil.isSystemPropertyEnabled()方法,我们发现这个类很容易被Crack。 

只需要在isSystemPropertyEnabled方法中,追加一下代码: 

Java代码   收藏代码
  1. if("titanium.bypassAuthentication".equals(option)) {  
  2.     return true;  
  3. }  



试着我们反编译EclipseUtil代码,修改isSystemPropertyEnabled方法后,再放回com.aptana.core_3.0.4.1340306105.jar中,覆盖plugins中的jar文件后在启动。 
你就会看到不用输入用户名和密码了,直接进入了Studio中,至此,大功告成! 
 


注意上图右下角以前是登陆用户名,现在变成了“Sign out”. 

类似像“titanium.bypassAuthentication”这样的key还有“titanium.hideDashboard”,“titanium.dashboardUrl”等,如果需要你也可以这么来修改! 

分享到:
评论

相关推荐

    TiAttendance

    6. **数据持久化**:考虑使用本地存储(如SQLite数据库)或云同步来保存考勤数据,以便离线访问和多设备同步。 7. **网络通信**:如果项目涉及到服务器交互,需要了解如何使用HTTP请求或者WebSocket进行数据交换,...

    document:刁工作室的资料

    2. **内嵌图片**:文档中的图片不允许使用外部链接,这意味着所有图片都需要保存在文档库内,以确保即使在离线状态下也能查看完整的内容。这样做可以提高文档的自包含性和可靠性,避免因外部链接失效导致的图片丢失...

    MyFitnessApp:一个简单的应用程序,使您可以方便地查看体育馆的课程表

    MyFitnessApp可能使用Android SDK和Android Studio进行开发,其中涉及Android的组件,如Activity、Intent、Layout和Adapter等。开发者可能使用XML来定义界面布局,而Java代码则负责处理逻辑。 3. **用户界面(UI)...

    MobileDispatch

    同时,可能使用了调试工具如Xcode Instruments或Android Studio的Profiler来定位和修复问题。 12. **版本控制**:在开发过程中,版本控制工具如Git被广泛使用,它帮助团队协作,管理代码变更,并方便回滚到之前的...

    LearnHut_android:LearnHut 安卓应用

    在开发LearnHut_android时,开发者可能会使用Android Studio作为集成开发环境(IDE),它提供了丰富的工具来帮助开发者进行编码、调试、性能优化等。应用的结构可能遵循MVP(Model-View-Presenter)或MVVM(Model-View...

    伊特里吉

    开发者可以使用各种编辑器进行HTML编写,如Visual Studio Code、Sublime Text,甚至浏览器的开发者工具也提供了实时预览和调试功能。 10. **Web标准与兼容性** 虽然大部分现代浏览器对HTML有很好的支持,但为了...

Global site tag (gtag.js) - Google Analytics