首页 > 编程知识 正文

安卓小项目源码免费网站,论坛app源码

时间:2023-05-06 17:14:14 阅读:60855 作者:3946

反向编译有一种方法

将dex文件从apk中解压缩,获取classes.dex,在dex2jar中将dex文件转换为jar文件: dex2jar.bat classes.dex,然后将生成的classes.jar文件转换为JD-guuuugur

jd-gui下载: http://jd.benow.ca/

还报告错误

dex2jar .classes.dex - . classes-de x2 jar.jar com.Google code.d2j.dex exception : notsupportversion.atcom.Google code.d2j.reader.dexfifion atcom.Google code.de x2 jar.tools.de x2 jar cmd.do command line (de x2 jar cmd.Java 3360104 )。 atcom.Google code.de x2 jar.tools.base cmd.domain (base cmd.Java 3360288 ) atcom.Google code.de x2 jar.tools.de x2

此时,我想编译dex2jar的相关文件,了解为什么报告了错误

打开dex2jar-2.0lib目录时,reader.DexFileReader.init会报告错误,这可能是DexFileReader初始化错误。 应该是dex-reader-2.0.jar或dex-reader-2.0.jar

publicdexfilereader (bytebufferin ) in.position ) 0; in=in.asReadOnlyBuffer ().order(byteorder.little_Endian ); int magic=in.getInt ()0xFFFFFF; 魔力!=7890276 ) if (幻灯片==7955812 ) thrownewdexexception (' notsupportodex ' ); } thrownewdexexception (' notsupportmagic.'; } int version=in.getInt ()0xFFFFFF; if () version!=3486512 () version!=3552048 ) (//此处积极抛出异常的thrownewdexexception (' notsupportversion.' ); } .可以推测这是在读取第一个字符时通过比较版本值主动抛出异常

很明显,version是3486512和3552048不是zgdl。 那些是什么呢? 上下搜索可以看到定义的常数:

privatestaticfinalintmagic _ 035=3486512; privatestaticfinalintmagic _ 036=3552048; 额,MAGIC_035和MAGIC_036,在网上查了一下,好像是dex头部检查

较旧版本的幻方版本为035

优化的dex文件,幻像版本为036

说误报不等于这两个,是什么情况?

在notpad中打开classes.dex文件时,头部会出现以下情况

德克斯磁头

第二行竟然是037! 嗯,我有一个大胆的想法。 把037,改成036,保存,再用dex2jar

成功了! 在jd-gui中打开jar文件也可以顺利地进行逆编译

传统思维:

如果幻方版本是dex检查,为什么gts的apk是037这个不正确的值? 这个apk特别吗? (实际验证此apk是否无法安装(为什么读取的int值为3552048,notepad显示为036? (推测与字符代码有关)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。