当前位置:首页 > 体育

loadlibrary LoadLibrary:一款能够允许Linux程序从DLL文件中加载或调用函数的工具

介绍

今天推荐给你的这个代码库将允许原生的Linux程序从一个WindowsDLL文件中加载或调用函数。下面是一个简单的演示例子。我把Windows Defender“移植”到了Linux平台。

$ ./mpclient eicar.com

main():扫描eicar.com...

EngineScanCallback():扫描输入

引擎扫描回调():威胁病毒:DOS/EICAR _测试_文件已识别。

工作机制

项目源代码的peloader目录包含一个来自ndiswrapper的自定义PE/COFF加载器,可以完成重定位和导入操作,并提供一个API(dlopen)。注意:代码支持使用gdb调试。

该工具的目的是提高Linux系统平台的可扩展性和Windows代码库的模糊化效率。测试的候选可以是视频编解码器、解压缩库、病毒扫描工具或图片解码器等。

-C++异常扫描和处理;

-从IDA加载额外的符号链接;

-使用GDB进行调试、设置断点和堆栈跟踪;

-设置运行时函数钩子;

-扫描内存损坏;

如果需要从外部添加函数,可以自己写存根,实现起来非常简单方便。

工具的用途

事实上,在Windows平台上进行分布式、可扩展的Fuzzing测试是非常困难和低效的,尤其是那些终端安全产品,因为它们使用非常复杂的组件,这些组件将跨内核和用户进行通信和互连空。如果我们想要模糊化这类产品或收集数据,我们需要调用整个虚拟化的Windows环境。

但是在Linux平台上,这一切都不是问题。通过测试后,我发现可以把Windows的杀毒组件移植到Linux平台上。这样,我可以用很少的开销测试代码,我们可以轻松地扩展测试。

当然,这只是我个人的看法,但我也认为Linux平台上有很多强大的工具。

Windows Defender

MsMpEng是一种恶意软件保护服务,默认情况下在Windows8、8、10和Windows Server 2016中启用。此外,微软安全软件包、系统中心端点保护和其他微软安全产品都使用相同的核心引擎。

负责扫描和分析的MsMpEng的核心组件叫做mpengine,但mpengine本身也是一个巨大而复杂的攻击面。这个组件由大量处理器、可执行文件、各种架构的系统模拟器和多语言解释器组成,但这些代码都可以被远程攻击者访问。

建造

我们可以输入make命令来构建测试客户端:

$ make

依赖

请注意后缀。i686和:i386非常重要。我们需要一个32位代码库来使用32位dll。

您可以从以下页面下载32位防恶意软件更新文件:

以下链接应该指向我们需要的文件:

点击此链接后,我们将下载一个名为mpam-fe.exe的文件。接下来,我们可以通过命令cabextract将文件提取到引擎目录中:

$ cabextract mpam-fe.exe

提取柜:mpam-fe.exe

extractingMPSigStub.exe

extractingmpavdlta.vdm

extractingmpasdlta.vdm

extracting pav base . VDM

extractingmpasbase.vdm

extractingmpengine.dll

全部完成,没有错误。

您可以使用以下命令检查当前产品版本号:

$ EXIF tool mpengine.dll | grep“产品版本号”产品版本号:1.1.13701.0

运行

主引擎加载器被命名为mpclient,它可以接受文件名作为扫描参数:

$ ./mpclient netsky.exe

main():扫描netsky.exe...

EngineScanCallback():扫描输入

EngineScanCallback():威胁蠕虫:Win32/Netsky。P @ mmidentified。

另外,类似的工具还有mpstreamfuzz和mp。

接受初步测试

如果您想调试崩溃或设置断点,您可以遵循下面给出的步骤。首先,您需要生成一个地图文件。

您可以使用以下命令生成地图和idb文件:

>。idaw-A-P+-S " create map . IDC MP engine . map " MP engine . dll

如果您的地图文件是在Windows平台上生成的,您将获得一个CRLF线终止符,您可以使用以下命令修复此问题:

$ dos2 UNIX MP enginee . map

当您在gdb命令下运行mpclient时,它会自动检测调试器并打印出您需要输入的命令:

$ gdb -q ./mpclient

(gdb) r testfile.txt

启动程序:mpclientmain():GDB:add-symbol-file engine/mpenginee . dll0xf6 af 4008+0x 1000 main():GDB:shell bash genmapsym . sh 0xf6 af 4008+0x 1000 symbols _ 19009 . o & lt;GDB:add-symbol-file symbols _ 19009 . o 0

程序接收信号信号陷阱,跟踪/断点陷阱。

mpclient.c:156主寄存器0x 0804d 213(argc = 1,argv = 0xffffcc64,envp = 0xffffcc6c)

156 _ _ debug break();

(gdb)

如果您输入gdb显示的命令,您将获得以下符号文件:

(gdb)add-symbol-file engine/mpengine.dll 0x F6 af 4008+0x 1000从文件“engine/MP engine . dll”添加符号表,网址为

。text _ addr = 0xf6 af 5008从发动机/mpengine.dll读取符号...完成。

(gdb)shell bash genmapsym . sh 0xf6 af 4008+0x 1000 symbols _ 19009 . o & lt;MP enginee . map

(gdb)add-symbol-file symbols_19009.o 0从文件“symbols _ 19009 . o”添加符号表,网址为

。text _ addr = 0x0Reading symbols from symbols _ 19009 . o...完成。

(gdb)p as3 _ parse metadata _ swf _ vars _ t

