前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

谈谈android反编译和防止反编译的方法 - 罗索实验室 罗索实验室 主页 流媒体开发 音视频技术 嵌入式开发 基础技术 杂项技术 管理学院 啰嗦IT 大杂烩 搜索 智能模糊搜索 仅搜索标题 搜索 热门标签  视频监控技术  ffmpeg ce  264  ffmpeg     .264 码流分析 固件驱动开发Android Windows CE Apple平台开发 Symbian OS 手机应用综合 返回首页 当前位置: 主页>嵌入式开发>Android> 谈谈android反编译和防止反编译的方法 落鹤生 发布于 2012-11-22 17:29 点击:次 来自:博客园 android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译反编译他人的项目来学习。 TAG: 反编译 ProGuard android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。 因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译反编译他人的项目来学习。 2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的。 2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。 Android - proguard混淆器使用,有引用第三方jar包的时候报错: You may need to specify additional library jars (using '-libraryjars') 处理方法:在proguard.cfg文件顶部加入 -dontwarn com.motorola.** -keep class com.motorola.** { *;} 说明:-dontwarn和-keep结合参数使用来保持第三方库中的类而不乱,-dontwarn com.motorola.**意思是保持com.motorola.**这个包里面的所有类和所有方法而不混淆 -keep class com.motorola.** { *;}意思是ProGuard不要警告找不到com.motorola.**这个包里面的类的相关引用。对应包名改成你对应的jar包顶层package 详细可以查看官方文档 http://developer.android.com/tools/help/proguard.html 有些应用反编译后java代码用jd-ui根本都无法打开,连混淆的代码都看不到的,本人尝试多次都做不到(网上有说是混淆工具针对反编译工具的),希望知道的告知下怎么处理的。 --注:上面的问题经过本人多次尝试终于找到部分原因了,一.使用的版本比较低,现在最新版的是dex2jar-0.0.9.7,二.dex2jar 目录不要有中文的,三.需要把class.dex直接拖到dex2jar.bat,生成 classes.dex.dex2jar.jar。如果生成jar过程中报一堆at com.googlecode.dex2jar.ir.ts.TopologicalSort.dfsRemove(TopologicalSort.java:135) 错误的话还是不能打开的,看了下官方的问题报告有很多人有类似的问题,貌似进入了一个死循环,跟apk文件大小有点关系,应该是dex2jar的一个 bug。 注意:上面的功能只是把java代码混淆了,xml和资源文件、图片并没有混淆,有些游戏应用图片比较重要需要转换成dat文件 再加上自己的加密解密算法还原。 另外加了混淆功能后还有压缩的功能,混淆后的apk比原来的小(具体比例看你的代码重复量了) 说完防止反编译再来说说怎么反编译吧 先说一下反编译的流程和原理: 1.用apktool 把apk--> 资源包(java代码变成smali文件看不懂的),可以修改资源包里面的文件。 2.apk后缀名改成zip或rar解压,获取 classes.dex 文件,用dex2jar转换成jar包(注:直接解压出来的资源文件是不能直接打开的,要用第一步的反编译工具,dex2jar.bat文件目录不要有中文)。 ------------------------------------------ 新版使用说明(不用把apk换成zip解压了,可以直接把apk文件拖到dex2jar.bat上--不能包含中文名称) 下载dex2jar最新版http://code.google.com/p/dex2jar/downloads/list 解压dex2jar-version.zip文件到一个目录. 比方说 /home/panxiaobo/, C:\ unzip -x dex2jar-version.zip -d /home/panxiaobo 使用 dex2jar 来生成 .jar 文件. dex2jar会在someApk.apk所在目录下生成一个someApk_dex2jar.jar文件. linux sh /home/panxiaobo/dex2jar-version/dex2jar.sh /home/panxiaobo/someApk.apk windows C:\dex2jar-version\dex2jar.bat someApk.apk -------------------------------------------------- 3.用jd-ui等java反编译工具直接查看java代码。 4.把java代码和第一版的资源包整到一起重新组成一个新的应用。 5.用apktool 重新编译。 6.用签名工具重新签名。 7.重新发布带新的签名的应用。 注:如果不用改java代码,只是换换风格和汉化2.3.4步则不用做。 google code上的开源项目 apktool http://code.google.com/p/android-apktool/ dex2jar http://code.google.com/p/dex2jar/ ps:这个是中国人写的 另外有人做了个工具套装,集成了apktool dex2jar jd-ui,不过我下载了运行不了 不知道是不是相应环境没有配对导致的 hackapk http://code.google.com/p/hackapk/ 另外有人把apktool做了个封装 弄成exe文件 图形界面的方便使用,截个图出来给大家看看吧 注:上面那个软件不能签名的,要用另外一个软件(APKSign)来进行签名,截图如下: 另给出上面两个工具的下载连接 机锋论坛上面的,估计直接点击连接下载不了 Xwindows,带图形界面: apktool.rar (3.33 MB) -->这个下载后可以自己到 http://code.google.com/p/android-apktool/ 下载最新版的apktool.jar替换原来的。 签名工具:Auto-sign.rar(312.45 KB) 另外还有些命令行的工具,本人给APK编辑器不同版本上面的说明不对应浪费了很多时间 1.普通apk文件(就是从各种网站上下载下来的第三方软件) (1)把他放到place-apk-here-for-modding文件夹里面。(不要有空格和中文,中文的改成英文的) (2)打开Script.exe,在CMD窗口中输入22或23(设置目前的工程),选择要编辑的apk文件的编号,回车确认 如上:有些版本设置目前的工程选项改成23了,但说明文件没有改过来,按22一直都无法选择apk,原因很不好找。 建议还是使用图形界面。 (zdz8207) 本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201211/16392.html] 顶一下 (0) 0% 踩一下 (0) 0% ------分隔线---------------------------- 上一篇:Android APK反编译 下一篇:How to Compile Android on Ubuntu (12.04) 收藏 挑错 推荐 打印 相关文章 Android APK反编译 Android如何防止apk程序被反编译 Android开发学习笔记:反编译APK文件 user模式下编译android 代码被proguard优化导致类和变量丢失 Android Little Tips系列之一:如何反编译apk文件 反编译Android apk文件 发表评论 请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。 评价: 中立 好评 差评 表情: 用户名: 验证码: 匿名? 发表评论 最新评论 进入详细评论页>> 推荐内容 谈谈android反编译和防止反编译的方法 android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到10... wifi连接流程分析 这是Android WIFI Setting/Service/Framwork/JNI到wpa_supplicant的详解... ndk-gdb对java/native code联合调试 网上有不少文章,谈论 ndk-gdb对java/native code联合调试 ,本人参考了不少,虽然这... JoyStick for android2.3 游戏手柄功能开发 买了个Logitech 的游戏手柄Gamepad F310需要移植到android系统中,所以花了两天时间详... android 软件参数设置的保存和读取 用于保存软件的参数的设置,比如uc浏览器设置是否显示wap页面中的图片.如果是windows软... Android中AsyncTask的使用总结 doInBackground 方法在线程被execute启动时调用(只有一次)。在该方法中,建立线程循... 热点内容 ANDROID上NDK开发初探 Android 的表格控件GridView学习 SDL Android 编译小记 Android OpenGL ES与EGL android视频录制实现方法 android常见问题之jni读取assets Android环境Python编程 从FrameBuffer中获取Android屏幕 在Android中使用OpenCv Ubuntu Android开发环境搭配 业界动态 流媒体开发 规范及协议 技术方案 应用方案 大杂烩 音视频编解码 音视频播放 视频处理 固件驱动开发 Android Windows CE Apple平台开发 Symbian OS 手机应用综合 C/CPP专题 高性能服务器 Linux开发专题 数据库开发 UML,RUP,SCM Soft.Eng VC(MFC) JAVA Web .NET(C#) 安装制作 PC常识 『经理人手册』 『管理及绩效』 『产品与营销』 『规章/合同』 IT旧闻 观察与评价 IT过来人 职场+职业 架构与思路 啰嗦IT 软硬解决方案 实验室小作品 音视频工具包 工具软件 其他杂项 游戏修改器 吉他谱