Windows系统下载这三个文件:sigar-amd64-winnt.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib。放到jdk安装目录即可!
TinyTracer是一款功能强大的API调用跟踪工具,在该工具的帮助下,广大研究人员能够轻松实现API的调用跟踪。
一般来说,最直接的做法就是调用Win32 API函数,来动态的加载、获取函数地址、释放:
NanoDump是一款功能强大的MiniDump转储文件提取工具,在该工具的帮助下,广大研究人员可以轻松转储LSASS进程中的MiniDump数据。
举例: 例如,假设有一个应用程序叫做"example.exe",它依赖于名为"example.dll"的动态链接库。而"example.exe"在加载"example.dll"时没有使用绝对路径,而是仅仅指定了DLL的名称。攻击者可以将恶意的"example.dll"文件放置在与"example.exe"相同的目录下,当"example.exe"启动时,系统会先在当前目录中查找"example.dll"文件,如果找到,就会加载该文件并执行其中的恶意代码。 DLL劫持可以函数转发劫持也可以往完整DLL插入恶意代码,这里用的函数转发劫持,大致流程如下图所示: https://kiwings.github.io/2019/04/04/th-DLL%E5%8A%AB%E6%8C%81/ 2.2 劫持dbghelp.dll redis-server.exe在执行bgsave时,会先在应用目录查找dbghelp.dll,找不到再去system32目录下找: 而不管redis的权限是Administrator还是普通用户或者Network Service,它对自己的应用目录一定有写文件的权限,我们可以通过Redis的主从复制在应用目录里写入恶意DLL。 2.3 函数转发劫持 对DLL进行函数转发劫持需要导出原本DLL的函数和地址,以保证程序通过恶意DLL调用这些函数时不影响正常功能,DLL的导出函数一般比较多,用Aheadlib之类的工具可以自动化处理。 我这里用的是DLLHijacker,它会自动处理导出表并生成一个VS2019的项目,但这个python脚本有几个bug: https://github.com/kiwings/DLLHijacker (1) VS项目中文乱码: 修复:几个写文件的地方添加 encoding="utf-8"。 (2) 函数导出表有匿名函数的时候,会导致以下报错 [-]Error occur: 'NoneType' object has no attribute 'decode 修复:在几个for循环里添加函数名是否为空的判断可以解决这个问题。 (3) 生成C/C++代码时,没有使用目标DLL的绝对路径,只是用了DLL的名字填充LoadLibrary(),这是一个很严重的bug,会导致函数转发失败、Redis的功能受到影响从而只能劫持一次: 修复:我改成了根据输入的目标DLL路径自动填充。 如果没有使用原DLL的绝对路径,在Process Monitor可以看到,只会调用应用程序目录里的恶意DLL,并没有调用原本的system32下的dbghelp.dll: 从而redis的功能受到影响,导致redis的bgsave只能触发一次DLL调用,第二次bgsave的进程会被阻塞从而无法调用DLL,并且Redis关闭后将无法启动: 这也是网上部分师傅的文章写”不会影响redis运行 但会无法重启“的原因,因为他们也是用的DLLHijacker,并且没有发现有这个坑,这不仅会影响业务,而且只能劫持一次: 正常的DLL劫持不会影响程序的功能,可以劫持很多次,假如我第一次劫持想上线CS但是没有成功,那对面可能不出网,那我可能会再劫持打一个MSF的反向shell,都没成功我也可以继续尝试MSF盲打命令: 正常的DLL转发劫持如下,调用完应用程序目录里的恶意DLL后会调用原DLL: 0x03 漏洞利用 3.1 工具使用 工具下载地址: https://github.com/P4r4d1se/dll_hijack 如是是Windows 64位的Redis DLL劫持的话,可以直接用里面的VS2022版的dbghelp项目。 其他要用我修改后的DllHijacker.py和目标DLL路径生成VS项目: python3 DLLHijacker.py C:\Windows\System32\dbghelp.dll 下载安装VS2022,只用勾C++桌面开发: https://visualstudio.microsoft.com/zh-hans/downloads 打开生成目录里的sln文件,因为原本是VS2019的项目所以会提醒你升级,选确定,不然得另外安装v142的编译组件才能编译VS2019的项目: 打开后在源文件的dllmain.app,修改里面的shellocde就行,其他不用改: 3.2 出网——Cobalt Strike 如果Redis主机直接出网,或者能通其他已经上线CS的出网主机,那直接上CS是最好的选择,CS生成C语言的payload: 源文件的dllmain.app里把payload替换进去,然后选Release x64,生成——生成解决方案: 然后主从复制将dbghelp.dll写过去并bg
Windows端的java程序使用jni调用C++编写的库,原来实现过在Android和Linux端通过JNI调用C++程序,在Windows端没有实现过,这里记录下几个关键的点;
Shellcode是一个有趣的东西,我一直想使用miasm来学习很久了(因为几年前我在SSTIC上看到了第一次演讲),现在,我终于可以在这个新冠的夜晚里学习了。
EasyCVR是一款融合了我们EasyDSS、EasyNVR、EasyGBS平台所有性能的成熟流媒体视频平台,拥有前三款平台的接入协议(国标GB28181、RTSP/Onvif、RTMP、海康SDK、大华SDK、Ehome等协议),使得EasyCVR在应用场景中更加灵活方便和高效,同时EasyCVR不仅仅支持目前主流Windows,还支持Linux、Windows server等市面常用的系统。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/53322573
通俗说,PHP 扩展是增强 PHP 语言功能的插件。PHP 提供了编程语言的语法,比如分支、循环、函数、类等,这些是 PHP 本身所提供的。在某些情况下需要在 PHP 语言的基础上进行扩展,那么就需要通过 PHP 底层提供的数据结构和接口来开发 PHP 扩展,从而来补充或扩展 PHP 语言,使之更加的强大。当然了,PHP 本身就已经集成了一些基本的、强大的、优秀的 PHP 扩展。
简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的。
源 / 开源中国 简要介绍编写C/C ++应用程序的领域,标准库的作用以及它是如何在各种操作系统中实现的。 我已经接触C++一段时间了,一开始就让我感到疑惑的是其内部结构:我所使用的内核函数和类从何而来? 谁发明了它们? 他们是打包在我系统中的某个地方吗? 是否存在一份官方的C ++手册? 在本文中,我将通过从C和C ++语言的本质到实际实现来尝试回答这些问题。 C和C++是如何制订的 当我们谈论C和C++时,实际上是指一组定义(程序)语言应该做些什么,如何表现,应该提供哪些功能的规则。C/C++的编
*本文原创作者:zasdfgbnm,本文属FreeBuf原创奖励计划,未经许可禁止转载 故事是这样的,本文作者在美国某大学读书,学校IT部门要求我们如果Windows或者Mac OS要连接学校网络的话,必须安装SafeConnect客户端。 由于SafeConnect客户端不支持Linux系统,同时学校中Linux用户的数量相当多,所以Linux系统不需要安装任何客户端,直接就能访问网络,这是一个关键性的切入点。 这个客户端干的事情就是监视你的系统,确保你安装、启用并及时更新杀毒软件,确保你及时更新电脑上
项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子。无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中的模块实现某种功能。这个过程会牵涉到很多东西,本篇文章将简要的介绍一下该过程的一些问题。
C++静态库与动态库
最终目的是在Unity中与so文件进行交互处理,但是本篇文章需要先对so文件有一个基本的认识
前面一直想看该JNI的相关内容,但是发现JNI的资料还是偏少。后面发现JNI在安全中应用非常的微妙,有意思。
客户给了一些 C语言 写的 SDK 库,这些库打包成 .so 文件,然后我们使用 C# 调用这些库,其中有一个函数是回调函数,参数是结构体,结构体的成员是函数,将 C# 的函数赋值给委托,然后存储到这个委托中。
先来看一段话: DLL是Dynamic Link Library的缩写,意为动态链接库。 DLL文件一般被存放在C:WindowsSystem目录下。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。 当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。
最近在用DeepLearning4J(DL4J)尝试语音识别的深度学习,git DL4J的代码,用IntelliJ IDEA打开,配置好相关依赖后,运行包org.deeplearning4j.examples.test.Test的main,可以正常运行,但是有警告提示如下:
大家好,今天分享的是使用C/C++编写一个读取串口数据的代码,然后将其编译成Windows下的动态链接库(.dll文件),然后写一个简单的java demo来调用C/C++接口。
1.生成lib文件 首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加add.cpp以及add.h文件。 //sub.h #ifndef _SUB_H #define _SUB_H void sub(int a,int b); #endif //sub.cpp #include "sub.h" #include <iostream> void sub(int a,int b) { std::cout<<(a-b)<<std::endl; } 由于在工程中,没有main(
提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell。
一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正的理解。所以写下来,帮助自己理解下。
在 C:\Windows\System32 目录中 , 存放着 Windows 中的动态库 ;
前段时间有人在 opentelemetry-cpp 提出了api组件在动态库中单例无法工作的 issue ,( https://github.com/open-telemetry/opentelemetry-cpp/issues/1520 ) 。
MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能;通俗点讲就是讲一些linux编译器集成到了windows上,直接调用gcc,g++等等,功能组件如下图:
New -> Application -> Qt Console Application -> Choose
本文将通过一个经典的 “tensorflow找不到dll” 问题来入手,给大家一个如何找到缺失dll的办法,进而再分享一个windows上排查问题的好工具(因为大多开发者在windows上开发&在linux上部署,windows还是绕不过)。
介绍 今天给大家推荐的这个代码库将允许原生Linux程序从一个WindowsDLL文件中加载或调用功能函数。下面是一个简单的演示示例,我将Windows Defender“移植”到了Linux平台。 $ ./mpclient eicar.com main(): Scanning eicar.com... EngineScanCallback(): Scanning input EngineScanCallback(): Threat Virus:DOS/EICAR_Test_Fileidentified
之前在博文中介绍在python中如何调用tesseract ocr引擎,当时主要介绍了shell模式,shell模式需要安装tesseract程序,并且效率相对略低。
1. JNI概述 JNI 是 Java Native Interface 的简称 Java是跨平台的编程语言,但是在有些时候仍然是有需要调用本地代码(这些代码通常是由 C 与 C++ 编写的)。 JNI 是 Java 平台的一个功能强大的接口。这个 JNI接口提供了Java与操作系统本地代码相互调用的功能。 2. C/C++代码的步骤 在 Java 类中声明一个native方法 public native void sayHello(); 使用 javah 命令生成包含 native 方法声明的C/C++
今天为大家介绍一款基于.NET Core运行时实现的Windows HOOK库,CoreHook。
从2013年开始举办的Flare-On逆向挑战赛今年已经是第6届。今年的比赛共有12道题目,涉及Windows,.NET,Linux和Android上x86的各种架构。此外,这也是Flare-On历史上的第一次比赛中出现NES ROM的题目。该比赛是仅有的以Windows为中心的CTF竞赛之一。完成Flare-On逆向挑战也是笔者一直以来的目标之一,今年终于有时间去实现这个目标了。
CUI又称TUI,作为一个开发者和云主机这种服务性环境的使用者,无论有没有意识到,它都是装机时我们大多数情况下第一要装的。linux往往天然集成语言环境和包管理(语言级或系统桌面级),这使得云主机linux装机量往往占首位。相反在windows下没有这样一套东西,因为windows往往作为终端windows应用往往面向要求图形界面的普通用户。
CrossC2面向企业自身及红队人员的安全评估框架,支持CobaltStrike对其他平台(Linux/MacOS/...)的安全评估,支持自定义模块,及包含一些常用的渗透模块。
3.新建source.def (是为了在不同编译环境下都可以使用)
如果你对程序的性能要求比较高,或者觉得java的运行速度已经满足不了你,底层也可以采用C++来完成,使用JNI技术直接调用,会让你的程序有飞一般的感觉。前段时间做了调研,踩了几个坑,这里总结下,希望大家少走弯路。
NimPackt是一款基于Nim命令式编程语言开发的强大工具,该工具同时具备汇编程序封装功能以及Shellcode加载功能。
好了,luasocket的编译和部署就讲完了,做完上面这些步骤,就可以用luasocket来编写网络程序了。
想到rasp这类工具是基于java、php运行期的堆栈信息进行分析,可以尝试使用jni技术进行绕过。java技术栈中的jni的原理是使用java调用c、c++函数,具体实现的思路是jsp编译为class文件,该class通过jni技术调用另外一处dll里的函数绕过黑名单执行命令获取回显,即可实现rasp和安全防护软件的绕过。github地址:https://github.com/nanolikeyou/jniwebshell
邮件钓鱼通常出现在APT攻击里面,但是在日常生活中我们的邮箱也会经常出现一些钓鱼邮件,为了更好的了解原理,我在本地探索了一下宏上线钓鱼邮件,分享出来供师傅们交流。
在上一篇C#Make自动化构建-简介中,简单的介绍了下Cake的脚本如何编写以及通过Powershell在本地运行Cake脚本。本篇在此基础上,介绍下如何在CI环境中使用Cake。 1. Cake简介续 1.1 为Task添加注释信息 Cake的每一个Task都可以添加一项描述,用来解释它的用途。比如下面的示例: 1 Task("restore") 2 .Description("还原项目依赖") 3 .Does(() => 4 { 5 DotNetCoreRestore(soluc
RXTX 的下载可以到官网或者Fizzed,官网发现并没有64位的支持,但是在Fizzed中找到的2.2版的64,32的windows和Linux版本http://fizzed.com/oss/rxtx-for-java 1.windows下的串口调试 将rxtxParallel.dll、rxtxSerial.dll拷贝到%JAVA_HOME%安装目录bin目录下 将rxtxParallel.dll、rxtxSerial.dll拷贝到%JAVA_HOME%安装目录jre/bin目录下(eclipse开发时调用,减少麻烦) 将RXTXcomm.jar 拷贝到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar(开发时直接导入) 2.Linux下的串口调试 首先确定Linux处理器型号,对应选择RXTX的Linux版本。 如处理器为i386,则将Linux i686版本中的两个os文件复制到系统%JAVA_HOME%/jre/lib/i386(即JDK目录中的系统文件夹) 将RXTXcomm.jar拷贝到%JAVA_HOME%/jre/lib/ext文件夹 代码不变,即可运行使用。 在实际开发中,由于使用树莓派测试,树莓派使用Raspbian系统(使用uname -a命令可查看系统内核信息) Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux 处理器型号armv6l,在下载的RXTX工具包中并无此种系统版本,在实际测试中,所找到的RXTX工具包也都不能使程序运行,均报出系统位数不符。
领取专属 10元无门槛券
手把手带您无忧上云