api函数

[翻译]红队战术: 结合直接系统调用和sRDI来绕过AV / EDR

白昼怎懂夜的黑 提交于 2019-12-01 07:48:02
English:https://outflank.nl/blog/2019/06/19/red-team-tactics-combining-direct-system-calls-and-srdi-to-bypass-av-edr/ 0x00 简介 在本文我们将介绍如何使用直接系统调用(Direct System Calls)以及配合sRDI注入来绕过R3层的行为监控。 随着安全技术的防御能力逐渐增强,另一方面,攻击技术也在不断发展,作为一个Red Team需要研究更先进的技术来绕过当下比较流行的防御和检测机制。 近期一篇恶意代码的研究报告声称,使用"直接系统调用"技术来绕过安全软件用户层Hook的恶意样本正在与日俱增。 研究报告:https://www.cyberbit.com/blog/endpoint-security/malware-mitigation-when-direct-system-calls-are-used/ 作为一名ReadTeamer,要与时俱进!! 现在轮到我们也来更新一波shellcode攻击代码了。 我们将接下来将使用这种技术证明,在不触碰磁盘的情况下绕过AV/EDR监控的用户层Hook,使用Cobalt Strike来dump LSASS.exe进程内存。 PoC代码可以在这里下载:https://github.com/outflanknl

Android ndk下用AssetManager读取assets的资源

