发表日期: 2021-04-30 10:30:15 浏览次数:100
长垣网站制作【长垣网站优化】长垣建网站、长垣微信公众号运营、长垣网页设计、长垣微信小程序商城
长垣市,河南省辖县级市,新乡市代管, [1] 位于豫东北地区,介于东经114°29'—114°59'、北纬34°59'—35°23'之间,总面积1051平方千米。 [2] 截至2020年6月,长垣市下辖5个街道、11镇、2乡, [3] 总人口88.18万人(2019年)。 [4] 市政府驻蒲西街道人民路368号。 [1]
前221年,秦改首邑为长垣县。2019年8月,河南省撤销长垣县,设立县级长垣市。 [1] 属暖温带大陆性季风型气候。 [2] 长济高速、大庆—广州高速公路、济东高速公路、新菏铁路、省道308线、213线穿境而过。
长垣市是全国文明城市 [5] 、国家园林县城 [6] 、国家新型城镇化综合试点地区 [7] 、全国科普示范区 [8] 、节水型社会建设达标县 [9] 、国家农产品质量安全县 [10] 、全国农村创新创业典型县 [11] 、革命文物保护利用片区分县。 [12]
ELF 部分的解密流程
读取 .bmp 解密key
读取 .mips 用上面的 key 解密
调用 uncompress 解密
依次解密被抽调的数据和SO
public static jiagu decode_jiagu(byte[] bmp, byte[] mips){
}
修复方法。直接写回去就好了。
public int save(String out){
// long symtab_address = 0, stratb_address = 0;
for(int i = 0; i < size; i++){
Elf32_Dyn dyn = Bytes2Dyn( memcpy(this.elf, dyn_address + i * SIZEOF_Elf32_Dyn , SIZEOF_Elf32_Dyn) );
if(dyn.d_tag == DT_PLTREL){
if(dyn.d_un.d_val != DT_REL){
System.out.println("DT_PLTREL 异常");
err = 2;
break;
}
}else if(dyn.d_tag == DT_JMPREL){
plt_rel = dyn.d_un.d_ptr;
}else if(dyn.d_tag == DT_PLTRELSZ){
plt_rel_count = dyn.d_un.d_val / SIZEOF_Elf32_Rel;
// }else if(dyn.d_tag == DT_SYMTAB){
// symtab_address = dyn.d_un.d_ptr;
// }else if(dyn.d_tag == DT_STRTAB ){
// stratb_address = dyn.d_un.d_ptr;
}
}
if( rel != 0 && rel_count != 0 ){
size = (int) (rel_count SIZEOF_Elf32_Rel);
if( size > this.rel.length )
size = this.rel.length;
System.arraycopy(this.rel, 0, this.elf, (int)rel, size);
} else {
err = 3;
}
if( plt_rel != 0 && plt_rel_count != 0 ){
size = (int) (plt_rel_count SIZEOF_Elf32_Rel);
if( size > this.plt_rel.length )
size = this.plt_rel.length;
System.arraycopy(this.plt_rel, 0, this.elf, (int)plt_rel, size);
DEX解密:
classes.dex 加固后的结构: 360的dex + 热修复信息 + 原APP的dex
1.读取360的dex大小,获取 热修复信息 偏移,大小,每个字节^ 0x52解密出信息
热修复信息的地址,大小调用makekey->_Z9arm_a_2PcjS_Rii->_Z9arm_a_0v->_Z10__fun_a_18Pcj 计算2组KEY。
翻译出来的代码如下
public static Object[] makekey(byte[] fix, long xor){
}
3.依次读取每个DEX的数据,详细结构: dexindex+next+data1size+data1+data2
解密流程:
用makekey计算出来的rc4key 先解密,然后 LZMA:24解压,在把前0x70个字节和makeykey的第二个KEY^最后和dex_data2合并就得到完整的dex
其余的代码很好逆。
