首页 > 其他分享 >软件系统安全逆向分析-混淆对抗

软件系统安全逆向分析-混淆对抗

时间:2025-01-09 14:56:16浏览次数:1  
标签:逆向 00 函数 混淆 程序 指令 反编译 网安 软件系统

1. 概述

在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子从无从下手到攻破目标。

  1. 花指令对抗

  2. 虚函数表

  3. RC4

2. 实战-donntyousee

题目载体为具有漏洞的小型软件,部分题目提供源代码,要求攻击者发现并攻击软件中存在的漏洞。

2.1 程序测试

首先拿到这道题目,查壳看架构,elf64

放到虚拟机中运行一下

plz input your flag
8888888888888
wrong

ida64反编译,发现软件进行了去符号处理,最直白就是没有main()函数。

但是ida自动帮我们定位到了系统入口函数start()。

然后我们查字符串 plz、wrong,均无法查到相关字符串

可见程序对静态分析做了很大的操作,防止一眼顶真。

然后我们回到系统入口函数start,F5反编译。

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

程序无法完全反编译,并且发现init和fini均无法正常识别。

进入main函数,即sub_405559(),无可用信息。

2.2 花指令对抗

看汇编

很明显,程序做的混淆对抗是加了花指令。

花指令实质就是一串垃圾指令,它与程序本身的功能无关,并不影响程序本身的逻辑。在软件保护中,花指令被作为一种手段来增加静态分析的难度。

花指令关键在于对堆栈变化以及函数调用的操作。强硬的动态调试能力也可以无视花,直接en看。

对于此花指令,我们只需要将call $+5、 retn nop 即可

(该软件的每个有用的function都加入了此花指令)

E8 00 00 00 00                call    $+5
C3                            retn

此时F5反编译,程序明显可读了

2.3 虚函数

我们重命名一下,方便理解

可见程序还使用了虚函数重定位的技术。

下面我们进行动态调试,具体跟进函数。

F7进入

又发现了花,我们nop掉

然后进入下一个函数进行重复的操作

再往下程序结束,但是我们并没有看到密文比较的地方。

我们对rc4的两个函数进行交叉引用,看哪里调用了他们呢

.data.rel.ro

这个节段是只读数据段的重定位段,在链接时重定位,里面放的就是我们的虚函数表。

看到下面还有一个sub_405CAA(),我们点击跟进。

至此,我们找到了程序的所有逻辑。

2.4 RC4解密

提取密文

25CD54AF511C58D3A84B4F56EC835DD4F6474A6FE073B0A5A8C317815E2BF4F671EA2FFFA8639957

提取密钥

921C2B1FBAFBA2FF07697D77188C

rc4_enc()函数还有个 ^23

得解。

更多网安技能的在线实操练习,请点击这里>>

  

标签:逆向,00,函数,混淆,程序,指令,反编译,网安,软件系统
From: https://www.cnblogs.com/hetianlab/p/18662143

相关文章

  • 混淆-SmartAssembly
    SmartAssembly7documentation:https://documentation.red-gate.com/saSmartAssembly7文档:https://documentation.red-gate.com/saSmartAssembly7.2版本下载链接:https://www.red-gate.com/products/dotnet-development/smartassembly/PS:建议使用7以后的版本,因为SmartAssem......
  • 【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名
    【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈背景本次学习逆向是针对小红书的用户转uid学习使用,逆向工程应当在合法和道德的范围内进行,尊重他人的知识产权和隐私权。要在小红书(Red)中将用户名转换为用户ID(U......
  • 爬虫学习——27.JS逆向(3)
    RSA介绍RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。有两把对应密钥,公钥和私钥。用公钥加密只能用私钥解开,用私钥加密只能用公钥解密。RSA加密解密网址:https://oktools.net/rsa公开密钥(publickey:公钥)私有密钥(privatekey:私钥)公......
  • 【爬虫逆向】HTML里面提取的JSON怎么解析不了?
    我们在开发爬虫的过程中,经常发现有一些网站,会直接把数据以JSON的形式,通过<script>标签放到页面源代码中。如下图所示:有时候请求URL拿到HTML的过程比较麻烦,有些同学习惯先把HTML复制到代码里面,先把解析的逻辑写好,然后再去开发请求HTML的代码。这个思路本身是没有什么问题的,于是......
  • 某苏人社异步JS逆向加解密分析(sm2+sm3+sm4)
    前期准备网址:aHR0cHM6Ly9ycy5qc2hyc3MuamlhbmdzdS5nb3YuY24vaW5kZXgv目标:接口请求内容加密和响应内容解密请求头加密参数Web-Encrypt-Response-Encrypt-Key和Web-Encrypt-Sign涉及内容:jsworker多线程通信axios网络请求库国密sm2、sm3、sm4Axios网址:Axios这......
  • 【JS逆向】爬虫必备hook脚本
    特别声明:本公众号文章只作为学术研究,不用于其它不法用途;如有侵权请联系作者删除。Hook是一种钩子技术,在系统没有调用函数之前,钩子程序就先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,也可以强制结束消息的传递。简单来说,修改原有的JS代码就是Hook。Hook技......
  • 机器学习之模型评估——混淆矩阵,交叉验证与数据标准化
    目录混淆矩阵交叉验证数据标准化        0-1标准化        z标准化混淆矩阵混淆矩阵(ConfusionMatrix)是一种用于评估分类模型性能的工具。它是一个二维表格,其中行表示实际的类别,列表示模型预测的类别。假设我们有一个二分类问题(类别为正例和反例),......
  • JavaScript代码安全性提升:选择和使用JS混淆工具的指南
    https://toolin.cn/jsfuck https://maimai.cn/article/detail?fid=1827257627&efid=382Pa05uQ_i7jAl6rmq5tg 在Web开发中,JavaScript是一种常用的脚本语言,然而,由于其代码容易被他人轻易获取和修改,为了保护JavaScript代码的安全性和版权,我们需要使用JS混淆工具。本文将介绍什......
  • 绿色免费离线版JS加密混淆工具 - 支持全景VR加密, 小程序js加密,
    自从我们推出在线版的免费JS加密混淆工具以来,受到了广大用户的热烈欢迎。特别是全景开发人员,他们使用该工具加密VR插件的JS代码,添加域名锁等,都非常有效地保护了插件的代码资源。最近,我们收到了许多用户的反馈,大家希望能够提供一款桌面版的JS加密混淆工具,以便在离线状态下使用。......
  • 淘宝js逆向分析
    本文仅用于探讨如何实现淘宝的爬虫技术在开发者工具栏中首先找到携带信息的网址然后分析负载,很明显的加密参数是sign,或者是appkey,然后全局搜索sign: 开始打断点,刷新页面,构成部分js代码如下vareS="//"+(ey.prefix?ey.prefix+".":"")+(ey.subDomain?ey.subD......