浅结代码混淆2

news2024/11/26 1:47:33

文章目录

  • SMC 自解码
    • 什么是SMC?
    • 原理
    • 示例
    • 动调
  • mov混淆

SMC 自解码

什么是SMC?

简而言之,就是程序中的部分代码在运行之前被加密成一段数据,不可反编译,通过程序运行后执行相关的解码功能,对加密的代码数据进行动态解密,让其恢复正常功能。这样我们在采用静态分析时,看到的都是加密的内容,从而阻断了静态调试的可能性。简单理解就是n层解密
(不开玩笑感觉内嵌补丁可以用在这里(菜.jpg)

原理

通过 SMC 自解码技术可以实现程序的保护,同时也可以将一些特征代码变形隐藏
1)代码在二进制文件中就是字节码,本身也就是一段二进制数据
2)提前将一部分代码通过某些方式替换为加密数据
3)程序在被反编译的时候,核心代码就是一串数据,无法反编译,而程序在运行的时候又能成功将这段核心代码复原

示例

上题简单粗暴来理解
题目来源:北邮网安杯 re3
基本流程:32位无壳,丢ida

在这里插入图片描述

得知:
1)要求输入的字符串长度为28
2)对一个类似字符串数组的byte_403020进行异或
3)有传参动作,说明这个类似字符串数组的byte_403020其实是个函数

跟进byte_403020:

在这里插入图片描述

明显的不是函数,这就是对部分代码进行了加密处理,而异或操作是加密也是解密操作,直接反静态调试,那只能dbg了

动调

异或进行解密,两条push指令把参数压进栈中,调用解密后的函数
在这里插入图片描述

跟进这个解密后的函数,发现对输入字符串前几个字节进行比较,后卖面又是SMC的自解码

在这里插入图片描述

这里就不详细写过程了,大概就是遇到SMC自解码反静态的话直接动调即可

mov混淆

MOV这种混淆是怎样产生的呢?剑桥大学的Stephen Dolan证明了x86的mov指令可以完成几乎所有功能了(可能还需要jmp),其他指令都是“多余的”。受此启发,有个大牛做了一个虚拟机加密编译器。它是一个修改版的LCC编译器,输入是C语言代码,输出的obj里面直接包含了虚拟机加密后的代码。如它的名字,函数的所有代码只有mov指令,没有其他任何指令。
这个加密编译器在网上是开源的项目:
传送门

题目来源:AlexCTF 2017的re
这种题目的特征就是全都是mov指令
这样的题目,我们几乎无法直接阅读汇编代码,因此,我们只能另辟蹊径
在这里插入图片描述

首先查看字符串:
在这里插入图片描述

看到觉得肯定是有字符串比较的,查看一下到底有哪些地方调用了该报错字符串,从最后一个报错处开始往下找,可以看到明显 ’ } ’

在这里插入图片描述

之后全局搜索R2,即可得到正确的字符串
这道题就纯属纯靠眼睛来看,没有什么技巧可言
如下:
1、 字符串的搜索是最好的切入点
2、 MOV混淆是不会混淆函数的逻辑的。因此函数的逻辑还是不变的。
3、 大多数汇编代码的意思是可以猜测的。可以大概推测出具体操作了什么。
或者利用开源的工具来帮助分析:
传送门

想起之前也做过一道Mov混淆的但那道题好像更难点,下次更

参考文章:
传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/629924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx搭建Https反向代理,使用阿里云免费SSL证书 - Docker

Docker安装Nginx - 需要有域名 没有docker需提前安装docker,不知怎么安装的请自行百度。 1、拉取镜像 docker pull nginx2、去阿里云或者其他云服务提供商申请免费证书,申请到之后下载下来,上传到服务器 # 创建nginx-proxy目录 mkdir ngi…

