首页
社区
课程
招聘
未解决 vmp解释器 50.00雪花
2024-2-6 14:10 3393

未解决 vmp解释器 50.00雪花

2024-2-6 14:10
3393

数字壳解释器解释跳转语句(例如 3800 )这个if-eqz dalvik指令会跳过这个value2value3的解析。怎么捕获到该指令的v2v3呢


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2024-2-7 18:44 被srx编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 78
活跃值: (1288)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tianwenle 2024-3-24 14:49
2
0
在Android的Dalvik虚拟机或ART(Android Runtime)中,if-eqz 是一个条件跳转指令。这条指令会检查其操作数(通常是一个寄存器)的值。如果该值为零(即“zero”),则执行流程会跳转到由指令指定的偏移量所指示的代码位置。

你提到的“3800”可能是这个跳转指令的偏移量,表示如果条件满足(即寄存器值为零),则跳转到当前指令之后的第3800个字节的位置。

要捕获if-eqz指令的操作数(即v2和v3),你需要对Dalvik字节码或ART的DEX文件进行反汇编或反编译。你可以使用工具如baksmali(用于Smali字节码)或dex2jar + jd-gui(用于DEX文件)来查看和分析这些指令。

以下是捕获if-eqz指令操作数的大致步骤:

    反汇编DEX文件:使用dex2jar将DEX文件转换为JAR文件,然后使用jd-gui打开JAR文件以查看Java源代码的反编译版本。或者,你也可以直接使用baksmali来反汇编Smali文件。
    查找if-eqz指令:在反汇编或反编译的代码中,查找if-eqz指令。这个指令通常会有一个或多个操作数,这些操作数可能是寄存器(如v2, v3等)。
    分析操作数:确定if-eqz指令的操作数,并理解它们是如何在代码中使用的。这些操作数可能代表特定的变量或值。
    捕获v2和v3的值:在if-eqz指令执行之前,你可以通过查看或修改代码来捕获v2和v3的值。这可能涉及到在代码中插入日志语句,或者在调试器中设置断点来观察这些值。
    调试和验证:使用调试工具(如Android Studio的调试器)来执行代码,并验证你是否正确地捕获了v2和v3的值。
游客
登录 | 注册 方可回帖
返回