分类: RE Note

30 篇文章

thumbnail
花指令的解析
1.反编译算法 线性扫描算法:逐行反汇编(无法将数据和内容进行区分),遇到跳转不会跳过去进行分析,而是继续分析下一行 递归行进算法:按照代码可能的执行顺序进行反汇编程序 2.花指令解析 花指令(JunkCode)指的是使用一些技巧将代码复杂化,使人难以阅读的技术 广义上: 花指令与代码混淆(ObfusedCode)同义,包括结构混淆、分支混淆、语句…
thumbnail
宏病毒学习(基于羊城杯DocCrack分析)
基本概念 宏 为了避免相同的重复操作设计的工具,利用简单的语法编写成宏,从而减少重复相同动作 宏病毒 寄存在文档或者模板宏当中的病毒,打开文档就会激活宏,驻留在normal模版上,从而进行传播 宏语言 VISUAL BASIC FOR APPLICATION(简称VBA),支持访问很多操作系统函数,,同时支持文档打开时自动执行宏 数据文件格式 .d…
thumbnail
VM逆向学习
1.基本原理 1.概述 这里的vm基本逆向,是一种解释执行系统或者模拟器 (并非vmware之类的虚拟机) 2.基本结构 1.vm_start 虚拟机的入口函函数,初始化虚拟机环境 2.vm_dispatcher 调度器,解释opcode,并选择对应的handle函数执行3.opcode 当handle执行完后会条回到这里,形成一个循环 3.opc…
thumbnail
try-catch-finally 用法
我在进行逆向的时候就遇到了将加密代码放在try,catch函数中进行隐藏,所以出现了无法反编译的情况,所以其前来学习其基本原理 1.try-catch-finally执行顺序 try中出现异常跳转到catch 若catch中出现异常则跳转到finall try或catch正常执行若存在return则先执行return的代码并保存返回值信息(基本类型…
TLS反调试
1.概念 线程局部存储(Thread Local Storage,TLS)是一种线程级别的存储机制,它允许每个线程在运行时都拥有自己的私有变量 这些变量只能被该线程访问,而不会被其他线程所共享 (在多线程编程中,使用线程局部存储可以避免竞争条件和锁等同步机制的开销,提高程序的性能和并发能力。线程局部存储通常通过使用操作系统提供的API来实现,比如W…
thumbnail
SMC加密
1.概述 1.SMC(Self-Modifying Code): 可以在一段代码执行之前先对它进行修改 2.实现背景: SMC技术在DOS时代非常流行,因为DOS时代更接近系统底层,大部分SMC以汇编来实现 3.实现原理: 代码以加密形式保存在可执行文件中,然后在程序执行时再动态解密,这样可以有效地对付静态分析 4.解决思路: 动态跟踪或者分析出解…
thumbnail
SMC的逆向示例学习
1.概述学习 SMC(Self Modifying Code)动态代码加密技术: 指通过修改代码或数据,阻止别人直接静态分析 然后在动态运行程序时对代码进行解密,达到程序正常运行的效果 2.隐藏加密原理以及处理 1.处理方法: 1.找到对代码或数据加密的函数后通过idapython写解密脚本 2.动态调试到SMC解密结束的地方dump出来 2.处理…
SEH异常处理以及反调试
seh反调试原本用于异常处理,也可以用于逆向工程的反调试 基于try excpt finally关键字的函数实现 1.异常处理方法 1.正常的异常处理方法 有处理代码顺利处理,没有seh则启动默认处理(终止进程) 2.调试运行的异常处理 调试器几乎拥有被调试者的所有权限,异常优先由调试器处理 此时调试器会暂停,处理异常后继续调试 处理方式: 调试器…
thumbnail
OLLVM控制流平坦化以及指令替换(基础工具)
一个比较专业的具体解答博客(ENGLISH) [D810: Creating an extensible deobfuscation plugin for IDA Pro (eshard.com) 基于llvm[LLVM基本概念入门-CSDN博客](https://blog.csdn.net/SiberiaBear/article/details/…
c语言实现基本自动走迷宫
1.基本使用思路 使用一些基本枚举变量 迷宫图可以以字符串输入或者矩阵输入 递归算法所以路径要保存然后逆序输出 2.算法 #include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <Windows.h>// 枚举一些关键常量,可…