故事扮演 提交于 2019-11-29 21:51:50
在使用 cocos2dx 在 Android 上进行游戏开发时,遇到了奇怪的事情,无论什么代码,都无法读资源文件。不得以只好寻求更高版本的Api。 在Android ndk api level 9 之后,提供了一套称为 AssetManager 的api。 这个api 的工作原理是 - Java通过JNI把getAssets得到的AssetManager传递给一个JNI的c函数。 - JNI的c函数通过 AAssetManager_fromJava 来取到这个AssetManager对象。 - 通过一系列的 AssetManager 的api来操作Assets。 C的jni函数如下 static AAssetManager * gAssetMgr = NULL; extern "C" { void Java_org_cocos2dx_lib_Cocos2dxActivity_nativeSetAssetManager(JNIEnv* env, jclass cls, jobject assetManager) { gAssetMgr = AAssetManager_fromJava( env, assetManager ); } }; 读取资源的方法如下 do{ AAsset * pAsset = AAssetManager_open(gAssetMgr, pszFileName,

有关Windows API 的文章

泄露秘密 提交于 2019-11-29 14:23:28
Windows API函数大全(精心总结) 转载链接: https://blog.csdn.net/hzm8341/article/details/56505108 Windows API 入门 转载链接: https://blog.csdn.net/x_y_q_/article/details/52352523 . 来源: https://blog.csdn.net/weixin_44415974/article/details/100830085

Delphi窗体重绘API

故事扮演 提交于 2019-11-28 20:30:20
WinAPI: DrawFocusRect - 绘制焦点矩形 用SetTextColor()设置颜色 功能 设置指定设备环境(HDC)的字体颜色 原型 WINGDIAPI COLORREF WINAPI SetTextColor (HDC, COLORREF) 也可以理解成 DWORD SetTextColor (HDC, DWORD),其中DWORD是关于颜色的参数,常用RGB()获取,如:SetTextColor(HDC,RGB(255,0,0)); //声明:  DrawFocusRect(   hDC: HDC;     {设备环境句柄}   const lprc: TRect {矩形结构}  ): BOOL;  //举例:  procedure TForm1.FormPaint(Sender: TObject);  var   MyRect: TRect;  begin   MyRect := Rect(20,20, 180,100);   DrawFocusRect(Canvas.Handle, MyRect);  end;  GetDc 该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。函数用于获得hWnd参数所指定窗口的客户区域的一个设备环境。所获得的设备环境可以是通用、类或者私有类型

内核基础-API命名-字符

流过昼夜 提交于 2019-11-28 18:08:53
环境安装 环境安装需要极其谨慎, 因为稍有不慎, 就需要重装系统. 驱动开发环境依赖 WDK (Windows driver kit),也就是微软的驱动开发工具包. 这个工具包里面包含了驱动程序的编译工具 , 头文件, 库等. 缺了这个, 无法编译驱动程序. WDK有很多的版本, 版本的选择很重要. 一般最好选择最新版的. 除了WDK还需要和WDK同一版本的SDK . 如果所安装的WDK,SDK或者VS错误了, 可以使用卸载工具将它们全部卸载干净再配置. 普通的卸载工具是卸载不干净的, 但以下工具可以卸天卸地卸空气: Total Uninstall(旗舰版) 项目配置 编译出来的驱动其版本必须和加载该驱动的操作系统版本一致, 例如 : 加载驱动的是win7 32位系统, 则必须将驱动项目的目标系统设置为win7 , 且驱动必须是x86体系的. 源码编写 驱动程序可以使用 C 语言项目, 也可以使用 C++ 项目, 但是, 通常使用C项目, 因为C++的项目有名称粉碎机制, 在定义函数的时候, 需要加入 extern "C" . 此外, C++编译器生成的代码不如C语言生成的代码高效, 而内核的代码会被高频繁的调用, 越高效越好. 驱动调试 编写出来的驱动实则属于系统内核的一个插件, Windows的系统内核文件为: ntoskrnl.exe ,

初识API函数

人走茶凉 提交于 2019-11-28 06:11:13
我之前是一个只会编写数值计算的程序的OIer,但我并不甘于这种现状,于是 我 编写了我 的第一个使用API函数的C++程序 , 开发平台是VS2012 : // ConsoleApplication.cpp : 定义控制台应用程序的入口点。 // #include<stdio.h> #include"stdafx.h" #include<Windows.h> int _tmain(int argc, _TCHAR* argv[]) { HWND wnd; wnd=FindWindowA(NULL,"无标题 - 记事本"); SendMessage(wnd,WM_CLOSE,0,0); system("pause"); return 0; } View Code 之前有在看谷夕写的HACK编程实例精讲,第一节有介绍API函数,他的书上用的是hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);在这之前我连如何调用API函数都不知道,尝试过#include<stdafx.h>等等乱七八糟的东西,结果都不行.后来百度了一下,才发现原来是要加#include<windows.h> 明白如何才能可以调用API函数之后,尝试使用书上介绍的OpenDesktop函数,因为我什么都不知道,于是程序我就这么写了: //

提取快捷方式的图标资源问题

大兔子大兔子 提交于 2019-11-28 01:48:15
问题点:获取桌面上的快捷方式并提取出图标资源。 问题点分析:1、如何获取桌面上的快捷方式?2、如果通过快捷方式路径提取到图标资源? 问题一:获取桌面上的快捷方式:   Windows桌面上的文件保存在两个文件夹下,分别是:公共桌面文件夹和用户桌面文件夹。一般对于的系统路径是为系统盘下,例如:C:\Users\smart\Desktop(用户)和C:\Users\Public\Desktop(公共)。然后对这两个文件夹下的文件遍历筛选出扩展名为lnk的快捷方式.   对于实际编程中,桌面的文件路径是一种系统特殊文件夹路径,不能规定死了。而且如果使用过桌面文件迁移软件对桌面迁移过,桌面文件夹的目录也会发生变化。不过,微软为我们提供了一些API获取特殊文件路径。   1、 BOOL SHGetSpecialFolderPath ( HWND hwnd, //保留,设置为NULL                    LPSTR pszPath, //特殊文件夹路径                    int csidl, //需要获取的特殊文件夹类型,如果是虚拟文件夹,获取失败                    BOOL fCreate //如果文件夹不存在,是否创建                    );     该函数在以后可能不在受支持,可以采用新的API。   2、

探究为什么FreeRTOS 有些API不能在中断服务函数中调用,转而需要调用带ISR的版本

左心房为你撑大大i 提交于 2019-11-27 15:46:49
  用了好久的FreeRTOS以前只是知道,如果在中断服务程序中调用某一些FreeRTOS的API函数时需要注意,如果有ISR版本的一定要调用,末尾带ISR的函数,并且要调用系统的API函数,中断服务程序的中断优先级不能高于配置宏(configMAX_SYSCALL_INTERRUPT_PRIORITY)的值这是为什么呢。刚好今天受台风影响只能在家里窝着,所以就想着趁有时间看看这一部分的内容,研究一下为什么,那么废话不多说开干。   找了几个函数简化一些安全检查的内容再把一些宏函数替换后对比观察了下内容如下: TickType_t xTaskGetTickCount( void ) { TickType_t xTicks; { xTicks = xTickCount; } return xTicks; } /*-----------------------------------------------------------*/ TickType_t xTaskGetTickCountFromISR( void ) { TickType_t xReturn; UBaseType_t uxSavedInterruptStatus; portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); uxSavedInterruptStatus =

使用windows api函数捕获SAP session的左下角消息句柄

江枫思渺然 提交于 2019-11-27 09:42:07
   背景 :SAP session的左下角消息非常有用,我们在做SAP的自动化脚本时可以设法读到这个消息的内容,作为程序后续动作的判断条件。如下图:   比如小爬之前给财务的同事制作了一个批量导出SAP各类报表的脚本工具:基于公司IT团队用ABAP编写的这几张表,SAP每次执行完导表动作,数据传输过程,左下角消息为 “Transferring package1 of 1...” ,当表格数据完整导出后,则显示 “已传输N个字节” 。我们的脚本可以去捕获“已传输...”这个消息,来判断报表内容是否已经完整导出,来决定是否要导出下一张报表。   事实上,通过原生的“脚本录制与回放”,我们可以得到这个消息:语法为: sapMessage=session.findById("wnd[0]/sbar").text 。非常简单实用!实际编写脚本过程中遇到的问题是,当我们的脚本动态地顺序往下执行到等待报表出来的过程,控制权交到了导出的excel文件,我们的sapMessage=session.findById("wnd[0]/sbar").text无法获得执行,如果该消息文本恰好作为脚本中循环退出的条件,则脚本程序因为循环无法退出,导致界面卡死。   我想到的解决方法是,前期的参数输入等都通过脚本录制功能生成代码,到了点击“执行(F8)”这个动作,改由window api