windows – x86逆转挑战中的打包和加密部分,没有绊倒熵启发式
任务:
我正在构建一组x86汇编逆向工程挑战,其中我已经完成了大约20个左右.他们只是为了娱乐/教育. 当前的挑战是更先进的挑战之一,并且涉及一些技巧,使得它看起来像EP实际上在正常程序中,但它实际上被包装在另一个PE部分中. 继承人的基本流程: >就像它是一个普通的MSVC应用程序一样开始. 这个想法是因为他们认为他们处于正常的程序流程中,这使得他们错过了反调试和后来的检查.无论如何,一切正常. 问题: 目前的问题是,OllyDbg和其他一些工具会查看打包部分并发现它具有较高的熵,并发出一个警告,说它已经打包了. PE头中的代码段指针是正确设置的,所以它不会从EP外部代码中得到它 – 它纯粹是一个熵分析的东西. 题: 有没有我可以使用的加密方法保留低熵,但仍然很容易在x86 asm中实现?我不想使用普通的xor,因为它太容易了,但我也不希望它像包装一样抓住它并让游戏消失. 我想到了一个类似洗牌器的东西(以某种方式生成一个密钥流并使用它来交换4字节的代码块),但我不确定这是否会起作用,甚至是简单的. 有人有任何想法吗? 解决方法
实际上,OllyDbg就像这个伪代码一样工作:
useful_bytes = number_of_bytes_in_section - count_bytes_with_values(0x00,0x90,0xCC) warn about compression if useful_bytes > 0x2000 and count_bytes_with_values(0xFF,0xE8,0x8B,0x89,0x83) / useful_bytes < 0.075 因此,避免该警告的方法是在压缩部分中使用值为0xFF 0xE8 0x8B 0x89 0x83的足够字节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Windows环境下搭建Snort+BASE入侵检测系统
- 解决Missing artifact com.microsoft.sqlserver:sqljdbc4:j
- 如何防止Emacs调整窗口大小?
- 【干货】Windows内存获取和分析---查找恶意进程,端口
- npm和cnpm (windows)安装步骤
- 脚本 – 如何停止在Windows中运行的vb脚本
- entity-framework – 使用Entity Framework Code First Mig
- 如何远程检测Windows已重新启动后完成补丁配置
- ggplot图例,Windows远程桌面中缺少颜色条
- 将列添加到CSV Windows PowerShell
- 什么版本的SignalR支持WebSockets?
- 在 windows 上使用 clion 调试 rust 代码
- windows – Delphi 7可以通过OLE Variant传递Int
- .net – 如何维护两个单独的项目,但将它们合并为
- windows-server-2008 – 如何启用命令行远程访问
- windows-server-2008 – 在Windows Server 2008上
- windows-server-2008 – 为什么我的域服务器(200
- 修复的位置无法在Windows Safari上运行
- winapi – 是否可以捕获带有Windows 7 DWM缩略图
- windows-server-2012 – 在没有AD的Windows Serv