您好,欢迎光临本网站![请登录][注册会员]  
文件名称: android坦克大战原码
  所属分类: Android
  开发工具:
  文件大小: 11mb
  下载次数: 0
  上传时间: 2013-10-13
  提 供 者: w_s***
 详细说明: 代码源于反编坦克大战游戏的apk文件 Android apk文件 反编说明 一.------ 反编apk文件目的 目前反编android程序功能最强的jd-gui.exe(http://laichao.googlecode.com/files/jdgui.zip), 也只能反编没用混淆器编译的android程序的80%代码,对于混淆器编译的android程序,只能 反编不到10%代码。    借鉴成功的商业程序代码,是新手快速提高编程水平的途径。为此,笔者制作了 android反编译工具,能将混淆器编译的apk文件,还原java文件,资源文件的android开发 项目。可以直接编译目的apk文件,运行效果与原apk一样。只有能正常运行的程序,才有价值 对它进行分析、借鉴。  二.----- 反编java的成员,方法名,类名     经混淆器编译的apk文件,会将原代码的成员,方法名更换为单字符的短名。例如原代码 成员名GetName、方法名PayDialog() 经混淆器编译后,转换为a、b() 的短名,这是为了 增加反编代码的阅读难度,同时也阻止成员名,方法名的搜索定位,是防反编译的重要手段。 为提高反编译代码的阅读性,笔者的android反编译工具,将成员,方法短名,按一定的规则 转为长名,使得成员、方法名具有很强的逻辑性,大大提高了代码的阅读性。   成员、方法短名转换为长名的规则: 1-- 公共成员名: 短名a --> Pa_源类名_类型  注: 源类名-声明公共成员所在的类名; 类型 -成员的类型,如int类型的成员,类型字符就是int     2-私有成员名: 短名a --> Ma_类型 3-- 公共方法名: 短名b() --> 源类名_bxxx() 注: 源类名-- 声明公共方法所在的类         xxx   -- 3位数字序号 4-- 私有方法名: 短名b() --> pri_bxx() 5-- 本地成员(方法内的变量):  短名c --> Lc_类型 6-- 类名: 短名a.java --> axxxx.java 注: xxxx -- 4位数字序号  从长名的字符,就可以直接知道成员的属性(如公共、私有、本地的成员,成员的类型, 公共成员的源类名),同时, 长名字符串是唯一的,可以用于字符搜索查找精确 定位、更换,大大提高了反编java代码的阅读性,不亚于阅读原代码。 对于编译时,无混淆为短名的成员、方法名,反编时,还是采用原代码的名称。 只要不符合上面规则的成员、方法名称,就是原代码的名称。    一般说来,成员原名字符,是编程人员自定义有一定意义的字符串,可以望字生意。  但成员名毕竟不是短文,非原编程作者,很难从短短几个字符,就能知道成员的作用。只能通  过分析成员在上下文的赋值、取值关系,才能准确地了解成员的作用;另一方面,成员原名字符,  尤其是字符短的成员名,一般都不能保证字符串的唯一性,造成查询定位成员的困难,影响程  序的分析。        按公共,私有,本地成员的作用域不同,分析的側重点要区别对待。分析程序的整体功能流程,重点  要分析公共成员和公共方法,分析类,方法的功能呢时,重点放在私有、本地成员上。 反编的成员长名,有很强的逻辑性, 从长名就能直接知道成员,方法的作用域和源类名(声明该成员, 方法所在的类名),这大大降低了分析的难度。         三.---- 反编的循环控制层风格          因编译后,会将原java代码的for (i=1,100,i++)循环语句 转为 for ( ; ;), if (i>100) { break} else { i++}    2条语句,反编后的java的也是用上面2条语句代替for (i=1,100,i++),但在if语句附上"控制if“的注释     同样,用for ( ; ;) 取代原java的 while 语句    四.---- 反编的类形式        反编的java 都用独立的类取代原码的类中类,匿名类。 虽然对于只使用一次对象值的(通常是监听类),都可以将独立类改为匿名类。但笔者认为, 将一大段匿名类代码放在方法的参数中,会影响阅读性, 倾向于独立类的阅读性好于匿名类。     五.----  项目各目录的简介     本项目反编于 网上下载游戏<坦克大战-合金弹头> 2.0.4版本的apk文件, 在Eclipse平台上的android 2.2版本(android-8)能成功编译,正常运行。在编译前,要将用户   本地2.2或以上版本的android.jar链接到本项目。     assets\ -- 背景声文件        bin\ -- 由编译所生成的class、 apk 文件     gen\ -- 由编译所生成的R.java(源于res\的资源数据) libs\ -- 原生态引擎库 res\ -- 图片,字符的资源库     src\ -- 程序(java)文件 AndroidManifest.xml -- 项目的配置文件  project.properties -- 配置Android版本文件 readme.txt -- 本内容 六.---- 不足与该进     目前反编的java,都直接用android常量数值,而无用到常量名。这影响了程序的分析。    如 src\cn\koogame\ui\KooUiActivity.java 的onTouchEvent() ( 重载手势方法中)中,      可以用 case MotionEvent.ACTION_MOVE: 代替 case 2: ,显然前者阅读性优于后者。    因笔者还没有android常量大全资料,只好暂时直接地使用常量值。若那位读者愿提供 Android常量大全资料,非常欢迎发到笔者的邮箱 walte139@163.com 。 若有建议、意见、批评,也欢迎发给笔者。 Walte 2013.10.12                  ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 安卓反编实例
 输入关键字,在本站1000多万海量源码库中尽情搜索: