当前位置:编程学习 > wap >>

【apk破解爱好者】关于android app相关破解技术

关于android apk的安全性问题 我觉得是非常不安全的。
apk运行的运行环境依赖的文件/文件夹 res dex 主配文件 lib 都是简单的加密甚至没有任何加密措施。apktool工具完美将其破解,再配合其他各种工具 源码暴露(代码混淆也几乎起不到任何安全作用) 资源文件裸奔 主配文件可任意修改 核心so库暴露随时可能被暴力破解恶意利用等等的问题。。
部分大公司会对其公司的apk进行防二次打包和防apktool打包,但其代码都是写在java层或者apktool的升级导致其安全保护级别也是非常低的。。

准备准备工具:
1)apktool 2)dex2jar 3)jd-gui 4)签名工具

开始随便找一个apk开始动手~~~

apk 安全 加密 破解 反编译 --------------------编程问答--------------------

开始从这个开始~~ 这种apk 的收入就是靠内置积分与积分墙进行赚钱的。。 每篇文章都是需要积分,积分没有的话就去积分墙下载apk 来得积分。。。好像记得积分墙的钱是一个apk 0.5RMB左右

目标:绕过积分扣算 免费使用 --------------------编程问答-------------------- 代码混淆和编译成.so的安全性都是相对的,都是增加了破解的难度。
有兴趣可以交流一下。 --------------------编程问答--------------------
引用 2 楼 tantahe 的回复:
代码混淆和编译成.so的安全性都是相对的,都是增加了破解的难度。
有兴趣可以交流一下。


so一般只会放核心代码块。。。而且难度和门槛相对于偏高一点。。。代码混淆真心是作用不大。。。我这就准备现场破解3个apk呢。。。 欢迎交流 --------------------编程问答--------------------

这两张图是软件的界面截图。。通过对比能够看出,积分扣算的代码源大致是在什么地方。。

再通过eclipse的logcat的系统log捕获到 跳转的类名。。。ok。  
利用工具 源码里面找去了。。。。 --------------------编程问答-------------------- 不错, 学习 --------------------编程问答--------------------
很效率的。。找到了扣算积分的核心代码块的地方了。。。画圈地方 很明显暴露了其逻辑。。。。
if( a || b)  其中一个满足 都说明积分不足。。。
实验验证 前者boolean是不满足情况的  所以说找到后面的部门代码 修改其返回值 即可。。继续开始找 --------------------编程问答--------------------
有工具真好。。一会儿就找到 PointManager方法了
ok,动手修改了吧。。。建议还是 以修改最少的方法达到目的 这样最好。。别人的代码万一前后牵扯呢 运行就会出错了 避免多余的麻烦 。。。强行把返回值改为true --------------------编程问答--------------------

修改其源码得在smali层修改。。至少要了解一点smali代码规范和字段定义范围等等的。。。
smali层代码和java层代码对比图如上。。。

需要修改的方法 在java层展示如上(java层只是为了展示一下修改动向 真正要修改的是smali层的代码)


修改如上的代码就完成了。。 二次打包再重新签名~~ 就可以运行看效果了 --------------------编程问答-------------------- 不错的帖子,学习了 --------------------编程问答--------------------


完美运行~ 截图奉上~~~  积分机制完全无效了~~ --------------------编程问答-------------------- 做android也很久了 最近也对此很感兴趣 一直在研究~~ 感兴趣的都可以一起研究~~~平时无聊的时候也经常看些文章介绍什么的~~ android2013年的开发者经济收入比2012年提升了好多,但是这些提升都是从 二次打包,反编译的黑客上面提升上来的 ~~~ 
android apk的安全级别是非常低的,很少很少很少看到有apk本身做了任何安全措施的,就算做了 也很容易攻破 因为源码层暴露 分析下 就可以屏蔽掉的。。。

大胆猜测 android app的安全人员 是未来一个炙手可热的职位~~目前是讲解其破解技术...如果感兴趣的人比较多 我也会讲解其防破解技术...... 估计各android开发的公司会很头疼 app被盗版 数据被恶意修改,但是限制于技术与意识(没人重视它的安全问题),所以头疼...


欢迎热爱相关技术的人员 一起讨论讨论 ~~ 接下来 准备破解一个 【腾讯电池管家】  因为 这款apk有做防破解的保护  目的就是 直接将其保护的代码修改 让其保护失效~~~ --------------------编程问答--------------------
二次打包 【腾讯电池管家.apk】  尽然发现报错了。。。报错信息如下:
09-23 14:38:56.500: E/AndroidRuntime(1336): java.lang.RuntimeException: Unable to create application com.tencent.powermanager.PowerManagerApplication: java.lang.RuntimeException: Invaild signature! Please contact TMS(Tencent Mobile Secure) group.

很明显可以看出来 这是一个自定义的异常~ 异常说明是 please contact TMS group~~~~~
所以说这个apk是做过防破解的保护的~ 道高一尺,魔高一丈。。。你再保护,你的源码我可以看到 所以说呢~~~破解只是时间和经验的问题
--------------------------------------------------------------------------------------
eclipse的系统log里面出现了很奇怪的2 行log。。画红线的。。。这不就是apk证书log输出么~~~ 我大腾讯的开发人员 正式版本也该把log屏蔽了吧~~你这不是破解入口都已经给我展示出来了吗~~
利用工具全局搜索 轻松+愉快的 找到了防破解的核心代码块:


原理同上一个。写最少的代码来办到该办到的事,内部的判断代码就懒得去关心了(有点担心会把山寨apk的信息上传到服务器)。。。。

按照想法改完。。二次打包。签名。运行。。。 ok~不报错了 正常运行 ~~ 接下来就想怎么改想往里面加任意代码就看技术+想法了。。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 他们发布前都不混淆代码么?
--------------------编程问答--------------------
apk的反编译方向有很多, 比如说我破解的第一个 是屏蔽其积分墙的代码啊  破解的第二个是修改其自身的保护  再接下来准备继续破解一个  其原理是 
静态注入恶意代码(给登陆输入框注入钩子代码,记录破解apk登陆用户的账号密码)...
想想:别人的apk,别人的数据库,你想要黑入别人的数据库 这个偏难,你想要拦截网络协议来分析其账号密码,这个更难 100%是做过加密保护 你要解密啥的 太麻烦了,但是你在apk里面注入钩子代码,直接在根源(加密前)就窃取它。。。。。这个确实有点邪恶不过比起其他黑客 这就不算啥的 至少我们没拿它来非法盈利 
~ 本来准备找找csdn的手机客户端的 结果发现没有  那就拿【百度贴吧】.apk吧


吃饭了 吃饭了~~~~先吃饭 --------------------编程问答--------------------
引用 14 楼 wlcw16 的回复:
他们发布前都不混淆代码么?

那你找个你代码混淆过的apk呢。。。也一样可以给你破解了。。。
代码混淆作用都不大~~~~~~~~我破解的第二个就是 代码混淆过的  也没有增加其防破解的难度~ --------------------编程问答-------------------- apk的反编译比汇编好懂多了,看来混淆加密是个可取的方法 --------------------编程问答-------------------- 代码混淆只是增加了破解的难度,多花点时间而已。 --------------------编程问答--------------------
引用 18 楼 tantahe 的回复:
代码混淆只是增加了破解的难度,多花点时间而已。


恩 是的~ 只是影响了正常的阅读顺序 代码逻辑有点混乱~~ 不过其也只是多消耗了一点时间而已~~如果要做保护还得从apk入手,讲classes.dex 主配文件 资源文件 lib文件做保护~~
之前有过伪加密的方式~  能够让其防止被查看和被apktool反编译。。。不过apktool升级后这个方法就没什么用了。。。。目前也有部分的apk使用伪加密的方式,,貌似4.2.+的系统兼容不了 --------------------编程问答--------------------
引用 17 楼 appleibm 的回复:
apk的反编译比汇编好懂多了,看来混淆加密是个可取的方法


代码混淆 其实作用不大 ~~ 有的人破解是需要了解其代码的 代码混淆可能会让别人花费更多时间,但是有的破解是不需要看其源码的,比如在一个apk里面嵌入广告。。我只需要找到启动广告和放入广告代码和xml注册广告权限就可以了。。。。 我要了解你源码干吗呢?
根源还是apk(classes.dex res libs 主配)。。。。 不过市场上也没有人对其做保护~既然如此 破解会火的。。再说中国的性质 肯定会让其很火的。。。
目前apk的破解 带来的收入也是很可观的。。。

不知道你们公司做的apk有啥安全意识呢? --------------------编程问答-------------------- 哈哈,不错有想法,等下一起研究研究,先睡觉。 --------------------编程问答-------------------- 【百度贴吧.apk】
这次反编译主要是在登录界面静态注入钩子,窃取登录的账号密码~~

从logcat的系统日志开始,确认界面名,然后找到对应的代码

在activity的onCreate确认布局文件

然后再通过res/string/public.xml 找到对于res/layout/下的布局文件,再确认2个输入框和按钮是哪一个

通过按钮事件确认了本地验证的代码如上图~~再验证前 对这2个控件直接拿去输入数据进行想要的处理就行了
修改的方向如上图~~~ok 修改完 重新打包然后签名 上手机。。。。



ok。。完成~~~  --------------------编程问答-------------------- 很有趣味的揭开了一个客观事实。 --------------------编程问答--------------------
引用 23 楼 line_us 的回复:
很有趣味的揭开了一个客观事实。


apk的一个非常薄弱的地方~~  这个问题大家只是没有重视到而已 因为他并没有很普及。。。。大胆估算一下 apk安全师 是不是未来一个非常火而且也高薪的职业呢?  目前大公司已经有这方面的人员了,听说这方面的开发人员年薪都是50w+的  --------------------编程问答-------------------- LZ干得漂亮  技术很好玩
有一点不是很清楚 你再次打包签名  用的是自己的签名 还是原始签名
如果是原始的签名 这个是怎么得到的  望指点  --------------------编程问答--------------------
引用 25 楼 tanwei4199 的回复:
LZ干得漂亮  技术很好玩
有一点不是很清楚 你再次打包签名  用的是自己的签名 还是原始签名
如果是原始的签名 这个是怎么得到的  望指点 


无法用原有的签名 这个除非你能在开发者那里获取到keystore文件。。。 这个地方之前是存在漏洞不过已经很早就解决了。。。所以说只有签署自己的签名。。。你是不是担心 豌豆夹和360会提示你这个是山寨版本了?不用担心 他们的判断逻辑是通过包名去获取自身数据库里面的数据的签名 然后来和运行的apk的签名做对比。。 如果签名不一样都被他们提示是山寨版,所以说呢。。你把包名改了不就得了(部分apk里面会通过包名来反射部门类 这可能是别人的框架师设计的 可能会导致运行错误 不过大部分的不会影响) --------------------编程问答-------------------- 《Android软件安全与逆向》上面说了很多apk破解的反破解的。 --------------------编程问答-------------------- 破so还需要加上IDA一起耍 --------------------编程问答-------------------- 5可以破解一下ireader 纯java的没啥难度 --------------------编程问答--------------------
引用 27 楼 jha334201553 的回复:
《Android软件安全与逆向》上面说了很多apk破解的反破解的。

楼主果然是个乐于分享的高手!!! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 我有个思路你恐怕很难破解哦

软件的功能模块主要放在服务器端,符合条件后才下载到手机端,apk只是个空壳 --------------------编程问答-------------------- 来 mark 下... --------------------编程问答-------------------- 一早上就看到这个帖子了 --------------------编程问答-------------------- SO库现在还没有被破解吧!

可恶的皮包公司,辛苦开发的东东,给他们二次包装就废了! --------------------编程问答--------------------
引用 16 楼 comeoverjava 的回复:
Quote: 引用 14 楼 wlcw16 的回复:

他们发布前都不混淆代码么?

那你找个你代码混淆过的apk呢。。。也一样可以给你破解了。。。
代码混淆作用都不大~~~~~~~~我破解的第二个就是 代码混淆过的  也没有增加其防破解的难度~

你这个不叫破解,充其量叫山寨。目前防止山寨最有效的办法就是通过混淆代码和验证keystore。
如果你是抱着学习apk源代码的想法去拆解一个apk,混淆代码可以让你无从下手。
如果你是想去广告的话,这样做挺好,混淆代码只是让你多花时间而已,不过你这种山寨影响了开发者的利益。

其实这种破解完全没有技术含量,只是反编译获得源代码,然后加入自己的代码在打包,山寨完后,你还是需要发布山寨软件,对已有的软件没有任何影响,而且各大市场对山寨的审核现在越来越严格,想通过山寨软件窃取用户资料基本上是不现实。

很期待你关于反破解的理解,不过就目前而言,破解纯java还是没有技术含量可言。不过作为一个Android开发者来说,对这种山寨行为很是痛恨。
--------------------编程问答-------------------- 现在安全做的好的apk , 核心代码都是写在so库里, so库运行时下载并加载数据模块, so库验证数字签名的有效性。
破解so库的工作量绝对不是反编译apk能相比的。 --------------------编程问答-------------------- 能讲点破解的办法么?我现在也是在看别人的代码,不过只破解到class,怎么生成java类呢? --------------------编程问答--------------------
引用 33 楼 gemo 的回复:
我有个思路你恐怕很难破解哦

软件的功能模块主要放在服务器端,符合条件后才下载到手机端,apk只是个空壳


很多 在线阅读 的也是这个思路~~ 结果图书一样被盗版下来  单独做成app的 --------------------编程问答--------------------
引用 36 楼 doveqian 的回复:
SO库现在还没有被破解吧!

可恶的皮包公司,辛苦开发的东东,给他们二次包装就废了!


so库是能够被破解的  只是需要花费更多点时间而已~~~
对啊。。最关键的还是 android app开发者的安全意识不强 --------------------编程问答--------------------
引用 37 楼 wlcw16 的回复:
Quote: 引用 16 楼 comeoverjava 的回复:

Quote: 引用 14 楼 wlcw16 的回复:

他们发布前都不混淆代码么?

那你找个你代码混淆过的apk呢。。。也一样可以给你破解了。。。
代码混淆作用都不大~~~~~~~~我破解的第二个就是 代码混淆过的  也没有增加其防破解的难度~

你这个不叫破解,充其量叫山寨。目前防止山寨最有效的办法就是通过混淆代码和验证keystore。
如果你是抱着学习apk源代码的想法去拆解一个apk,混淆代码可以让你无从下手。
如果你是想去广告的话,这样做挺好,混淆代码只是让你多花时间而已,不过你这种山寨影响了开发者的利益。

其实这种破解完全没有技术含量,只是反编译获得源代码,然后加入自己的代码在打包,山寨完后,你还是需要发布山寨软件,对已有的软件没有任何影响,而且各大市场对山寨的审核现在越来越严格,想通过山寨软件窃取用户资料基本上是不现实。

