ZjDroid--脱壳神器介绍

https://github.com/halfkiss/ZjDroid



Android app dynamic reverse tool based on Xposed framework.

一、ZjDroid工具介绍

ZjDroid是基于Xposed Framewrok的动态逆向分析模块,逆向分析者可以通过ZjDroid完成以下工作:1、DEX文件的内存dump2、基于Dalvik关键指针的内存BackSmali,有效破解主流加固方案3、敏感API的动态监控4、指定内存区域数据dump5、获取应用加载DEX信息。6、获取指定DEX文件加载类信息。7、dump Dalvik java堆信息。8、在目标进程动态运行lua脚本。

二、ZjDroid相关命令

1、获取APK当前加载DEX文件信息:adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dexinfo"}'

2、获取指定DEX文件包含可加载类名:adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_class","dexpath":"*****"}'

4、根据Dalvik相关内存指针动态反编译指定DEX,并以文件形式保存。adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"backsmali","dexpath":"*****"}'

该方式可以脱壳目前大部分流行的加固防护。(由于手机性能问题,运行较忙)例外情况:由于ApkProtect特定防修改检测,需要做如下修改即可解固该保护:(1)在设备上创建特定目录(如/data/local)并 chmod 为777(2)复制zjdroid.apk到该目录,并修改文件名为zjdroid.jar (3) 修改/data/data/de.robv.android.xposed.installer/conf/modules.list 模块代码文件修改为"zjdroid.jar"从启设备即可。

5、Dump指定DEX内存中的数据并保存到文件(数据为odex格式,可在pc上反编译)。adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_dex","dexpath":"*****"}'

6、Dump指定内存空间区域数据到文件adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_mem","start":1234567,"length":123}'

7、Dump Dalvik堆栈信息到文件,文件可以通过java heap分析工具分析处理。adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"dump_heap"}'

8、运行时动态调用Lua脚本该功能可以通过Lua脚本动态调用java代码。使用场景:可以动态调用解密函数,完成解密。可以动态触发特定逻辑。adb shell am broadcast -a com.zjdroid.invoke --ei target pid --es cmd '{"action":"invoke","filepath":"****"}'

luajava相关使用方法:http://www.keplerproject.org/luajava/

8、敏感API调用监控

三、相关命令执行结果查看:

1、命令执行结果:adb shell logcat -s zjdroid-shell-{package name}

2、敏感API调用监控输出结果:adb shell logcat -s zjdroid-apimonitor-{package name}


Android学习手册 破解过程


转:http://blog.sina.com.cn/s/blog_92b6d74d0102uyhl.html



  • 昨天看到鬼哥发了一个《Android学习手册》软件的破解限制版 是爱加密的东西。想来 脱壳神器到手之后,除了试演很真没实战过呢 所以就想拿来试试。

一、脱壳
打开DDMS 查看 loading.androidmanual 包的PID,是27253;
在 adb shell 下,运行
am broadcast -a com.zjdroid.invoke --ei target 27253 --es cmd'{"action":"dump_dexinfo"}'
在LogCat中查看Jar的路径,得到:/data/app/loading.androidmanual-1.apk ;
于是开始用BakSmali来Dump出DEX文件,运行
am broadcast -a com.zjdroid.invoke --ei target 27253 --es cmd'{"action":"backsmali","dexpath":"/data/app/loading.androidmanual-1.apk"}'
运行了几分钟,在日志中就会显示已完成。这是取出DEX即可。一般的路径是:包名/files/dexfile.dex。

 

二、简单修复
将classes.dex置换,然后签名安装之后,会发现程序闪退。于是打开IDE反编译看看。
修复的方法是将 AndroidManifest.xml 文件中的application修改为
   
也就是将其中的 name 属性去掉。然后编译安卓就能运行了。

 

三、分析破解
①破解激活。
我采用的是爆破的方法,破解其功能限制,直接享受激活的待遇。很简单,搜索“请先激活账户!”,然后在相关的方法中修改跳转即可;
改好之后,内容确实是可以看了但是还有一点不上的地方就是点击“我的账户”仍然会跳到未激活的界面。经过查看资源文件xml文件发现,未激活状态与收费账户是两个不同的界面,也就是两个Activity所以将这两个 Activity 的代码置换就OK了,于是,替换 CreditActivity 的代码为 DollarActivity的代码,再点击“我的账户”时,就显示收费账户了。

