花指令免杀

2024-03-04 09:10
文章标签 指令 免杀

本文主要是介绍花指令免杀,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近开始研究免杀技术,首先强烈推荐《黑客免杀攻防》一书,作者写的很接地气,非常有实战性的一本教材。我看了之后,对其中的一些思想和用到的技术比较有共鸣,是这段时间难得坚持看的一本书。

 

免杀中有一种花指令技术,意思就是将可执行文件反汇编,然后加入自己写的一串看似没有意义的,但是可以打乱执行顺序,从而不被杀毒软件捕获的一种技术。按照书中开始实战,但是发现有问题。每次用ollydbg加载可执行文件后会发现文件的首地址每次都发生变化,下面是第一次加载文件,ollydbg自动停在入口点上 ,地址是00FA178A:

 

下图是第二次加载文件,ollydbg自动停在入口点上 ,可以发现入口地址明显发生了变化。


 

 

入口地址的随机变化直接影响到了花指令能否正常使用,因为不管我们添加多少汇编代码进去,最后还是得跳转回到程序的原本入口地址的,如果不是一个固定的值的话,可以说这条路就走不下去了。后来突然想到我的操作系统是win7,是不是因为系统的安全特性导致的,记得以前在《0day安全:软件漏洞分析技术》中看到过一些,google发现果然是,微软称之地址随机化(ASLR),解决思路也很简单,因为win7地址随机化要能正常运行必须满足两个条件,其一操作系统支持(比如xp就不支持),其二,被添加花指令的程序在编译的时候就去掉这个选项(ASLR是个默认的编译安全选项),具体可以参考:http://www.freebuf.com/articles/system/15149.html?umynkbzrsrpldnrp

 

由于可执行文件是我自己写的,所以我很顺利的在编译属性中找到了这个编译选项,直接变为否即刻,见下图:


 

至此一个问题解决了,但是追求真理的过程永远不可能一帆风顺,接下去又碰到了个问题,但是我至今不知道为什么。问题是这样的,当我用ollydbg插入可执行代码,并保存回源文件后,第一次打开源文件会发现原本我修改的那些代码完全变了个样子,根本不是我插入的样子了,下图是我第一次插入的代码:


 

保存到可执行文件后,重新打开就变成了:


 

然后再次打开后,再重复同样的操作就没有问题了,虽然对花指令免杀的实战没有多大影响,最多是流程上多了一步,但我很想知道这个背后的原因,有哪位高人知道的望指教!

 

这篇关于花指令免杀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/772694

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

mysql中导入txt文件数据的操作指令

1 表tt的格式:    CREATE TABLE `tt` (   `ind` int NOT NULL auto_increment,   `name` char(100) default NULL,   PRIMARY KEY  (`ind`)  )   2 文件d.txt的内容示例:  1,a  2,b  3,c

可选择的反思指令微调

论文:https://arxiv.org/pdf/2402.10110代码:GitHub - tianyi-lab/Reflection_Tuning: [ACL'24] Selective Reflection-Tuning: Student-Selected Data Recycling for LLM Instruction-Tuning机构:马里兰大学, Adobe Research领

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

matlab一些基本重要的指令

重点内容 运行MATLAB的帮助demo,在Command Window 输入 “demo”,或在Launch Pad 选项卡“demos” 任何时候都可以: 清除Command Window内容:clc 清除Figure Window(图形窗口) clf 清除workspace 变量内容: clear 注意:M脚本文件和输入指令中的变量都在workspace中,为避免变量冲突,一般在

vue的v-slot指令使用总结

父组件代码:  <template><div id="app"><img alt="Vue logo" src="./assets/logo.png"><slotdemo> <template v-slot:a>this is a </template>asdad</slotdemo></div></template><script>import slotdemo from './compon

maven 指令之package 和install的区别

https://blog.csdn.net/zy103118/article/details/79901357   maven 指令之package 和install的区别 2018年04月11日 19:08:46 brave_zhao 阅读数:2018更多 个人分类: maven maven package 和 install 区别 原创 2016年08月18日 14:55:26