注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

你想快速掌握安卓编程吗

 
 
 

日志

 
 

加大B4A程序反编译的难度  

2014-02-15 13:16:46|  分类: B.调试发布 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
注:本文参考《中文版B4A新手指南·第4章开发环境》的相关内容,在此感谢英文翻稿作者的付出。


加大B4A程序反编译的难度 - 沉默蜂QQ793136625 - 沉默蜂
图为B4A 3.0版本界面截图

如果想让你所编写的安卓程序反编译的难度增加,最好在没有动手编写之前先看一下下面的内容。如果你的工程已编写好了,但想实现 混淆编译,可能需要改动的地方较多,除非你平时有给标识符加下划线的习惯。

Basic4android v1.8 起增加了混淆编译发布功能,这样发布时有两种模式了,一种是“发布版本 ”(程序中不包含调试信息) ,另一种是“混淆发布版本”(程序中不包含调试信息,代码将会被混淆)。

在编译 basic4android 源码时会先生成 Java 代码,再用 Java 编写编译和转换(Android Dalvik 字节码格式) ,然而用工具可以将 Dalvik 字节代码反编译成 Java 代码,也就是说APP程序可以反编译成  Java 代码 ,因为APP程序是解释执行的,并没有在编译时变成机器码。B4A源码编译时的模糊处理是想反编译后代码可读性下降,难于理解和使它更难提取字符串像开发商帐户密钥。

混淆编译做了两件事:
1、字符串混淆
任何写在 process_globals 子字符串(仅在这个代码块中)将是混淆的,使它更很难提取重要的钥匙。字符串在运行时反编译后的。
注意:包名、版本名称和版本代码将会在运行期间被混淆。在 manifest 编辑器中修改这些值将破坏反编译过程。

2、变量重命名
全局变量名称和子程序将会转换为无意义的字符串。局部变量丢失不会影响编译。

以下标识符不改名:
-标识符包含下划线(事件处理需要下划线) 。
-出现在 callsub 语句中的子程序。子程序名字作为一个静态字符串被保存为标识符。
-设计器视图名称。

提示:如果,因为某些原因,你需要防止混淆可以通过添加下划线来重命名该标识符名称。

将在文件夹创建名为 ObfuscatorMap.txt 的文件。 这个文件映射原来的标识符名称和混淆的名称。该文件有助于分析错误报告。


  评论这张
 
阅读(254)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017