②去除更新。
搜索“Update”可知,该软件运用友盟进行自动更新。在 Lcom/umeng/update/UpdateResponse.Method a的异常抛出中会发现 YES . update .version等关键字符,搜索删除异常执行的代码,那么就变成了:

.method privatea(Lorg/json/JSONObject;)V

   .locals 2

   :try_start_0
   :try_end_0
    .catchLjava/lang/Exception; {:try_start_0 .. :try_end_0}:catch_0

   :cond_0
   :goto_0
   return-void

   :catch_0
   move-exception v0

   invoke-virtual {v0},Ljava/lang/Exception;->printStackTrace()V

   goto :goto_0
.end method

但是这个貌似之后去除了进去时的更新,在点击“自动更新”按钮选项时,可能还会是提示更新,于是我们根据字符串:
没有更新 当前版本v1.0.7
追到了 Lloading/androidmanual/M .MethodonUpdateReturned方法,它有一个据p1的值进行执行的switch语句,而no_update字符在switch_2中,所以我们在switch执行之前p1进行赋值为2的操作就可,变成:
    const/4p1,0x2
   packed-switch p1, :pswitch_data_0


教程结束。谢谢所有技术大牛的技术分享。

 

附件:http://pan.baidu.com/s/1i3FsMqh


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Frida-dexdump是一款用于Android应用程序脱壳的工具。它基于Frida框架,可以在运行时动态地注入代码,从而实现对应用程序的监控和修改。通过使用Frida-dexdump,用户可以获取应用程序的dex文件,进而进行反编译和分析。这对于安全研究人员和逆向工程师来说是非常有用的。 ### 回答2: Frida-Dexdump是一种脱壳工具,它使用Frida库提供的动态注入技术来实现脱壳。它可以帮助安全研究人员分析Android应用程序中的可执行文件(dex文件),以便他们能够防止应用程序的非法复制或修改。 Frida-Dexdump的主要优点是它不需要修改目标应用程序的源代码,因为它是通过在应用程序运行时动态注入实现的。这个过程非常简单,只需要在设备中安装Frida-server,然后运行Frida-Dexdump即可。脱壳过程中,它会将dex文件从目标内存中复制到本地磁盘,然后对该文件进行解密、反编译和分析。 此外,Frida-Dexdump还提供了一些其他有用的功能,例如提取应用程序进程的内存信息和文件系统信息,以及可以监视应用程序的API调用、函数调用和网络请求等操作,有助于发现应用程序中的漏洞和安全问题。 总之,Frida-Dexdump是一种非常有用的脱壳工具,它给安全研究人员提供了一个方便而有效的方式,来分析Android应用程序中的DEX文件,并发现和解决其中的安全问题。但需要注意的是,在使用该工具时,需要严格遵守法律法规,不得将其用于非法用途。 ### 回答3: Frida-Dexdump是一款非常强大的脱壳工具,它是基于Frida框架开发的,能够帮助开发者轻松地从安卓应用程序中提取dex文件,帮助开发者进行逆向分析,加深对程序的理解。 Frida-Dexdump的主要功能是从本地已安装的应用程序中提取dex文件,并将其保存到本地文件系统中,使其方便地进行后续分析。这个脱壳工具不仅能够脱壳Native方法,还可以有效地防止抓包等应用安全风险。 使用Frida-Dexdump非常容易,只需要在Frida Server启动的情况下,通过命令行来启动即可。可以利用命令行参数去指定你需要脱壳的应用程序包名,然后Frida-Dexdump就会自动使用Frida去hook这个被指定的应用程序,并提取它的dex文件。 Frida-Dexdump采用了一种非常高效的脱壳技术,它能够轻松地解析目标程序的内存结构,获取有关dex文件的相关信息,并且还能够将提取的dex文件保存在指定的本地文件系统中,方便开发者进行后续分析。值得一提的是,Frida-Dexdump支持多种不同的目标程序,包括应用程序、Framework、动态库等。 总的来说,Frida-Dexdump是一款非常强大的脱壳工具,可以帮助开发者轻松地进行逆向分析,深入探究Android应用的内部机制。它的强大功能和高效性使其受到广泛的关注和使用,目前已经成为许多安卓开发者逆向工程的首选工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值