很期待你关于反破解的理解,不过就目前而言,破解纯java还是没有技术含量可言。不过作为一个Android开发者来说,对这种山寨行为很是痛恨。


虽然说这种技术含量不高,但是android app的安全意识 在有这种低技术含量的情况下足以对此app导致很严重的威胁了。。。正规市场只是盗版发布的渠道之一,各种论坛和网盘才是发布盗版app的重要的地方,就算是大市场出现盗版的app的几率也普遍发生,这些市场的验证也只限制于包名和签名的验证,其产生的价值和作用是非常小的。。。现在的android开发还是重点在于java层的开发,代码的混淆对其的保护价值是很低的,其app的代码漏洞很容易通过反编译的源码查看出来。。。 android的开源导致android app的安全性偏差导致用户自己的产品的安全性很差 我觉得这个是迫切待解决的。。

就拿我举例的第一个app来说,其app里面有积分的概念,但是目前的开发者有几个在开发类似app的时候会考虑到其破解。【植物大战僵尸2.apk】犯过同样的问题,这是技术的问题吗?这不算技术的问题 这是安全意识的问题。。其简单的技术就能将其几十人开发几个月的项目破解 这是安全意识的问题。。

其实我在帖子里说的破解的技术是偏低 但是我同样知道如何防止其被破解 而且至少保证要破解到我源码层至少要花上上月时间。。。

可能你所说的和怀疑的 也是我并没有说明的 我想和大家一起讨论的就是 android app开发的安全问题~ --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 33 楼 gemo 的回复:
我有个思路你恐怕很难破解哦

软件的功能模块主要放在服务器端,符合条件后才下载到手机端,apk只是个空壳


各种思路或者保护措施 只会是影响其反编译的难度而已~~~ android的4大主件 不允许被混淆 这就是一个很大的问题,对于反编译的人来说 这就是入口。。

android app的安全意识很低 所以说其核心数据库的相关破解的入口都是可以从其入手的~~~
这很容易就可以想象到 因为客户端app的安全意识低 从而导致服务器需要做很多安全措施, 提高开发周期 提高开发成本 --------------------编程问答--------------------
引用 38 楼 terroQQ 的回复:
现在安全做的好的apk , 核心代码都是写在so库里, so库运行时下载并加载数据模块, so库验证数字签名的有效性。
破解so库的工作量绝对不是反编译apk能相比的。


你还是太在乎于技术层面上的事了, apk本身就存在一个很大的安全风险。。。 
正规点app的安全意识非常高,就算破解对其带来的收益并不高 而且还可能存在法律风险,你对其直接的破解最多就是显了自己的本事 其他还有啥呢? 但是现在很多打包党把危害不直接面向app开发公司了,面向用户,面向此app的使用用户,二次打包 修改其源码 做的更人性化(开发商在注重用户量的同时也会注重收益所以会加某些增加收入的功能或者对app做一些限制 但是 打包党就可以利用它来重写打包 山寨的用户量便是打包党的收入)。。。利用国内的检便宜的心理 从而通过嵌入的恶意代码来为自己挣钱,从危险用户的角度间接来危害app。。。。 这个比直接危险app开发公司 更危险把~~ --------------------编程问答-------------------- @wlcw16

你太在乎技术了。。二次打包党的危害对象是app的用户 比起直接危害app开发公司来的更有破坏力。。还有就是你太高估市场了。。现在android开发者和公司很少有安全意识,那市场有这个意识有什么钱途可言了?
再加上android的技术门槛+国内公司对其的开发周期和经济相关的考虑  。。 二次打包的风险已经是非常严重的,只是你没有特意的去在意。。。。现在的安全服务的公司 360 腾讯 。。。还有豌豆夹有个洗白白 他们对病毒或者恶意apk的判断 无非就是 包名+签名来判断山寨。病毒/山寨/恶意apk的关键代码或者关键字 来判断其是不是被感染。。。关键字的修改 包名修改 + 修改的签名 这个得让他们花好长时间才能知道它是个恶意软件的。。。。
安全意识,安全意识。。。安全意识。。安全意识。。。 --------------------编程问答--------------------
引用 26 楼 comeoverjava 的回复:
Quote: 引用 25 楼 tanwei4199 的回复:

LZ干得漂亮  技术很好玩
有一点不是很清楚 你再次打包签名  用的是自己的签名 还是原始签名
如果是原始的签名 这个是怎么得到的  望指点 


无法用原有的签名 这个除非你能在开发者那里获取到keystore文件。。。 这个地方之前是存在漏洞不过已经很早就解决了。。。所以说只有签署自己的签名。。。你是不是担心 豌豆夹和360会提示你这个是山寨版本了?不用担心 他们的判断逻辑是通过包名去获取自身数据库里面的数据的签名 然后来和运行的apk的签名做对比。。 如果签名不一样都被他们提示是山寨版,所以说呢。。你把包名改了不就得了(部分apk里面会通过包名来反射部门类 这可能是别人的框架师设计的 可能会导致运行错误 不过大部分的不会影响)

