① apk锷犲浐鏄浠涔堟剰镐濓纻
APK锷犲浐鏄鎸囧瑰畨鍗揿簲鐢ㄧ▼搴忚繘琛屽姞瀵嗗拰淇濇姢锛屼互阒叉㈡伓镒忔敾鍑诲拰镰磋В銆傚姞锲哄悗镄𪞝PK鏂囦欢镞犳硶琚鍙岖紪璇戞垨钥呭规槗镰磋В锛屼粠钥屼缭闅滆蒋浠剁殑瀹夊叏镐у拰绋冲畾镐с傚姞锲鸿繃绋嬩腑鍖呮嫭锷犲瘑浠g爜銆佸帇缂╂枃浠躲佹贩娣嗙被钖岖瓑镓嬫碉纴浠ユ彁楂桦弽缂栬疟鍜岀牬瑙i毦搴︺侫PK锷犲浐宸茬粡鎴愪负鐩鍓岮ndroid寮鍙戜腑镄勫繀瑕佺幆鑺傦纴琚骞挎硾搴旂敤浜庡悇绉嶅簲鐢ㄧ▼搴忕殑寮鍙戝拰涓婄嚎銆
APK锷犲浐镄勮繍琛屽师鐞嗘槸浠涔堬纻
APK锷犲浐镄勪富瑕佸师鐞嗘槸阃氲繃灏咥PK绋嫔簭涓镄勯吨瑕佹枃浠跺拰浠g爜杩涜屽姞瀵嗗拰娣锋穯锛岄殣钘忕▼搴忕殑镙稿绩鍐呭癸纴骞朵娇鎭舵剰鏀诲嚮钥呮棤娉曡交鏄揿湴杩涜屽垎鏋愬拰鍏ヤ镜銆傚姞锲鸿繃绋嬩腑锛岄栧厛灏咥PK绋嫔簭涓镄勪唬镰佽繘琛屽姞瀵嗗拰娣锋穯锛岀劧钖庡炲姞鐩稿叧镄勪缭鎶ゆ満鍒跺拰阃昏緫鍒ゆ柇锛屼互杈惧埌鎻愰珮杞浠跺畨鍏ㄦу拰绋冲畾镐х殑鐩镄勚
APK锷犲浐浼氩硅蒋浠剁殑镐ц兘銆佽祫婧愭秷钥楅犳垚褰卞搷钖楋纻
锷犲浐钖庣殑APK鏂囦欢锲犱负鍖呭惈浜嗗姞瀵嗗拰娣锋穯镄勪唬镰佸拰鏂囦欢锛屽洜姝ょ浉杈冧簬链锷犲浐鍓嶏纴鍏跺ぇ灏忎细澧炲姞锛屽畨瑁呭寘浣撶Н涔熶细鍙桦ぇ銆傛ゅ栵纴锷犲浐镎崭綔涔熼渶瑕侀濆栫殑璁$畻璧勬簮鍜屾椂闂淬备絾涓鑸𨱍呭喌涓嬶纴杩欎簺褰卞搷閮芥槸鍙浠ユ帴鍙楃殑锛岃屼笖锷犲浐钖庤蒋浠剁殑瀹夊叏镐у拰绋冲畾镐у彲浠ュ缑鍒版湁鏁堟彁楂樸傚洜姝わ纴寮鍙戣呴渶瑕佹牴鎹鍏蜂綋镄勬儏鍐垫潵阃夋嫨鏄钖﹂渶瑕佽繘琛孉PK锷犲浐锛屼互銮峰缑链浣崇殑寮鍙戝拰鍙戝竷鏁堟灉銆
② apk加固,apk加固怎么可以防止反编译,保护apk源代码安全
apk源代码可以加固的的,源代码是加壳之后把重要的那部分代码隐藏起来不被看到,在一定基础上可以达到保护源代码的目的。
③ 加固的apk,如何反编译androidManifest.xml
工具:
链接: http://pan..com/s/1i4QpEAh 密码:l6oq
首先配置好java的环境,在将apk重命名为*.zip,然后解压zip文件,就可获得AndroidManifest.xml文件,此时该文件无法打开,接下来就要用上面的AXMLPrinter2.jar工具。
命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml > a.xml
④ 安卓app360加固怎么反编译
1 对比
上传demo进行加固,解包后对比下原包和加固包,发现加固包在assets文件夹下多了libjiagu.so,libjiagu_x86,lib文件夹下多了libjiagu_art.so,同时修改了dex文件和AndroidManifest文件
打开manifest文件,看到xxx加固对Application标签做了修改,添加了壳入口,也就是我们反编译后看到的StubApplication.smali这个文件。
相比于之前版本的加固,自从1.x.x.x加固版本之后,多了几次反调试,使得动态难度稍微增大了一些,不过针对脱壳机脱壳,再多了反调试也是无用。或者通过修改系统源码,也能达到消除反调试的作用。
2 动态调试
(1)把app安装到手机,以调试模式打开app
(2)以shell模式root权限打开IDA的android_server监听
(3)tcp转发
(4)打开IDA,修改配置为在进程开始时下断
(5)搜索到进程后jdwp转发,pid值即为我们进程号,并在命令行下附加。
成功附加后,可以下段了,打开Debugger Option
我们选择在线程开始和库加载时下断,修改成功后,jdb附加,点击运行
程序会断在elf头处,按下G键,搜索mmap,在mmap函数的段首和断尾下段
F9运行,来到断尾时F8单步,
来到此处时,在 BLunk_5C999C2C下断,F9一下,F7跟进去
跟进去今后在BLX LR处进行下断,此处就是进行反调试的地方,原理依然是获取TracePid的值判断当前是不是处于调试状态,建议第一次调试的人在fgets和fopen处下断,再f7跟进此调用就可以看到TracePid的值了。
跟进去之后,我们直接把方法移到最下方,就可以看到kill符号了,这就是杀进程的地方,如果当前处于调试状态,则直接结束进程。
我们在此函数的所有cmpR0,#0处下断,F9一下后即断在断点处,观察寄存器窗口的R0值,实质就是当前的TracePid的16进制的值
不确定的可以使用cat /proc/pid/status进行对比一下,我们直接把R0置0,右键选择Zero Value即可清0,继续F9
我们看到程序又来到了mmap处,继续f9
当继续断在调用反调试功能的方法时,继续F7跟进,依然在所有的cmp R0,#0处下断,断下后把R0清0后继续F9运行
目前的规律是,调用BLXLR的第一次,第二次和第四次是进行反调试判断的,第三次并不影响,可以直接f9跳过去,三次反调试搞定后,就可以愉快的F9运行并观察堆栈窗口了
当看到出现如下所示时:
说明壳已经开始解密并释放dex文件了,我们直接F8单步十几步,最后F9一下就可以看到我们需要的dex头了
直接脚本mp出来即可,最后把libjiagu的所有文件删除,并修复下Application标,如果存在则修复,不存在删除即可
⑤ 怎么加固安卓软件
加固安卓软件一般要达到以下效果:
1、防逆向:通过DEX 文件加壳以及DEX 虚拟化等技术,防止代码被反编译和逆向分析。
2、防篡改:通过校验 APK 开发者签名,防止被二次打包,植入广告或恶意代码。
3、防调试:防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
VirboxProtector安卓加固的核心技术一般有:
DEX 文件加密隐藏
对 DEX 文件加壳保护,防止代码被窃取和反编译。
SO 区段压缩加密
对 SO 库中的代码段和数据段压缩并加密,防止被 IDA 等工具反编译。
单步断点检测
在混淆的指令中插入软断点检测暗桩,防止native层run trace和单步调试。
防动态调试
防止应用被 IDA、JEB 等工具调试,动态分析代码逻辑。
开发者签名校验
对 APK 中的开发者签名做启动时校验,防止被第三方破解和二次打包。
SO 内存完整性校验
在 SO 库加载时校验内存完整性,防止第三方对 SO 库打补丁。
SO 代码混淆
对 SO 库中指定的函数混淆,通过指令切片、控制流扁平化、立即加密等技术手段,将 native 指令转换为难以理解的复杂指令,无法被 IDA 反编译,并且无法被还原。
SO 代码虚拟化
对 SO 库中指定的函数虚拟化,可以将 x86、x64、arm32、arm64 架构的机器指令转换为随机自定义的虚拟机指令,安全强度极高,可通过工具自定义配置,调整性能与安全性。
DEX 虚拟机保护
对 DEX 中的 dalvik 字节码进行虚拟化,转换为自定义的虚拟机指令,最后由 native 层虚拟机解释执行,防止逆向分析。
⑥ 经过360加固的安卓程序该如何破解反编译后什么代码都找不到
1)APKtool 2)dex2jar 3)jd-gui 4)签名工具 相关技术的基本要求 1)具有一定的阅读JAVA代码的能力 2)稍微有点Android基础,越多越好 3)会用eclipse的一些Android调试的相关工具 4)了解一下smali的语法规范和字段的自定范围 5)有点应变能力思想转换能力、 6)虽然代码的修改是修改其smali文件(用到smali语法),虽然其语言是非常复杂的,但是我们能够变通就行了,但是要求了解一下smali的语法规范和字段的自定范围。 了解以上方法可以非常简单破解Android APK,破解后,应用里的页面布局、代码逻辑、结构算法等都能一目了然。所以为了避免被他人,尤其是竞争对手了解到这些,防破解和反编译尤为重要。我试过代码混淆,但是代码混淆只是对类名进行了变换,增加了破解者的阅读难度,并不能真正阻止反编译工程。下面是进行过代码混淆的APK代码结构,能看到只是对类名做了变换,变成a、b、c等这样的名称。但是仍然可以进行反编译。 后来又尝试使用360加固保对APK进行加固保护,发现原有的代码程序被隐藏起来了,没法再进行反编译工作。 所以作为移动应用开发者,适当了解一些破解和反编译工作有利于保护自己的应用安全。如果不防患于未然,一旦出现盗版情况,那么你的APP很可能从此被市场所抛弃。
⑦ app可以被反编译到什么程度
Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度。
第一种情况:无混淆无加密无加壳。
直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上做到可复用,只是资源文件的引用需要计算一下。
第二种情况:混淆。
通常是利用Proguard做的防护。因为是对jar做的不可逆混淆(除非有mapping),因此不能还原成原来的代码。但是代码结构,代码逻辑一致,只要花长时间对代码进行梳理一样可找准核心代码,解密方法跟第一种一致。
第三种情况:加密。
这里以DexGuard为例。对于这种代码加密的方法,在程序运行中必定会进行解密,只要抽出它解密的逻辑便可。PS:我自己做过DexGuard的解密,如果用Dex2jar反编译看的话逻辑是不对的,一定要从Smali代码看。后来发现网上已经有人做了。
解密的脚本:A look inside Dexguard
第四种情况:加壳。
这种情况跟第三种类似。无论你怎么加壳,运行的时候必定是Dalvik可识别的Odex代码,建议直接在内存里mp出来。这里推荐Xpose的ZjDroid。
加固可以在一定程度上保护自己核心代码算法,提高破解/盗版/二次打包的难度,缓解代码注入/动态调试/内存注入攻击等。
目前市面上有很多第三方加固的平台, 如果新应用发布前需要扫描或者加固的话,可以先试试免费的,例如腾讯御安全,建议自己先去扫描测试下。