软考A计划-系统架构师-官方考试指定教程-(13/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

IP签名档PHP开源版:轻松打造网站个性签名档

今天,我们将为大家介绍一个有趣的IP签名档项目。通过将源代码部署在服务器上,您可以轻松地为自己的社交媒体、论坛等地创建一个独特的签名档,使您的网站更加出彩! 接下来,我们将详细向大家展示如何搭建PHP开源版IP签名…

ASP.NET Core Web API入门之一:创建新项目

ASP.NET Core Web API入门之一:创建新项目 一、引言二、创建新项目三、加入Startup类,并替换Program.cs内容四、编辑Program.cs代码五、修改控制器的路由六、运行项目 一、引言 最近闲着,想着没真正从0-1开发过ASP.NET Core Web API的项目&a…

SpringMVC原理分析 | Hello程序

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! SpringMVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet; 拥有结构最清晰的 ServletJSPJav…

uni-app APP、html引入html2canvas截图以及截长图

下载安装html2canvas 方式一,https://www.bootcdn.cn/ CDN网站下载html2canvas插件 这里下载后放在测项目目录common下面 页面中引入 方式二、npm方式安装html2canvas 1、npm方式下载 npm i html2canvas2、引入html2canvas import html2canvas from html2can…

linux系统CAN驱动问题分析

在TI sam3354芯片上,使用3.13及4.19版内核,编译CAN驱动,加载启动后,查看有CAN设备,但无法直接使用ifconfig操作CAN设备,以下简单分析下问题。 加载驱动后,查看网络设备: 可以看到有…

分布式项目15 用户注册,单点登陆,用户退出dubbo来实现

用户注册 分析:当用户填写完成注册信息之后,将请求发送给前台服务器.之后前台消费者利用dubbo框架实现RPC调用。之后将用户信息传递给jt-sso服务提供者.之后完成数据的入库操作。 01.页面url分析 02.查看页面JS $.ajax({ type : "POST", url : "/…

煤矿安全防范,DTU为采矿过程提供实时数据支持

在当今快节奏的时代,采矿行业为我们提供了丰富的资源。然而,随着采矿作业的不断扩大和复杂化,我们也面临着一系列潜在的挑战。其中,数据传输和安全问题尤为突出。 想象一下,在一个繁忙的矿山中,海量的数据需…

让软件研发可视化可量化,华为云CodeArts持续加速企业研发转型

导读:软件开发工具从未像今天这样重要。 “没有度量,就没有管理。” (If you can’t measure it, you can’t manage it.) 管理学大师彼得德鲁克的话时刻提醒人们,度量是管理的必要条件。 在高科技领域,研发投入是企业核心竞争力的…

Linux常用命令——grep命令

在线Linux命令查询工具 grep 强大的文本搜索工具 补充说明 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本&…

【MySQL数据库 | 第十二篇】:约束

约束: 在MySQL中,约束是一种限制数据表中列值的规定。保证数据库中的数据正确,有效性和完整性。MySQL中的约束有以下几种: 1. 主键约束(Primary Key Constraint):主键是用于唯一标识表中每行记…

国内强大的智能语言模型AI

​ Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 前言 环境列表 视频教程 1.飞书设置 2.克隆feishu-chatgpt项目 3.配置config.yaml文件 4.运行feishu-chatgpt项目 5.安装cpolar内网穿透 6.固定公网地址 7.机器人权…

chatgpt赋能python:Python文件目录切换:简单易用的方法

Python文件目录切换:简单易用的方法 Python语言可以轻松地处理文件和目录。使用Python的os库可以方便地操作文件系统。Python在os库中提供了许多可以轻松完成文件和目录操作的函数,其中之一是os.chdir。os.chdir函数用于更改当前的工作目录。 为什么需…

使用阿里云OSS实现图片文件上传

说明&#xff1a;注册用户时&#xff0c;经常会用到上传头像。文件的上传/接收与一般文本数据不同。 一、创建Demo页面 先准备一个Demo页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片上传…

第三章 三段论:所有,有的。

第三章 三段论&#xff1a;所有&#xff0c;有的。 第一节 三段论-推结论 题-三段论-结构-推结论&#xff1a;所有A是B&#xff1b;所有B是C&#xff1b;得&#xff1a;所有A是C。&#xff08;最简单的模型&#xff09; 4.所有高明的管理者都懂得关心雇员福利的重要性&…

Linux目录结构(与window目录结构对比+绝对路径和相对路径)

一、Linux目录结构 Linux目录结构是一个标准化的文件系统层次结构&#xff0c;非常有组织性并且易于管理。而与Windows 操作系统不同&#xff0c;Linux将所有文件和设备都组织在一个单一的根目录下。以下是Linux的标准目录结构&#xff1a; /&#xff1a;根目录&#xff0c;包含…

<DB2>《DB2数据库健康检查》第3部分

《DB2数据库健康检查》第3部分 2 数据库对象检查2.12 检查是否需要对表和索引进行runstats(30天未作统计更新)2.13 检查表和索引是否需要重组2.14 查看表空间所在裸设备权限2.15 查看数据库备份进度 2 数据库对象检查 2.12 检查是否需要对表和索引进行runstats(30天未作统计更…

递归sql查询完整科目名称

已知表 科目编号 科目名称 1001 1001 现金 1002 1002 银行存款 10020100 0100 工商银行存款 100201000001 0001 工行重庆路支行 10020200 0200 建设银行存款 100202000001 0001 建行铁北支行 需要整理成 科目编号 科目称 科目全称 1001 现金 现金 1002 银行存款 银行存款 …

【OI学习笔记】基础算法-前缀和与差分算法

板块&#xff1a;基础算法、线性优化 难度&#xff1a;较易 前置知识&#xff1a;C基础语法 一、前缀和 1、定义 在一维空间中&#xff0c;对于一个数据总量为 n n n 的数组 a a a&#xff0c;有数据 a [ 1 ] , a [ 2 ] , a [ 3 ] , . . . , a [ n − 1 ] , a [ n ] a[1]…