嗯  感谢解答   我倒不是怕提示山寨   无法获取原签名的话  貌似可以使用这个来作为一种识别的手段 --------------------编程问答--------------------
引用 47 楼 tanwei4199 的回复:
Quote: 引用 26 楼 comeoverjava 的回复:

Quote: 引用 25 楼 tanwei4199 的回复:

LZ干得漂亮  技术很好玩
有一点不是很清楚 你再次打包签名  用的是自己的签名 还是原始签名
如果是原始的签名 这个是怎么得到的  望指点 


无法用原有的签名 这个除非你能在开发者那里获取到keystore文件。。。 这个地方之前是存在漏洞不过已经很早就解决了。。。所以说只有签署自己的签名。。。你是不是担心 豌豆夹和360会提示你这个是山寨版本了?不用担心 他们的判断逻辑是通过包名去获取自身数据库里面的数据的签名 然后来和运行的apk的签名做对比。。 如果签名不一样都被他们提示是山寨版,所以说呢。。你把包名改了不就得了(部分apk里面会通过包名来反射部门类 这可能是别人的框架师设计的 可能会导致运行错误 不过大部分的不会影响)

嗯  感谢解答   我倒不是怕提示山寨   无法获取原签名的话  貌似可以使用这个来作为一种识别的手段


腾讯的电池管家不是有这个识别么。。。java提供的这些方法很轻松的 但是你要用java提供的方法 就可以修改 再获取的时候 给你改掉获取的签名的值。。。  你如果不用java提供的方法 那你就得很麻烦的去处理这个问题了 --------------------编程问答-------------------- 继续着~~说明下apk的安全性有多低。。。
演示下如何在apk里面嵌入 第三方界面或者代码等等的


随便建立一个项目,然后写一个模式窗体的activity 它的主要代码流程是:网上下载一张图片,下载完成后显示。。。。。展示的效果如图~




要加的java代码和xml配置如上图~~~将他现在所属的apk包解压缩然后拿出smali层代码和权限和配置代码。。

接下来随便去市场下载一个apk~~


运行此apk。看看在哪展示我的界面

这是主界面 就计划再这个界面加调用我的界面把。。准备是如果消失就让其在5秒内又弹出界面。。
ok  开始 --------------------编程问答--------------------

把这些源文件直接拷贝到需要盗版的apk源码里面(按着包对应的路径存放)



eclipse的logcat看到的界面信息~ 轻松找到该类源文件。。



找到其入口方法。计划是在这个类加开启第三方界面的方法,其入口方法的最后一句话调用我的方法。。。



onCreate方法的smali层代码。。。



启动第三方界面的代码。。 直接拷贝进去 然后调用~~
ok。完成 打包 签名 运行 看结果。。。



。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
ok。添加成功 结果与预期一样。。。直接嵌入第三方界面(代码)到一个apk里面。。。


假想:难度低,开发时间段,入门简单。。。
一个稍微都点开发经验的人,花几分钟研究一款广告sdk,开始动手去市场上下载市场反响一般和偏低的app,1天能够完成10+款。。。修改其包名,让其市场识别不了 或者专业点的把图片资源也换一下 名字稍微改一下 各种手段上传市场,1个用户量不高 2个用户量不高 5个用户不高 但是10个 100个 用户量 加起来 也不算低了。。收入比你一个月在公司辛苦加班来得多。。。 
这种山寨 对其用户危害 和 源app危害都偏小,他们就是寄生虫心思。。盗取别人的劳动成果然后成自己的。。。这些行为 现在有,还很多。。市场无法阻止这些行为,法律也有空中让他们转。。。或许你们谁辛苦开发过的app 就有被被盗版过的可能 只是你们不知道 你们也很难知道。。
安全意识。。。安全意识。。。。
--------------------编程问答-------------------- LZ请问个问题吧,我当初学习反编译的时候,这个帖子http://blog.csdn.net/ljz2009y/article/details/7956654说的方法,结果很多APK都不能反编译成功,请问LZ用的反编译工具是什么啊?
希望能够多指教。。。 --------------------编程问答--------------------
引用 51 楼 ljz2009y 的回复:
LZ请问个问题吧,我当初学习反编译的时候,这个帖子http://blog.csdn.net/ljz2009y/article/details/7956654说的方法,结果很多APK都不能反编译成功,请问LZ用的反编译工具是什么啊?
希望能够多指教。。。

我用的也是apktool 。。。如果有问题 多半是因为资源文件的问题导致的 --------------------编程问答-------------------- 你是怎么绕过签名的? --------------------编程问答-------------------- 你只是 本地 修改 从新用自己的签名打包,程序都是要联网的,而且现在程序联网在服务器端都验证签名。你这种修改 能 骗过 服务器端的验证签名吗?
--------------------编程问答-------------------- 关注中。。 ,。。 --------------------编程问答--------------------
引用 42 楼 comeoverjava 的回复:
Quote: 引用 37 楼 wlcw16 的回复:

Quote: 引用 16 楼 comeoverjava 的回复:

Quote: 引用 14 楼 wlcw16 的回复:

他们发布前都不混淆代码么?

