世界杯预选赛亚洲区_高达世界杯 - fzxzyy.com

DEX文件的修改

- 世界杯对战表

unzip -d ./out app-release.apk解压apk文件

用ida打开classes.dex文件,alt+T查找字符串ID0x7f06002c,结合查找makeText等特征,找到相应代码,并通过Patch Program将原来if-nez的机器码39 00 0f 00修改为if-eqz对应的38 00 0f 00。此处,if-nez的Opcode为39 ,if-eqz的Opcode为38

修改后的DEX,其DexHeader头部的checksum和signature字段是错误的,需要修正。

有两种方法:

可以使用DexFixer.1sc的010 Editor脚本来实现对EDX的修改。010 Editor打开DEX文件,在文件上执行DexFixer.1sc脚本即可。(脚本贴在文末)

使用dex2jar提供的工具d2j-dex-recompute-checksum

此处下载

d2j-dex-recompute-checksum -f ./classes.dex

命令执行后,会在当前目录生成修正后的文件classes-rechecksum.dex。更名为classes.dex后重新打包APK并签名即可。

DexFixer.1sc脚本

int endian = ReadInt(0x28); //endian_flag

if (endian == 0x12345678) {

LittleEndian();

} else {

BigEndian();

}

uchar sha1[20];

ReadBytes(sha1, 0xc, 20);

Printf("src sha1: ");

uint i=0;

for (i=0; i<20; i++)

{

Printf("%02x", sha1[i]);

}

Printf("\n");

uchar checksum[20];

ChecksumAlgBytes(CHECKSUM_SHA1, checksum, 0x20);

Printf("calced sha1: ");

for (i=0; i<20; i++)

{

Printf("%02x", checksum[i]);

}

Printf("\n");

int adler32 = ReadInt(0x8);

if (Memcmp(checksum, sha1, 20) != 0) {

WriteBytes(checksum, 0xc, 20);

} else {

Printf("same sha1\n");

}

//uchar adler32_[4];

//ChecksumAlgBytes(CHECKSUM_ADLER32, adler32_, 0xc);

int adler32_ = Checksum(CHECKSUM_ADLER32, 0xc);

Printf("src adler32: %x\n", adler32);

Printf("calced adler32: %x\n", adler32_);

if (adler32_ != adler32) {

WriteInt(0x8, adler32_);

} else {

Printf("same adler32\n");

}

Printf("Done.\n");

抖音视频有什么类型 详细分类、热门形式与内容趋势解析
惠若琪看世界杯撒狗粮 猛夸C罗意外“伤害”梅西