调试Android应用程序

调试Android应用程序,android,debugging,bytecode,dalvik,Android,Debugging,Bytecode,Dalvik,假设我有一个从设备上获取的恶意软件应用程序,使用smali、dededexter或dex2jar将其反转是可以的,但我想实际调试它,而不仅仅是执行静态分析 有可能吗?我不确定dalvik VM调试功能是如何工作的,因为它们应该知道单步执行时哪一行代码属于哪一行dalvik操作码,我不确定元数据驻留在哪里,有人有过相关经验吗? 当然,我可以尝试dex2jar并创建一个eclipse项目,但我也在寻找一种从dalvik实现它的方法,这意味着能够通过dalvik byecode行逐步实现 找不到任何这

假设我有一个从设备上获取的恶意软件应用程序,使用smali、dededexter或dex2jar将其反转是可以的,但我想实际调试它,而不仅仅是执行静态分析

有可能吗?我不确定dalvik VM调试功能是如何工作的,因为它们应该知道单步执行时哪一行代码属于哪一行dalvik操作码,我不确定元数据驻留在哪里,有人有过相关经验吗? 当然,我可以尝试dex2jar并创建一个eclipse项目,但我也在寻找一种从dalvik实现它的方法,这意味着能够通过dalvik byecode行逐步实现

找不到任何这样的开源项目,我不确定Ida Pro是否允许


有人有线索吗?

我没有尝试这种方法,但这是可能的。要做到这一点,您需要下载的旧版本,据称在新版本上这种方法不起作用

您可以观看如何执行此操作的视频,也可以阅读描述如何使用smali代码执行调试的文章

我在一个流行的俄语IT网页上读到了这些方法。以下是这些文章的链接:和。如果你懂俄语,这里有一步一步地说明如何执行调试。如果你不这样做,谷歌翻译可以帮助你抓住这个想法


如果您有一些不清楚的地方,我会尽力帮助您。

您当然可以这样做,并且可以毫无问题地调试恶意软件应用程序。Ida允许您以非常平滑和温和的方式进行操作,您只需将apk中的classes.dex打开到Ida PRO并配置Davilk调试器。但是,您也可以使用与使用eclipse编写应用程序相同的方法来完成此操作

唯一的限制是,由于应用程序清单不允许您调试它(让我们假设最坏的情况和一个智能恶意软件),您需要一个工程师设备,以便可以连接IDA Pro或调试器,我指的是一个

$ getprop ro.debuggable
1
$ getprop ro.secure
0
如果可以解锁设备的引导加载程序,并在initfiles中编辑ramdisk设置ro.debuggable=1和ro.secure=0,那么满足这些条件也非常容易。 或者,如果您的设备是根设备,则可以使用setpropex以这种方式轻松更改只读属性

# ./setpropex ro.debuggable 1
# ./setpropex ro.secure 0
github到setpropex

setpropex目前未维护,但可在android 5上运行。