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. HTML and CSS学习概述

    一·Web浏览器是一个连接到Web服务器,向Web服务器请求信息,然后解析返回来的HTML标记,并将其显示在浏览器窗口内的程序.1.Microsoft 2.Internet Explorer(IE)3 ...

  2. 爬虫模块之selenium模块

    一 模块的介绍 selenium模块最开始是一个自动化测试的工具,驱动浏览器完全模拟浏览器自动测试. from selenium import webdriver # 驱动浏览器 browser=we ...

  3. 2019.01.04 bzoj2962: 序列操作(线段树+组合数学)

    传送门 线段树基础题. 题意:要求维护区间区间中选择ccc个数相乘的所有方案的和(c≤20c\le20c≤20),支持区间加,区间取负. 由于c≤20c\le20c≤20,因此可以对于每个线段树节点可 ...

  4. python报错ModelNotFoundError

    很可能是因为工作目录并不在sys.path中,系统无法默认的找到您的脚本文件,通过以下命令可以解决该问题: >>> import sys>>> sys.path.a ...

  5. 02 Django配置信息

    2-1 基本配置信息 import os # 项目路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # ...

  6. UVaLive 3357 Pinary (Fib数列+递归)

    题意:求第 k 个不含前导 0 和连续 1 的二进制串. 析:1,10,100,101,1000,...很容易发现长度为 i 的二进制串的个数正好就是Fib数列的第 i 个数,因为第 i 个也有子问题 ...

  7. BZOJ 1444 [Jsoi2009]有趣的游戏 (AC自动机 + 概率DP + Gauss)

    1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1382  Solved: 498[Submit][Statu ...

  8. nginx location配置和rewrite写法

    location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...

  9. 如何通过Openssl实现私有CA,并为HTTP服务提供TLS/SLL安全机制

    原文链接:http://guodayong.blog.51cto.com/263451/1181059 Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登 ...

  10. (转)MVC一个页面多个submit

    转自:http://stackoverflow.com/questions/442704/how-do-you-handle-multiple-submit-buttons-in-asp-net-mv ...