社区
进程/线程/DLL
帖子详情
如何改写一个EXE让其不能被注入DLL?
tonydong
2007-08-12 10:15:54
请各位高手给点提示 ... -3- 谢谢
或者注入个怎么类型的 DLL 让他来拦截 ?
...全文
385
10
打赏
收藏
如何改写一个EXE让其不能被注入DLL?
请各位高手给点提示 ... -3- 谢谢 或者注入个怎么类型的 DLL 让他来拦截 ?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hxfjb
2007-08-17
打赏
举报
回复
同意 feimingbiao()。
补充几种注入的方法:
1 QueueUserApc;
2 Native API HOOK;
feimingbiao
2007-08-17
打赏
举报
回复
没有什么特别好的办法。
Hook和Code Injection的方法很多,没有简单的方法可以有效并且安全的防止所有方法。比如楼上一些建议都是基于一种特殊Hook方法,比如Detour,IAT,CreateRemoteThread等等。枚举DLL就更不可靠了,很多DLL是执行到某个功能才能加载进来。 即使你能在Kernel Level防范,下Hook也可以把你的Hook摘掉,然后你还得写防止别人Hook摘掉你的Hook的Hook。。。
从实际角度也没什么必要,你的程序正常运行的假设是一个正常的操作系统层。这个系统层是不是被修改,不是你的程序关心的事情。当然技术讨论是另外一回事情。
aj3423
2007-08-16
打赏
举报
回复
程序开始运行 枚举当前读了哪些dll,然后创建一个线程,每隔5秒枚举一次 有不同的就exit(0)
呵呵 土方法
珍惜生命远离CPP
2007-08-16
打赏
举报
回复
简单的办法,让其他进程无法得到你的进程句柄,和窗口句柄。
HOOK这些相关的函数。
linuxpgy
2007-08-16
打赏
举报
回复
楼主的问题提的很好, 我这里有2种DLL注入方式的代码,看你能不能给破解掉:
http://waxb.blog.com.cn/archives/2007/APIHook2.shtml
两种方法各自使用的关键函数:
1.SetWindowsHookEx
2.CreateRemoteThread
taianmonkey
2007-08-15
打赏
举报
回复
通过文件过滤驱动最彻底!也可使用hook CreateRemoteThread的方式
yjgx007
2007-08-13
打赏
举报
回复
http://www.vckbase.com/document/viewdoc/?id=1694
wltg2001
2007-08-13
打赏
举报
回复
注入是系统的事,应该没办法.
龙凤呈祥焱
2007-08-13
打赏
举报
回复
如果只改写EXE,基本上,没可能。
zhaoyu_me
2007-08-13
打赏
举报
回复
API Hook就可以
vb6
dll
注入
首先确认你的操作系统为2k以上,否则程序
不能
将
dll
注入
到其它线程中,甚至会出现其它问题。 文件夹中包含4个.rar压缩包、
一个
.
exe
文件和
一个
.
dll
文件,要演示程序可以直接运行.
exe
文件,在界面上点击『运行记事本』按钮,等记事本运行后再点击『
注入
远线程』按钮,这时记事本会弹出
一个
对话框,提示“
DLL
_PROCESS_ATTACH”,说明.
dll
已经被
注入
并且被调用了,随后再弹出
一个
对话框,显示的是当前进程加载的所有模块的文件名,当然其中也包含我们的.
dll
文件,之后弹出对话框提示“
DLL
_THREAD_DEATH”,线程结束,当记事本进程结束,也就是关闭记事本以后会弹出“
DLL
_PROCESS_DEATH”的提示,.
dll
文件随之结束。 四个.rar文件分别是EnumModule.rar(遍历进程中所有加载模块的vb代码,nt版)、
Dll
Inject.rar(远线程
注入
的vb代码)、test
dll
.rar(由好人
改写
的遍历模块的vc代码,编译后得到.
dll
文件)和Win32Sdk.rar(vc的新版sdk,编译
dll
需要,好人提供)。
Detours Express源码(微软API HOOK库)
Detours是微软开发的
一个
函数库, 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是: 拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为
一个
已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数在Windows NT上编写了
一个
程序,该程序能使有“调试程序”的用户权限的用户成为系统管理员,附录利用Detours库函数修改该程序使普通用户即可成为系统管理员 (在NT4 SP3上)。 一. Detours的原理 ---- 1. WIN32进程的内存管理 ---- 总所周知,WINDOWS NT实现了虚拟存储器,每一WIN32进程拥有4GB的虚存空间, 关于WIN32进程的虚存结构及其操作的具体细节请参阅WIN32 API手册, 以下仅指出与Detours相关的几点: ---- (1) 进程要执行的指令也放在虚存空间中 ---- (2) 可以使用QueryProtectEx函数把存放指令的页面的权限更改为可读可写可执行,再
改写
其内容,从而修改正在运行的程序 ---- (3) 可以使用VirtualAllocEx从
一个
进程为另一正运行的进程分配虚存,再使用 QueryProtectEx函数把页面的权限更改为可读可写可执行,并把要执行的指令以二进制机器码的形式写入,从而为
一个
正在运行的进程
注入
任意的代码 ---- 2. 拦截WIN32 API的原理 ---- Detours定义了三个概念: ---- (1) Target函数:要拦截的函数,通常为Windows的API。 ---- (2) Trampoline函数:Target函数的复制品。因为Detours将会
改写
Target函数,所以先把Target函数复制保存好,一方面仍然保存Target函数的过程调用语义,另一方面便于以后的恢复。 ---- (3) Detour 函数:用来替代Target函数的函数。 ---- Detours在Target函数的开头加入JMP Address_of_ Detour_ Function指令(共5个字节)把对Target函数的调用引导到自己的Detour函数, 把Target函数的开头的5个字节加上JMP Address_of_ Target _ Function+5作为Trampoline函数。例子如下: 拦截前:Target _ Function: ;Target函数入口,以下为假想的常见的子程序入口代码 push ebp mov ebp, esp push eax push ebx Trampoline: ;以下是Target函数的继续部分 …… 拦截后: Target _ Function: jmp Detour_Function Trampoline: ;以下是Target函数的继续部分 …… Trampoline_Function: ; Trampoline函数入口, 开头的5个字节与Target函数相同 push ebp mov ebp, esp push eax push ebx ;跳回去继续执行Target函数 jmp Target_Function+5 ---- 3. 为
一个
已在运行的进程装入
一个
DLL
---- 以下是其步骤: ---- (1) 创建
一个
ThreadFuction,内容仅是调用LoadLibrary。 ---- (2) 用VirtualAllocEx为
一个
已在运行的进程分配一片虚存,并把权限更改为可读可写可执行。 ---- (3) 把ThreadFuction的二进制机器码写入这片虚存。 ---- (4) 用CreateRemoteThread在该进程上创建
一个
线程,传入前面分配的虚存的起始地址作为线程函数的地址,即可为
一个
已在运行的进程装入
一个
DLL
。通过
Dll
Main 即可在
一个
已在运行的进程中运行自己的代码。 二. Detours库函数的用法 ---- 因为Detours软件包并没有附带帮助文件,以下接口仅从剖析源代码得出。 ---- 1. PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction) ---- 功能:从一
DLL
中找出一函数的入口地址 ---- 参数:pszModule是
DLL
名,pszFun
Windows进程常用
DLL
模块
注入
技术
课程结合多种Windows进程常用
DLL
注入
技术。远程线程
注入
APC
注入
,异步调用过程,向目标线程插入待执行任务从而完成
注入
。窗口消息
注入
,指定窗口进程
注入
,与全局钩子
注入
类似。环境块
注入
,获取进程上下文信息,直接性修改程序执行流程完成
注入
。进程入口点
注入
,在程序初始化的时机前将
dll
模块文件
注入
至目标主线程。进程调试级
注入
,涉及调试器相关功能调用知识点
dll
模块重定位内存
注入
,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。导入表
注入
,涉及PE相关知识点,增加区段,移动导入表,增加导入表、增加导出函数,修复表项数据等。内核驱动级
Dll
模块
注入
技术,内核驱动入门扩展。
detour 2.1
Detours是微软开发的
一个
函数库, 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是: 拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 为
一个
已在运行的进程创建一新线程,装入自己的代码并运行。 ---- 本文将简介Detours的原理,Detours库函数的用法, 并利用Detours库函数在Windows NT上编写了
一个
程序,该程序能使有“调试程序”的用户权限的用户成为系统管理员,附录利用Detours库函数修改该程序使普通用户即可成为系统管理员 (在NT4 SP3上)。 一. Detours的原理 ---- 1. WIN32进程的内存管理 ---- 总所周知,WINDOWS NT实现了虚拟存储器,每一WIN32进程拥有4GB的虚存空间, 关于WIN32进程的虚存结构及其操作的具体细节请参阅WIN32 API手册, 以下仅指出与Detours相关的几点: ---- (1) 进程要执行的指令也放在虚存空间中 ---- (2) 可以使用QueryProtectEx函数把存放指令的页面的权限更改为可读可写可执行,再
改写
其内容,从而修改正在运行的程序 ---- (3) 可以使用VirtualAllocEx从
一个
进程为另一正运行的进程分配虚存,再使用 QueryProtectEx函数把页面的权限更改为可读可写可执行,并把要执行的指令以二进制机器码的形式写入,从而为
一个
正在运行的进程
注入
任意的代码 ---- 2. 拦截WIN32 API的原理 ---- Detours定义了三个概念: ---- (1) Target函数:要拦截的函数,通常为Windows的API。 ---- (2) Trampoline函数:Target函数的复制品。因为Detours将会
改写
Target函数,所以先把Target函数复制保存好,一方面仍然保存Target函数的过程调用语义,另一方面便于以后的恢复。 ---- (3) Detour 函数:用来替代Target函数的函数。 ---- Detours在Target函数的开头加入JMP Address_of_ Detour_ Function指令(共5个字节)把对Target函数的调用引导到自己的Detour函数, 把Target函数的开头的5个字节加上JMP Address_of_ Target _ Function+5作为Trampoline函数。例子如下: 拦截前:Target _ Function: ;Target函数入口,以下为假想的常见的子程序入口代码 push ebp mov ebp, esp push eax push ebx Trampoline: ;以下是Target函数的继续部分 …… 拦截后: Target _ Function: jmp Detour_Function Trampoline: ;以下是Target函数的继续部分 …… Trampoline_Function: ; Trampoline函数入口, 开头的5个字节与Target函数相同 push ebp mov ebp, esp push eax push ebx ;跳回去继续执行Target函数 jmp Target_Function+5 ---- 3. 为
一个
已在运行的进程装入
一个
DLL
---- 以下是其步骤: ---- (1) 创建
一个
ThreadFuction,内容仅是调用LoadLibrary。 ---- (2) 用VirtualAllocEx为
一个
已在运行的进程分配一片虚存,并把权限更改为可读可写可执行。 ---- (3) 把ThreadFuction的二进制机器码写入这片虚存。 ---- (4) 用CreateRemoteThread在该进程上创建
一个
线程,传入前面分配的虚存的起始地址作为线程函数的地址,即可为
一个
已在运行的进程装入
一个
DLL
。通过
Dll
Main 即可在
一个
已在运行的进程中运行自己的代码。 二. Detours库函数的用法 ---- 因为Detours软件包并没有附带帮助文件,以下接口仅从剖析源代码得出。 ---- 1. PBYTE WINAPI DetourFindFunction(PCHAR pszModule, PCHAR pszFunction) ---- 功能:从一
DLL
中找出一函数的入口地址 ---- 参数:pszModule是
DLL
名,pszFunction是函数名。 ---- 返回:名为pszModule的
DLL
的名为pszFunction的函数的入口地址 ---- 说明:DetourFindFunctio
软件病毒特征码定位软件multiCCL
特别说明: 本软件谢绝任何支持或使用3721(及及该公司其他产品如雅虎助手等)的人士使用。 multiCCL by niu-cow in NE365 开发调试环境及工具 : win2k+sp4 dev-cpp 4.992 Lcc_win32 MASM32 v9.0 Radasm ollydbg 1.10 winHex 12.5 包含文档: 1. multiCCL_f.
exe
文件特征码专用版 2. multiCCL_m.
exe
内存特征码专用版 3. multiCCL_inj.
exe
注入
代码块内存定位专用版 4. memtest.
exe
用作内存定位时加载
dll
或运行
exe
或向目标进程
注入
的辅助程序 (为了防止主程序被杀毒软件Kill,用了远程线程
注入
) 5. AutoStartScan
Dll
.
dll
自动操作模块,使得部分操作自动化 6. multiCCL_readme.txt 本说明文档 7. multiCCL原理图示.htm 基本原理图示 功能: 原来已有的 文件特征码定位功能 (对 PE文件 和 非PE文件)--此功能已较稳定 本版新增功能:内存特征码定位(对PE文件)---------此功能测试中 因为现在杀毒软件针对特征码定位器设置了某些干扰,最终决定把文件定位和 内存定位做成两个独立的部分。 其实代码基本一样的,只为方便日后的维护和升级。 ----------------------------------- ......内存定位.重要提示....... 1.定位期间不要浏览任何放有病毒样本的文件夹 以免被杀毒软件的实时监控删掉 2. 现在打开杀毒软件的实时检测(保护级别在自定义中设置得严格些) 实时检测的执行动作可设置为: a. 提示用户操作 b. 禁止访问并删除 推荐选 a ,千万不要选“仅禁止访问”,“隔离”也不要选 3. 当然也可以按提示手动扫描内存 执行动作设为“仅报告”或“提示用户操作” 只要杀毒软件报告检测结果就行了,不需要它删除或禁用什么 4. 防火墙不要监视远程线程 因为multiCCL为了避免主程序被杀毒软件kill,用远程线程加载样本 (另外,正在找有关驱动方面的资料) ------------------------------------ ------------------------------------ 现在重点测试内存特征码的定位功能。 通过后再添加。现在的界面也还有点马虎,用cmd界面也是为测试 方便,因为随时都可输出中间信息。 ((听 tankaiha 一说还真不想写GUI界面了)) 需要说明的问题是: 1. 开始定位
一个
样本时,如果发现样本目录中存在旧的记录文件, 程序会读取并认可 旧记录中的特征码。 如果想完全重新开始定位,应该先把旧的记录文件删除或改名, 之后再打开multiCCL 。 2. 输出目录里不要放置任何您想保留的文件,以免给您带来损失。 定位过程中将删除里面的一些文件。 另
一个
简单的做法是:先手动在样本所在目录下建
一个
名为 output 的子目录,然后在选择目录的对话框点 “取消”,这样输出文件就都放到这个output 目录下了。 3. 设置保护片段时,如果所保护的片段本身是独立的特征码,就会 导致定位失败,因为所生成的文件会全部被杀,而且一直如此。 所以在设置前, 先要确认所保护的片段不是独立的特征码。 v 0.100 beta 之后的版本用的是等分法,限制区域的优化效果, 对于文件特征码来说是很不明显的, 而对于内存特征码的定位还是比较明显的。 ; 要注意的是,文件定位每次提醒杀毒时,一定要把识别出的文件全部删除, 否则程序会判断错误的。(内存定位就没关系了) 记录文件格式: 只要注意以下几个字段和键值就可以了: [CharactorCodz] ;特征码总数 CharactorTotal= ;特征码的记录格式是 H_起始偏移_结束偏移_长度_…… ;一般只要注意 起始偏移 结束偏移 就够了。记录的是文件偏移, ; 用十六进制表示 ;特征码1 Codz1= ;特征码2 Codz2= ;…… ;当OK=1时表示定位成功完成,ok=0表示定位没有完成 ok= ----------- ;文件定位的记录文件是 multiCCL_f_Log.txt ;内存定位的记录文件是 multiCCL_m_Log.txt ;都放在样本文件所在的目录下。 ----------- ;看内存定位结果时,还有
一个
字段需要注意的: [antiLocateCodz] newCodz=1 OK=1 CharactorTotal= Codz1= Codz2= …… ;这是杀毒软件针对内存定位干扰码,( antiLocateCodz ) ;定位不出内存特征码或修改内存特征码无效时, ;可以考虑修改入口点(修改代码或转移入口点), ;若以上修改还是无效,则试试修改干扰码。 ;---------------------------- ;另外也请看看更新记录,里面也有部分说明 ; ; 同时也请帮助统计定位
一个
样本特征码所需的时间,大致记录下就行 ; 结果请反馈到: http://vxer.cn/bbs/read.php?fid=9&tid=112&page=1 ;----------------------------------------------- ;统计内容包括: ;-------- ;基本信息: 哪种杀毒软件的XXX文件定位(病毒库版本XXXX) ;1 样本文件大小: ;2 总共定位出特征码片段的数量: ;3 总共需要杀毒软件扫描几次: ;4 定位总用时: ;5 定位结果评价: 基本可用/有较大偏差/很不可靠 ;---------------------------------------------- ;BTW: 本程序针对的目标是杀毒软件的复合特征码的定位, 当然也包括单一特征码了。 ;免责声明:本程序只供学习,不得用于商业。本程序可能存在某些缺陷, 及其他可能隐含的问题, 使用中可能造成的一切后果,均由使用者自行负责。 如果您对此很在意则请勿使用。 ;感谢您的测试,使用中请保留软件文档的完整,发现任何问题请到NE365的BBS上反馈。 ;(借用一下NE365的空间 http://vxer.cn/bbs ,一并致谢NE365 ;及各位网友的帮助和测试 ,大家多多支持NE365吧) ; ;特别说明:本软件谢绝任何支持或使用 3721 的人士使用。 niu-cow 2006-05-22 --------------------------------------------- 大致上找到了特征码没完没了的原因了 很可能是因为保护区域设置得过大,其中含有相当数量的隐含病毒特征, 导致启发式扫描的极高的实现机率。 实际测试中也发现当没有设置保护区域时, 定位出的特征码就很有限。 看来,设置合理的保护区域,对于定位是非常重要的, 尤其是针对“启发式扫描”(NOD32称之为“高级智能侦测模式”)的定位。 尽管以上只是猜测,不过本人认为这下被猜中了。 niu-cow 2006-05-31 20:08 ---------------- 在tanknight(myCCL的作者)的BLOG上看到NOD32定位的有关讨论,据说定位 精度太高时,对NOD32的定位往往失败。一般控制在8--16字节为宜。 依照这个原理增加了个控制定位精度的模块,重复的现象有所减少,但 问题好象还没有解决。 niu-cow 2006-06-10 17:04 ------------------------------------------------------------------ ======================================================================================== ------------------------------------------------------------------ 更新历史: v 1.200 (当前版本) 1.为文件特征码定位部分增加了模拟鼠标键盘动作的自动操作模块, 这下可以在定位时抽空喝杯开水了(有关说明在模块的设置界面) 建议先手动操作定两三个特征码,之后设置使用自动操作 2.内存定位时
exe
的加载方式作了改变,这个版本用CREATE_SUSPEND参数 使进程或线程创建时处于挂起状态(类似于被调试器加载,因为 据网友反馈说部分杀毒软件的内存扫描对于OLLYDBG加载的程序 起作用,而对于MYCCL、multiCCL、CCL等的加载不起作用)。
dll
的加载没改(因为目前还没找到更好的方法) 注:本版的memtest.
exe
、memtiCCL_m.
exe
、multiCCL_inj.
exe
和之前的版本均无法兼容,不要混用。 2007-07-17 v 1.150 1.解决了memtest.
exe
被杀时,主程序的SendMessage无法返回的问题 2.为
注入
型的提升权限(只有当拥有Administrators以上权限时才起 作用) 这样就可以
注入
某些系统进程。 注:本版的memtest.
exe
、memtiCCL_m.
exe
、multiCCL_inj.
exe
和之前的版本均无法兼容,不要混用。 2006-11-29 v 1.140 1.修正了第一次生成Except.txt(用于设置保护区域定位精度等)时, 未能生成完整的模板,导致很多使用者第一次使用时无所适从, 2.将内存定位的
一个
容易引起误解的“判断……”改为“将判断……” (以上两处BUG感谢网友woaicomputer等的反馈) 3.增加了定位
注入
数据块的特征码的功能(主要用于对付flux等) 方法是:a 想办法从内存中抓取
注入
的数据块 (这个要自己想办法) b 用multiCCL_inj.
exe
处理数据块并
注入
了目标进程, 结合杀毒软件扫描内存,进行判断定位 注:memtest.
exe
再次升级,以适用于multiCCL_inj.
exe
2006-11-15 v 1.130 (仅针对内存定位模块) 1.改变
EXE
的加载方式为创建进程(原来用LoadLibrary) 2.增加对保护区域设置的检测,这样加载失败的机率更少 (本版的 multiccl_m.
exe
和 memtest.
exe
与过去的版本不兼容) 2006-11-5 v 1.120 (仅针对内存定位模块) 因为有的杀毒软件监视远程线程,用
注入
法要先关闭这个监视 感觉这样有些麻烦,改用发消息让宿主程序主动加载 ( 此版的 multiccl_m.
exe
和 memtest.
exe
得配合使用了) 2006-10-23 v 1.110 (仅针对内存定位模块) 有网友(无涯)反馈说内存定位时有问题 发现问题的系统是WIN2003 本人在WIN2K+SP4下测试未发现问题 从出错截图看,问题很可能在杀进程的函数 检查源代码,只发现
一个
进程句柄没有及时关闭,修正了这个函数, 作为试探性修改,看看问题是否解决。 2006-07-14 v 1.100 : 1- 修正了处理干扰码的方式,并在记录中用~~作标记,或许有点用。 (注:干扰码也可能是特征码的一部分) 2- 修正了定位头端时的还原方式。 3- 生成文件时增加一秒停顿。 这个版本的两处修正都只是试探性的修改。 2006-07-04 v 1.010 : 仅修正了内存定位的模块,使其生成的文件数更少(定头端时) 这样每轮加载次数最多35次,绝大多数时候是28次 (尾端20次,头端8次) 文件定位仍用v 1.000版 2006-06-20 v 1.000 : 从本版本开始,已经是正式版了~~~~ 1- 记录文件文件名中 包含了样本文件名,以有所区别, 感谢pipapi的建议。 2- 增加了
一个
控制定位精度的功能。 具体是在Except.txt文件中改变dwX的值 当dwX=1 时精度为一字节(最高),如果存在旧的Except.txt 则请自行增加这个字段,如下(前后都不要有空格): [dwX] dwX=1 降低精度的目的是减少一些干扰(如NOD32的启发式扫描), 经实际测试发现仍然无法完全避免。 (一般降为 12-16 字节左右为宜,dwX的值用十进制) 保护区域设置的合适一些,不要太大才是最重要的。 2006-06-09 v 0.120 beta: 1- 实际使用中发现,杀毒软件的“启发式扫描” (NOD32的称“高级智能侦测模式”的扫描速度实在慢, 为提高效率,减少每次生成文件的数量, 当然多扫一遍了(以 1 MB 计算)。 这样一来,对磁盘空间的需求也减少了一半。不过现在 的硬盘都很大,不会在乎这点的。 此修正针对文件定位(也包括内存定位前的干扰码定位) 2- 提示音作了细小的调整。 2006-05-31 v 0.110 beta: 1- 增加了内存定位功能(二分法),这样每定位一处特征码 最多只需加载64次(其中定尾端20次,头端32次) 2- 修正了卸载方式。 3- 彻底屏蔽限制点区能。 4- 文件定位仍使用 v 0.100 beta 版 2006-05-25 v 0.100 beta: 1- 修正了winXP下当软件路径带空格时出错的问题, 感谢 最近的星球 的测试和反馈 2- 改用了等分法(原来用二分法),效率提高明显。 测试过程中发现的
一个
偶然的错误却解决了算法中的
一个
细节问题,进一步提高了效率(与理论效率相比) 激动ing ,每次最多可能生成64个文件 使用新版本时,把旧版本的记录文件重命名或删除吧, 以免造成潜在的冲突。 3- 增加了定位限制点的功能,就是说只定位限制点之前的部分 且直接从此点开始, 限制点之后的所有数据都将被随机数据串填充。 若需要保护某区数据,请与保护区域配合使用。 限制点的格式为 8 位的十六进制值,以表示文件偏移。 且只当标志设为1时起作用,限制标志为0时不起作用。 特别说明: 这个功能只是预留,目前测试表明没什么用处。 目前的版本只有文件定位功能,就不要使用限制点了。 4- 使用新算法的multiCCL版本号从 v 0.100 beta 开始。 目前只有文件定位功能。先测试BUG。 2006-05-22 v 0.017 beta-p: 再次作一小的修正,因为发现和卡巴对0.012版类似干扰, 这次是别的杀毒软件了,也不清楚原理是什么,干脆连 同干扰码一起定位了,这样还省心些。 (以后前面冒出的干扰码就不怕了, 今后的升级只要应付覆盖区冒出的干扰码就行了) 本BUG系astronomer反馈,致谢 2006-05-18 v 0.017 beta : 再次修正随机数据的生成方式,修正的效果有待测试 因为定位NOD32对彩虹桥英文1.02版的文件特征码时 发现有干扰。(感谢yxrx的测试) 2006-05-18 v 0.016 beta-p: 1-修正
一个
针对已找出的特征码的覆盖方式, 因为针对ewido定位时,发现特征码不断地“往前长”, 看看更改后能否通过。 (只为只是小的修正,界面上仍标识为 v 0.016 ) 感谢 honhon 的测试和反馈。 2-用LCC_win32+RadAsm重写宿主程序(内存定位用),体积 更小了。 2006-05-16 v 0.016 beta : 1-修正了随机数据串的生成方式 (感谢abc27的针对NOD32的测试) 2=修正了其他已发现的次要的BUG。 2006-05-13 v 0.015 beta : 1-增加了内存定位的功能,为防止加载样本时被杀毒软件关 闭,启动了
一个
靶程序,用远程线程
注入
到宿主进程 2-当样本文件所在目录存在旧的记录文件时,程序将读取旧 记录文件中所记录的已定位出的特征码,并认可这些特 征码。 新增这个功能主要是考虑到有些杀毒软件的特征码片段 的数量很大,每次从头再来显然太浪费时间了。 尤其是相对烦琐的内存定位,万一中途意外中断, 丢弃之前的结果从头再来是不可容忍的。 3-修正了一些已发现的BUG(比较次要,不影响使用) 4-针对杀毒软件的干扰做了些应对性的改变。 2006-04-30 v 0.014 beta : 1-改用随机数据串填充,因为发现有的杀毒软件用检测填充 0来反定位(他们动作蛮快的哈) 2-把记录文件放到要定位的样本文件所在的目录下了,因为 考虑到以后杀毒软件可能会检测
改写
记录文件来反定位, 和输出文件放在一起不妥。 3-修正了一处因优化中带来的定位重复造成失败的BUG 感谢frip反馈 4-增加了保护片段(或区域设置),这是为了对付NDD32这类 关联输入表的特征码。(设置方法软件会有提示的) (此功能效果有等测试,感谢111111113提供有关针对NDD32的建议) 因为此版修复和更新相对较大,就跳到0.014 版了,本来想写内存定位的, 不过这两天忙于对付杀毒软件的反定位,内存定位就留到下个版本了。 (其实很想休息几天的,有点累) 2006-04-24 v 0.012 alpha : 1-修正了记录中特征码长度多出
一个
字节的错误。 ( tandaiha发现 ) 2-当发现特征码片段的长度超过32byte时,就取这32位作为片段结果 反正只要篡改片段里的任何
一个
字节就行,定出这么长就够了, 发现有的杀毒软件的取样片段(如卡巴斯基 vs AngleShell ) 的长度有点不可思议,硬要找出片段的头端简直是浪费时间。 所以,在分析定位结果时,特征码片段的尾端一般是精确的, 当片段长度 <32bytes(记录中用的是十六进制的20) 时, 头端也是精确的,否则头端可能还在更前面。 反正记录结果对于修改来说,已经够用了。 2006-04-22 v 0.011 alpha : 重新排列了按键及暂停,便操作更简洁 2006-04-21 v 0.010 alpha : 原始版本,算法调试基本通过 2006-04-21
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章