UPX压缩脱壳「建议收藏」

UPX压缩脱壳「建议收藏」该方法可针对upx变种,但AndroidLinker的时候不需要section表,所以我们不能修复section表进行SO层代码脱壳1.使用IDA打开libexec.so,在导出函数中找到.init_proc函数(0x39A79),搜索特征码7D2700DF搜索到下面语句2.自己编译一个load程序,然后ida附加.刚好到死跳转处,注意…

大家好,又见面了,我是你们的朋友全栈君。

该方法可针对 upx 变种,但Android Linker 的时候不需要section表, 所以我们不能修复 section 表

进行SO层代码脱壳

1. 使用IDA 打开libexec.so,在导出函数中找到.init_proc 函数(0x39A79), 搜索特征码7D 27 00 DF

UPX压缩脱壳「建议收藏」

        搜索到下面语句    

        UPX压缩脱壳「建议收藏」     

        2.自己编译一个load程序 , 然后ida 附加.

        UPX压缩脱壳「建议收藏」

        刚好到 死跳转处, 注意 r0和 r1修复program head 有用

        3.开始dump 数据, 

UPX压缩脱壳「建议收藏」

从基地址开始0x40501000  到0x40559000 结束, 也就是刚才下面一个libexec  的segment结束.

      4.修复program head

UPX压缩脱壳「建议收藏」

 

这里是p_files和p_memsz 是错误的需要修正,  这里大小的计算为

mprotect 函数的参数1 + 参数2 – 模块基地址 结果如下:

0x40511000 + 0x00047490 – 0x40501000 = 0x57490;

    并修改第一个(RW_) Loadable Segment的文件偏移,P_offet = p_addr – 0x1000 , 这里 应该修改为 0x57EE0; 下面是修改后的

UPX压缩脱壳「建议收藏」

        5.修补数据

打开原始文件 libexec.so 文件定位到

第一个 (RW_) Loadable Segment的p_offset文件偏移0x3AEE0 , p_memsz 大小 (0x4BC8),  这里我们将这一步份数据复制出来, 粘贴到我dump出来的偏移 0x57EE0 处

UPX压缩脱壳「建议收藏」

         6. 获得原始init 函数 RVA

        定位原始的init 函数地址, 我们返回到刚才调试的IDA 中

UPX压缩脱壳「建议收藏」

 0x404E8649就VA了这里我们减掉基地址 0x404D6000 获得RVA为 0x12649, 也可以将上面的死条状指令恢复然后, 一直 F8 经2次返回就可到原始 init 函数

        第一次返回:

UPX压缩脱壳「建议收藏」

         第二次返回:

UPX压缩脱壳「建议收藏」

 

 

7.修改 .init_prot 偏移地址

.init_prot  rva= 0x039A79 , 所以我们在刚粘贴的数据中用WinHex 搜索 16进制

 0C 00 00 00 79 9A 03 00   //前4个字节是类型标识 后4个字节是函数偏移地址

UPX压缩脱壳「建议收藏」

我们要将这里的 0x39A79 壳代码修改为原始的init函数.最终修改为

UPX压缩脱壳「建议收藏」

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159882.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis客户端API

    Redis客户端APIRedis客户端APIclientsetNamexx为客户端设置名字clientlist列出与Redis服务端相连的所有客户端信息。info可查看Redis的所有信息。infomemory只查看Redis内存使用情况。infoclients记录了已连接客户端的信息限制redis连接maxclients、timeoutconfigsettimeout

    2022年6月6日
    33
  • idea2021激活码csdn-激活码分享

    (idea2021激活码csdn)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    188
  • 汉诺塔问题java代码_汉诺塔java实现结果

    汉诺塔问题java代码_汉诺塔java实现结果Java基础语法(汉罗塔)1起源2需求3分析3.11个碟子3.22个碟子3.33个碟子3.44个碟子3.5规律4代码实现:直接算法5代码实现封装:栈的思想1起源汉罗塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。2需求将汉罗塔问题抽象到数学:

    2022年10月11日
    2
  • decodeURI与decodeURIComponent区别

    decodeURI与decodeURIComponent区别1.概念:URI:UniformResourceIdentifiers,通用资源标识符Global对象的encodeURI()和encodeURIComponent()方法可以对URI进行编

    2022年8月1日
    5
  • sql 聚合函数嵌套使用[通俗易懂]

    sql 聚合函数嵌套使用[通俗易懂]sql聚合函数嵌套使用

    2022年6月21日
    46
  • HP Loadrunner 11 安装+激活成功教程+汉化+乱码

    HP Loadrunner 11 安装+激活成功教程+汉化+乱码一、激活成功教程HPLoadrunner+汉化1、在HP官网上注册(必须要注册才能下载)2、下载LoadRunner11安装包  下载地址:http://www8.hp.com/cn/zh/software-solutions/software.html?compURI=1175451#-HPCDC-trackGatedLink=TrialSoftware|3-3KSG8SS|T

    2022年7月22日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号