那你找个你代码混淆过的apk呢。。。也一样可以给你破解了。。。
代码混淆作用都不大~~~~~~~~我破解的第二个就是 代码混淆过的  也没有增加其防破解的难度~

你这个不叫破解,充其量叫山寨。目前防止山寨最有效的办法就是通过混淆代码和验证keystore。
如果你是抱着学习apk源代码的想法去拆解一个apk,混淆代码可以让你无从下手。
如果你是想去广告的话,这样做挺好,混淆代码只是让你多花时间而已,不过你这种山寨影响了开发者的利益。

其实这种破解完全没有技术含量,只是反编译获得源代码,然后加入自己的代码在打包,山寨完后,你还是需要发布山寨软件,对已有的软件没有任何影响,而且各大市场对山寨的审核现在越来越严格,想通过山寨软件窃取用户资料基本上是不现实。

很期待你关于反破解的理解,不过就目前而言,破解纯java还是没有技术含量可言。不过作为一个Android开发者来说,对这种山寨行为很是痛恨。


虽然说这种技术含量不高,但是android app的安全意识 在有这种低技术含量的情况下足以对此app导致很严重的威胁了。。。正规市场只是盗版发布的渠道之一,各种论坛和网盘才是发布盗版app的重要的地方,就算是大市场出现盗版的app的几率也普遍发生,这些市场的验证也只限制于包名和签名的验证,其产生的价值和作用是非常小的。。。现在的android开发还是重点在于java层的开发,代码的混淆对其的保护价值是很低的,其app的代码漏洞很容易通过反编译的源码查看出来。。。 android的开源导致android app的安全性偏差导致用户自己的产品的安全性很差 我觉得这个是迫切待解决的。。

就拿我举例的第一个app来说,其app里面有积分的概念,但是目前的开发者有几个在开发类似app的时候会考虑到其破解。【植物大战僵尸2.apk】犯过同样的问题,这是技术的问题吗?这不算技术的问题 这是安全意识的问题。。其简单的技术就能将其几十人开发几个月的项目破解 这是安全意识的问题。。

其实我在帖子里说的破解的技术是偏低 但是我同样知道如何防止其被破解 而且至少保证要破解到我源码层至少要花上上月时间。。。

可能你所说的和怀疑的 也是我并没有说明的 我想和大家一起讨论的就是 android app开发的安全问题~

那倒是说啊。。不要吊大家胃口 --------------------编程问答--------------------
引用 54 楼 zcaihyl 的回复:
你只是 本地 修改 从新用自己的签名打包,程序都是要联网的,而且现在程序联网在服务器端都验证签名。你这种修改 能 骗过 服务器端的验证签名吗?

服务器要签名也得客户端这边上传一个签名。。。找到获取签名的代码要不你就屏蔽要不你就强行给服务器上传一个正确的签名不就对了。。

还有就是 现在的app软件很少是联网验证签名的  至少我还没看到过~ --------------------编程问答--------------------
引用 53 楼 zcaihyl 的回复:
你是怎么绕过签名的?

自己签名。。。360 和豌豆夹 能够判断其是山寨版是因为 他们通过包名来确认这个app是哪一个 然后再验证其签名。。二次打包必须是要修改签名的,打包前你把包名也改了 这样你的app就是一个全新的app了 任何市场都判断不出你是个山寨版的app了 --------------------编程问答--------------------
引用 56 楼 wlcw16 的回复:
Quote: 引用 42 楼 comeoverjava 的回复:

Quote: 引用 37 楼 wlcw16 的回复:

Quote: 引用 16 楼 comeoverjava 的回复:

Quote: 引用 14 楼 wlcw16 的回复:

他们发布前都不混淆代码么?

那你找个你代码混淆过的apk呢。。。也一样可以给你破解了。。。
代码混淆作用都不大~~~~~~~~我破解的第二个就是 代码混淆过的  也没有增加其防破解的难度~

你这个不叫破解,充其量叫山寨。目前防止山寨最有效的办法就是通过混淆代码和验证keystore。
如果你是抱着学习apk源代码的想法去拆解一个apk,混淆代码可以让你无从下手。
如果你是想去广告的话,这样做挺好,混淆代码只是让你多花时间而已,不过你这种山寨影响了开发者的利益。

其实这种破解完全没有技术含量,只是反编译获得源代码,然后加入自己的代码在打包,山寨完后,你还是需要发布山寨软件,对已有的软件没有任何影响,而且各大市场对山寨的审核现在越来越严格,想通过山寨软件窃取用户资料基本上是不现实。

很期待你关于反破解的理解,不过就目前而言,破解纯java还是没有技术含量可言。不过作为一个Android开发者来说,对这种山寨行为很是痛恨。


虽然说这种技术含量不高,但是android app的安全意识 在有这种低技术含量的情况下足以对此app导致很严重的威胁了。。。正规市场只是盗版发布的渠道之一,各种论坛和网盘才是发布盗版app的重要的地方,就算是大市场出现盗版的app的几率也普遍发生,这些市场的验证也只限制于包名和签名的验证,其产生的价值和作用是非常小的。。。现在的android开发还是重点在于java层的开发,代码的混淆对其的保护价值是很低的,其app的代码漏洞很容易通过反编译的源码查看出来。。。 android的开源导致android app的安全性偏差导致用户自己的产品的安全性很差 我觉得这个是迫切待解决的。。

