i春秋作家:HAI_

0×00 前言

对so的加密,https://bbs.pediy.com/thread-191649.htm大神的帖子里已经很详细的说明了。当然加密不是我们研究的重点,如何搞掉这个so的加密才是我们的要事。

或许你想看看这里

HAI_使用手册

java开发之旅

Android开发之旅

0×01 so静态分析

1.未加密之前的so

2.加密之后的so

我们使用ida打开的时候,ida进行了报错提示。

可能在平时很多时候都会发现so是被加密了的,ida就会报这个错误,我们忽略这个,然后进入。

这个就是我们加密过后的内容。

3.结论

so文件进行加密之后效果很明显,无法在加密之后的so得出有用信息。也相当于是对so进行了加壳,再详细一点就是加密壳。

而我们最主要做的就是脱掉这个加密壳。

0×02 动态脱壳

又到了我们最好玩的脱壳环节了。

利用一个最原理就是,不管你加密成什么样子,在内存中,你总是要还原的,不还原系统怎么运行。

所以我们需要进行一个动态脱壳。

连接手机,开启服务,attach

su

cd data/local/tmp

./zhu -p23333

adb forward tcp:23333 tcp:23333

//可能会用到
adb shell am start -D -n com.example.shelldemo/.MainActivity adb forward tcp:8700 jdwp:7728 jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,part=8700

成功附加。

这个时候程序已经在运行了。

所以我们需要找到demo里的so文件。

文件偏移是:75A00000
大小是:5000

我们来dump一下。

程序的话还是用之前的程序把。

static main(void){
    auto fp, begin, end, dexbyte;
    //打开或创建一个文件
    fp = fopen("d:\\dump.dex", "wb");
    //dex基址
    begin =  0xF34C6320;   
//dex基址 + dex文件大小
end = begin + 0x00013570;
    for ( dexbyte = begin; dexbyte < end;     dexbyte ++ ){
//按字节将其dump到本地文件中
fputc(Byte(dexbyte), fp);
        }
}

稍稍的更改一下就可以使用了。

好了我们成功dump。

测试

使用ida打开。

发现ida还是报错。

先忽略,进去。

这个时候发现关键函数已经出来了。

但是我们还是想要追求一下完美。

0×03 修复

我们这里修复使用工具进行。

然后使用ida进行测试。

修复成功。

脱壳系列—— 揭开so section加密的美丽外衣的更多相关文章

  1. 老王教您怎么做cass7.1 8.0 9.1所有系列的复制狗 加密狗 破解狗

    cass7.1 8.0 9.1所有系列的复制狗 加密狗 破解狗本来是出于好奇看到网上有这样的东西,学了下感觉挺简单的,如果你是cass的初学者想仅仅是想学习这个软件,不想花大价格购买正版的,这个是可以 ...

  2. thinkphp整合系列之支付宝RSA加密方式

    thinkphp整合系列之支付宝RSA加密方式上篇博客写的是MD5加密方式:thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75 但是呢 ...

  3. 脱壳系列_2_IAT加密壳_详细版解法1(含脚本)

    1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...

  4. 脱壳系列_2_IAT加密壳_详细版_解法1_包含脚本

    1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...

  5. 脱壳系列—— *加密脱壳(Android使用手册破解)

    作者:i春秋作家HAI_ZHU 0×00 前言 好久没有写文了,要好好开动一下了.很多事情要忙.这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久. 前置内容 HAI_使用手册 知识总结 0×0 ...

  6. Android逆向之旅---基于对so中的section加密技术实现so加固

    一.前言 好长时间没有更新文章了,主要还是工作上的事,连续加班一个月,没有时间研究了,只有周末有时间,来看一下,不过我还是延续之前的文章,继续我们的逆向之旅,今天我们要来看一下如何通过对so加密,在介 ...

  7. 密码学系列之:1Password的加密基础PBKDF2

    目录 简介 PBKDF2和PBKDF1 PBKDF2的工作流程 详解PBKDF2的key生成流程 HMAC密码碰撞 PBKDF2的缺点 总结 简介 1password是一个非常优秀的密码管理软件,有了 ...

  8. android加固系列—6.仿爱加密等第三方加固平台之动态加载dex防止apk被反编译

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5402599.html ] 此方案的目的是隐藏源码防止直接性的反编译查看源码,原理是加密编译好的 ...

  9. jmeter接口系列:时间戳、加密

    JMeter安装配置 从官网下载JMeter的软件包apache-jmeter-x.x.zip,下载完成之后解压打开jmeter.bat即可. 说明 这里使用的jmeter版本是3.0,jdk版本是j ...

随机推荐

  1. Python之字符串基本操作

    #!/usr/bin/env python#-*-coding utf8-*-#Author:caojininfo = { 'stu1001': 'caojin', 'stu1002': 'zhaom ...

  2. Navicat for MySQL连接出错:1251

    平台:window10 x64+mysql-8.0.15-winx64+navicat_trial_11.1.20.0(PatchNavicat破解) 错误提示:1251-Client does no ...

  3. java中的四种修饰符:private、protected、public和default的区别

      本类 本包 子类 包外 public 可以 可以 可以 可以 protected 可以 可以 可以 不可以 default 可以 可以 不可以 不可以 private 可以 不可以 不可以 不可以 ...

  4. openstack网络基本概念(转)

    OpenStack的Neutron能够管理OpenStack环境中的虚拟 网络基础设施(VNI).和物理网络基础设施(PNI). OpenStack的Neutron同意租户创建虚拟网络拓扑结构.包括的 ...

  5. denyhost安装脚本

    #!/bin/bashDENYHOSTS=DenyHosts-2.6.tar.gzDENYHOSTS_VERSION=DenyHosts-2.6DENYHOSTS_URL=http://192.168 ...

  6. vue的cli中自定义router

    1.安装router npm install vue-router 2.为了方便管理在components同级创建router文件夹 3.在文件夹中创建index.js文件,就是router文件 im ...

  7. POJ 3388 Japanese Puzzle (二分)

    题意:给你一个n*n 的图,你总共有k 种花砖,告诉你每一种花砖的个数,让你随便安排它们的位置,问你最多有多少行和第一行是一样,并且要输出第一行的一定存在的图案. 析:首先这个题如果读懂了题意,一点也 ...

  8. UVa 11542 Square (高斯消元)

    题意:给定 n 个数,从中选出一个,或者是多个,使得选出的整数的乘积是完全平方数,求一共有多少种选法,整数的素因子不大于 500. 析:从题目素因子不超过 500,就知道要把每个数进行分解.因为结果要 ...

  9. 安装postgis,使用postgis导入shapefile的步骤总结

    最近在做开源WebGIS方面的工作,要使用postgis导入shapefile数据.难点在安装过程和导入时命令行参数的使用,以下分别作个介绍,希望对大家有点用 一.安装postgis (1)首先到po ...

  10. HTTP协议(一)[草稿版]

    (一)HTTP客户端请求头格式