= {void (void)} 0xf6feb842<。as3 _ parse metadata _ swf _ vars _ t & gt。

接下来,请输出下面一行命令继续:

(gdb) c

如果你想在gdb中使用硬件断点,可以用hb或hbreak代替原来的break命令。

(gdb)b as3 _ parsemethod info _ swf _ vars _ t

断点1位于0xf6feb8da(gdb) c

继续。

main():扫描测试/输入. swf...

EngineScanCallback():扫描输入

as3_parsemethodinfo_swf_vars_t()中的断点1,0xf6feb8da

(gdb)Bt # 0 0 xf6 feb 8 da in as3 _ parsemethod info _ swf _ vars _ t()# 1 0 xf6 dbad 7f inSwfScanFunc()# 2 0 xf6 d 73 EC 3 inufsscanner wrapper _ SCAN file _ SCAN result _ t()# 3 0 xf6 D6 c 9e 3 Inufs client request _ fscan _ SCAN _ REPLY()# 4 0 xf6 D6 a 818 Inufs node _ ScanLoopHelper _ wchar _ t()# 5 0x F6 D6 a 626 Inufs node _ Analyse _ uf)

(gdb) x/3i $pc

= >;0xf6feb8da <。as3 _ parsemethod info _ swf _ vars _ t+7 & gt;:lea ebx,[edx+0x1c]

0xf6feb8dd<。as3 _ parsemethod info _ swf _ vars _ t+10 & gt;:推送esi

0xf6feb8de<。as3 _ parsemethod info _ swf _ vars _ t+11 & gt;:mov edx,ebx

Wine和Winelib

需要注意的是,这个项目并不能完全取代Wine或者Winelib。Winelib可以将Windows sc++项目移植到Linux平台,Wine可以允许用户在Linux平台上运行Windows应用。但是这个项目可以允许原生Linux代码加载简单的WindowsDLL。

许可

GPL2

*参考资料来源:github,FB边肖Alpha_h4ck汇编,请注明来自FreeBuf.COM

1.《loadlibrary LoadLibrary:一款能够允许Linux程序从DLL文件中加载或调用函数的工具》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《loadlibrary LoadLibrary:一款能够允许Linux程序从DLL文件中加载或调用函数的工具》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1482097.html

上一篇

章必功 深圳红岭教育集团成立 章必功出山出任理事会理事长

下一篇

北京日报电子版 北京日报社数字报刊平台

文件打不开是什么原因 微信文档打不开是怎么回事?

文件打不开是什么原因 微信文档打不开是怎么回事?

最近有个小伙伴问,微信聊天时,朋友发的文档打不开,QQ浏览器按提示打不开。我该怎么办?  微信其实不支持这种格式的文件,需要第三方软件查看; 你只需要点击屏幕右上角的快捷图标-[打开其他应用]-选择Office或手动阅...

中国科学院院长 中科院院长:没有任何一个文件说院士不用退休

中国科学院和中国工程院院士大会正在北京举行。根据会议安排,中国科学院和中国工程院都将修改院士章程。章程的修改会涉及院士共同选择机制、退休退出等热点问题。这也成为本次会议的焦点之一。中国科学院和中国工程院是中国科技领域和...

中科院院长 中科院院长:没有任何一个文件说院士不用退休

中国科学院和中国工程院院士大会正在北京举行。根据会议安排,中国科学院和中国工程院都将修改院士章程。章程的修改会涉及院士共同选择机制、退休退出等热点问题。这也成为本次会议的焦点之一。中国科学院和中国工程院是中国科技领域和...

抑郁症心理测试题 2020年最新抑郁症测试30题,都来测试一下自己吧

  • 抑郁症心理测试题 2020年最新抑郁症测试30题,都来测试一下自己吧
  • 抑郁症心理测试题 2020年最新抑郁症测试30题,都来测试一下自己吧
  • 抑郁症心理测试题 2020年最新抑郁症测试30题,都来测试一下自己吧

鹤氅的读音 部编版九年级语文上册第一单元测试卷

九年级语文第一册单元试卷 卷一(选择题40分) 一、(12分,每小题2分) 1.下列单词的正确发音是() A.妖娆(里奥)折叠(希)汗(汉)风度翩翩(潘ɡ) B.与众不同、风骚、清新、任性(mǎnɡ) C.少(许n),...

正常眼睛的红血丝图 一张图测试你的眼睛是否正常~花一分钟试试看~

正常眼睛的红血丝图 一张图测试你的眼睛是否正常~花一分钟试试看~

据说眼睛是心灵的窗户 但是窗户脏了。你可能很快就会找到它 但是眼睛有问题 很严重的时候经常被发现 以下图片 测试你的眼睛 你好吗  红绿色盲测试  近视测试  散光测试  老花眼测试  视力试验  黄斑变性试验  上述...

印太战略 美提前30年解密“印太战略”文件 赵立坚指出其中三大错误

新华社北京1月13日电中国外交部发言人赵指出,美国政府提前30年解密的美国“印度-太平洋战略”文件中存在“三大错误”,并表示应将其扫入历史垃圾堆。一个记者问了一个问题。据报道,美国政府提前30年解密了一份美国“印度-太...

iptables命令 16个系统管理员常用的iptables技巧

iptables命令 16个系统管理员常用的iptables技巧

Iptables提供了强大的功能来控制进出系统的流量。 现代Linux内核自带一个叫Netfilter的包过滤框架。网络过滤器可以允许、删除和修改进出系统的流量。iptables用户之间的命令行工具空基于此功能提供了强...