就拿我举例的第一个app来说,其app里面有积分的概念,但是目前的开发者有几个在开发类似app的时候会考虑到其破解。【植物大战僵尸2.apk】犯过同样的问题,这是技术的问题吗?这不算技术的问题 这是安全意识的问题。。其简单的技术就能将其几十人开发几个月的项目破解 这是安全意识的问题。。

其实我在帖子里说的破解的技术是偏低 但是我同样知道如何防止其被破解 而且至少保证要破解到我源码层至少要花上上月时间。。。

可能你所说的和怀疑的 也是我并没有说明的 我想和大家一起讨论的就是 android app开发的安全问题~

那倒是说啊。。不要吊大家胃口



安全意识最重要 不然说到app的保护也没人能够重视 。。。  不要太讲究技术层面上的问题,从假象看现实。。。 达到能够盈利的地步 不一定是需要很高超的技术,想法和行动才是最可怕的。。。 --------------------编程问答-------------------- 我擦  受不了了 smali看的脑壳疼   能反编译成java  直接修改java再编译成apk么 --------------------编程问答--------------------
引用 60 楼 tanwei4199 的回复:
我擦  受不了了 smali看的脑壳疼   能反编译成java  直接修改java再编译成apk么


没试过。。不过smali也没想象的那么难的。。。关键是你得弄清楚它的逻辑执行顺序 --------------------编程问答--------------------
引用 52 楼 comeoverjava 的回复:
Quote: 引用 51 楼 ljz2009y 的回复:

LZ请问个问题吧,我当初学习反编译的时候,这个帖子http://blog.csdn.net/ljz2009y/article/details/7956654说的方法,结果很多APK都不能反编译成功,请问LZ用的反编译工具是什么啊?
希望能够多指教。。。

我用的也是apktool 。。。如果有问题 多半是因为资源文件的问题导致的


但是如果是这样的话,这类问题怎么解决了,如果编译腾讯QQ的手机端的话就不可以,原因我也没有找到,所以希望您能多指教一下 --------------------编程问答--------------------
引用 62 楼 ljz2009y 的回复:
Quote: 引用 52 楼 comeoverjava 的回复:

Quote: 引用 51 楼 ljz2009y 的回复:

LZ请问个问题吧,我当初学习反编译的时候,这个帖子http://blog.csdn.net/ljz2009y/article/details/7956654说的方法,结果很多APK都不能反编译成功,请问LZ用的反编译工具是什么啊?
希望能够多指教。。。

我用的也是apktool 。。。如果有问题 多半是因为资源文件的问题导致的


但是如果是这样的话,这类问题怎么解决了,如果编译腾讯QQ的手机端的话就不可以,原因我也没有找到,所以希望您能多指教一下


有的是app本身做了防工具打包处理的。。。。腾讯qq我没看过 待会儿去看看 --------------------编程问答-------------------- 希望楼主把 
“滑雪大冒险”
这个游戏破解下。。。
--------------------编程问答-------------------- LS真是高手啊,学习了! --------------------编程问答-------------------- 很脆弱阿,apk. --------------------编程问答-------------------- ╮(╯▽╰)╭
apk的脆弱 已经得以证实。。。。
高级点的黑客 就通过它的黑客直接黑掉公司数据库
相对于低端点的黑客 可能就是利用这个脆弱来获利
两者其实都对其apk和公司的影响挺严重的。。。。。。
最近稍微偏忙,没时间继续直播下去   相对于 apk的破解和保护的相关技术 建了一个群
感兴趣的小伙伴可以加群一起讨论206268997


高级黑客和低端黑客 对其破解 的入口就是 
1。源码可见
2。二次打包可运行

只要对其2处进行安全处理 都会增加其破解的难度。。。
源码可见简单的理解为对.dex .odex的保护。。。 对其文件加壳再重写android类加载器可以让其源码保护起来
二次打包可运行的理解为对配置文件/资源文件的单独签名保护。。。对其apk的密钥进行判断太单一了,要进行二次打包必将修改其配置文件和资源文件  只要对其单独签名 然后启动再验证签名 就可以做到防止二次打包。。。



--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 那如果破解游戏的话,岂不市场更大? --------------------编程问答--------------------
引用 69 楼 surffen 的回复:
那如果破解游戏的话,岂不市场更大?


现在的游戏开发基本是 脚本或者ndk,而且他们的保护都是在服务器做的处理。。。
所以说 你要修改其数据 比较困难。。  单击游戏还是比较简单 因为so库的破解也不难 也有现成的工具。。

网络游戏偏难 服务器安全措施做的都比较深 --------------------编程问答--------------------
引用 39 楼 leehu1987 的回复:
能讲点破解的办法么?我现在也是在看别人的代码,不过只破解到class,怎么生成java类呢?
网上有java反编译器 --------------------编程问答-------------------- 为什么不破解游戏 --------------------编程问答-------------------- apk的安全确实是个大问题,难道以后必须都以SDK+NDK来编程了? --------------------编程问答-------------------- 楼主能不能详细一点二 ,还是有些不懂的 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 真的很不错! --------------------编程问答-------------------- 我在google上找到的windows下的apktool是2010年出的,是不是太老了。 --------------------编程问答-------------------- 楼主,请问logcat怎么使用,如何捕获apk的log输出?其它都能看懂,我破解都是从ui入手,去找代码,没用过logcat,这个好像更方便! --------------------编程问答--------------------
引用 77 楼 sbanau 的回复:
我在google上找到的windows下的apktool是2010年出的,是不是太老了。


现在到2.0了吧,怎么会是10年的呢 --------------------编程问答--------------------
引用 77 楼 sbanau 的回复:
我在google上找到的windows下的apktool是2010年出的,是不是太老了。



Google下载地址:http://code.google.com/p/android-apktool/downloads/list --------------------编程问答--------------------
引用 73 楼 jally 的回复:
apk的安全确实是个大问题,难道以后必须都以SDK+NDK来编程了?


so库也是可以反编译的。。。淘宝上各种出售反编译so库的服务 一次性几十块
--------------------编程问答--------------------
引用 78 楼 renyoulou 的回复:
楼主,请问logcat怎么使用,如何捕获apk的log输出?其它都能看懂,我破解都是从ui入手,去找代码,没用过logcat,这个好像更方便!


你应该没有开发过android吧? 
eclipse的logcat通过usb 可以捕获手机的log输出的~~ 实时的~~~   android开发中通过log来找问题和解决问题 的方法是非常靠谱的~~~
从logcat入手,ui收入,关键字收入等等 都是切入点的方法  找到自己的习惯的方法就可以了~~ --------------------编程问答--------------------
引用 69 楼 surffen 的回复:
那如果破解游戏的话,岂不市场更大?


愤怒的小鸟  植物大战僵尸2 等等一些其他游戏我都破解过,,道具无限使用~~ 这些都是使用 移动付费的sdk 。。。研究其付费的sdk的关键块代码 修改它 实现 付费道具免费买的破解~~ --------------------编程问答-------------------- 岩土像丰田和肉体和肉体和人体后突然 --------------------编程问答-------------------- 热心的老师,您好,可以帮我破解一个apk吗?软件是:宋氏八字排盘(作者:宋澜涛)。1123411008@qq.com非常感激。 --------------------编程问答-------------------- 学习了。.......... --------------------编程问答-------------------- 支持下  LZ 专业!!!! --------------------编程问答-------------------- 看不懂smali语言看到源码也没办法啊 --------------------编程问答-------------------- 预计这贴会火,留个名 --------------------编程问答-------------------- mark向楼主学习 --------------------编程问答-------------------- --------------------编程问答-------------------- 学习了,mark --------------------编程问答-------------------- 沉静了这么久。。。。今天有点时间 去看了下 【捕鱼达人2】 。。。保护的挺不错的。。。
找了好久。。终于把 它的保护给破解了。。。。上图 给大家讲讲。。。

--------------------编程问答-------------------- 说明一下:
【捕鱼达人2】 的保护是 通过java层把 本apk的地址(data/app/xxxxx)传给c层,c层通过File去拿去签名值,然后本地做判断验证。(这个方法很不错哦 目前已经发现几个这样做保护的游戏app了 这种加密方式一般人也很难破解的。。)

上图是 【捕鱼达人2】启动的activity。。继承了aa,继续找aa

找到aa,还有父类 继续找Cocos2dxActivity。。
ok。。这个类是最后层了。。。然后找onCreate方法。。。定义到Cocos2dxHelper.init(xx,xx)方法了。。。

ok。。就是上图的方法。。。nativeSetApkpath(xxx).. 【捕鱼达人2】就是通过这个方法在java层把地址传给c层 ,c层去做判断了。。。。。。ok,找到地方,开始改。。

思路:把一个正版 【捕鱼达人2】 放sdcard,然后把/sdcard/1.apk 赋值给那个方法。。

ok。源码层如上修改。。。重新打包 。。运行。。。ok。。【捕鱼达人2】保护就无效而来。。。 --------------------编程问答-------------------- 仁者见仁 智者见智。。。保护层只要跟java有关 基本无效。。。  打扰党在进步 做安全的也需要进步。。
这种保护也算挺新的。。。 希望能够出现难以破解的保护。。。。  估计不远了。。   因为更好的方法这已经很明显就可以想象到了,稍微再多想一想 就能够想出难以破解的保护方法了,,^^ --------------------编程问答-------------------- 大神怎么学习smali的?求指导 看上去好厉害的样子 --------------------编程问答-------------------- 学习了,之前我也这么弄过,但是对于smali不了解和使用ida反编译so库也看不懂,so,就放弃了啊 --------------------编程问答-------------------- 道高一尺魔高一丈  - - --------------------编程问答-------------------- 不错,受教了。 --------------------编程问答-------------------- 向楼主学习一下
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,