经过 Mono 团队的不懈努力,原本专属于 Win32 平台的 GDI+ 终于可以跨平台了,不过这中间还有好多的故事和好多的坑。
在使用 Xamarin 开发 Linux 应用的时候,刚开始如果没有弄好 libglib-2.0-0.dll 的依赖库,那么将会在运行的时候,在 Gtk.Application.Init() 这句代码提示找不到这个库
本文根据Mono C++原文档翻译,这篇文章的目的,就是想说CLR程序在VS下面生成的DLL不能给Unity调用,因为Mono的Native调用的编码和MS CLR的不一样,如果Unity想要去调用C++程序,需要使用P/Invoke的方式,这两者的不兼容使得本来非常方便的C++/CLI在Unity下毫无用武之地,希望有一天MS能够给Mono CLR一片土地,方便你我他,还有就是高高兴兴写了半个月MS CLR以为能在Unity下使用了,结果一Run就炸,所以说以后代码未动,单元测试一定要先写啊,这片区代码需要全部重构了,血与泪的教训。
Mono,作为.NET运行库的开源实现,正在将微软的技术带到未曾预料到的地方,包括iPhone,Android和Wii。 根据Novell公司的首席Mono开发者Miguel de Icaza称,Apple的App Store中有多个应用程序是基于Mono。 这可能会让那些熟悉苹果应用程序限制政策的人感到意外,因为苹果公司严格禁止开发者使用解释语言和第三方运行环境——在很大程度上就将.NET和Java之类技术排除在外。 静态编译(Static compilation)是一道特别的沙司,正是它使
我有一个 WPF 应用,这是一个绿色软件,会被用户拷贝这和那的文件夹,我期望在多个文件夹里面打开的进程,在任务栏里面都可以将窗口进行合并。使用 Win32 的 Shell32.dll 提供的 SetCurrentProcessExplicitAppUserModelID 可以显设置应用的 Application User Model ID 从而让在多个不同的路径打开的应用,使用相同的 Id 而在任务栏进行合并窗口
GUID,IID,IUnknow,IDL,都是COM规范定义的概念,它规定了对象接口如何声明,对象如何创建销毁,对象生命周期如何管理,接口如何继承和聚合。
所有关注攻击性安全社区的人都会在过去两年中一次又一次地遇到Userland hooking, Syscalls, P/Invoke/D-Invoke等术语。我自己也遇到了一些我不完全理解的博客文章和工具。我有时觉得我需要从头开始积累知识。由于我在很多情况下不需要这些“新”技术,我把这些课题的研究推迟了几个月。
集中日志查询平台方案(Draft) 随着公司业务系统之间的数据交换越来越多,系统间的整合越来越复杂,伴随而来的问题也越来越多,给运行维护,客服人员带来的很大压力。目前我们首先要解决的问题是快速定位问题发生的系统和异常信息,第一时间收集到系统必要异常信息和审计信息,第一时间反馈给运行维护和客服人员,第一时间让相关人员做出相应的处理。 本方案将大致分3个阶段实施 第一部分:将传输各个节点的异常信息采集到公共平台,通过一个Web界面提供客服人员查询和定位问题,并且可以实现邮件通知功能,计划一周内完成并交付使
使用jinvoke调用windowsAPI。jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样。
最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。
那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简称vld)。 vld工具是VC++环境下一款小巧易用、免费开源的内存泄漏检测工具,vld可以显示导致内存泄漏的完整内存分配调用堆栈。vld的检测报告能够对每个内存泄漏点提供完整的堆栈跟踪,并且包含其源文件及行号信息。 安装过程是,先在到地址http://vld.codeplex.com/下载vld安装文件,然后
进程注入 ,简而言之就是将代码注入到另一个进程中,跨进程内存注入,即攻击者将其代码隐藏在合法进程中,长期以来一直被用作逃避检测的手段.
https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc
发布于 2018-08-05 13:48 更新于 2018-09-01 00:15
我们需要自己编写一个工具时,必然会用到很多操作windows和控制windows的函数,这些函数就是windows API.
在 Windows 上有 GDI+ 来操作位图,不止能完成很多的位图操作,还提供了与 Win32 窗口的互操作,可以截到 Win32 窗口的图片。
IL2CPP does not support marshaling delegates that point to instance methods to native code. 你可能平时在 .NET Core / Framework 的代码中写得很正常的托管代码的委托调用,在 Unity3D 中变得不可行。
本文来告诉大家如何在 Windows 上利用从 Vista 引入的 Windows Error Reporting (WER) 机制来实现,在应用崩溃、无响应等异常的时候收到回调用于处理信息保存
简述 C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。 VLD VLD(Visual Leak Detector)是一款用于 Visual C++ 的免费内存泄露检测工具。相比较其它内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 可以得到内存泄漏点的调用
swig可以自己包装c代码给其他语言使用,对应java就是包装为jni,这里简单描述各平台使用方法
今天为大家介绍一款基于.NET Core运行时实现的Windows HOOK库,CoreHook。
New -> Application -> Qt Console Application -> Choose
Serial Comm Use P/Invoke to Develop a .NET Base Class Library for Serial Device Communications John Hind This article assumes you're familiar with C# and RS232 communications Level of Difficulty123 Download the code for this article: NetSerialComm.exe (89K
2020年12月,SolarWinds 攻击事件引发全球的关注(https://us-cert.cisa.gov/ncas/alerts/aa20-352a),攻击团队在 2020年上旬通过对 SolarWinds Orion 产品实现供应链攻击,导致诸多厂商被攻击,造成了不可估量的损失。这种国家间的 APT 攻击包含了大量的技术细节,其中供应链攻击的实现,也就是 SUNBURST 后门植入这一块引起了我极大的兴趣。
被坑的不浅,遇到错误:“ LNK1561:必须定义入口点”,解决方案删除再建,步骤一遍一遍操作,还是报错。如下图所示:
File--新建---工程--win32 Dynamic-link Library 输入工程名和位置,即可进入动态库界面。
的意思是指文中生成的obj文件应该与Test_of_dll.lib一起链接.或者可以在VC的工程中设置加载此lib
在社区很多人不看好的微软.NET开源实现Mono发布了Mono 2.8,这是一个重要的版本更新,有着显著的改善,Mono 2.8包括C#4.0的支持(也是现在的默认配置),新一代的垃圾回收器,新的框架,LLVM的支持,目前被认为是稳定的,2.0版本的embedding API ,对OpenBSD的支持,移除了对GLib的依赖,并有.NET 2.0的线程池的异常行为。 新的微软的开源协议的框架包括ASP.NET 4.0,并行框架,System.XAML,System.Dynamic,Managed E
在一些 Windows 7 系统上,根据 dotnet 官方文档,需要安装上 KB2533623 补丁,才能运行 dotnet core 或 .NET 5 等应用。尽管非所有的设备都需要安装此,但这也让应用的分发不便,安装包上都需要带上补丁给用户安装。此补丁同时也要求安装完成之后重启系统,这对用户端来说,也是较不方便。本文来聊聊为什么 dotnet core 一系的框架依赖于此补丁
本文告诉大家如何加载 .NET Core 或 .NET 5 的 sos.dll 文件到 WinDbg 的方法
进入http://ffmpeg.org/download.html,如果下载源码,则在右下方:
根据官方的指引:PHP: Installing the MongoDB PHP Driver on Windows - Manual 1
Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容。Mono 4版本要求CentOS 7,tLinux 1.2 通过源码编译方式进行安装4.8 有无数错误,主要是Mono 4.8 用了新的Cmake编译,这里介绍tLinux2.2 下源码安装Mono 4.8 。 一、 系统更新的体验和CentOS7一样,运行yum –y update 二、 安装Mono源码安装需要的库 yum -y inst
Mono官网:http://mono-project.com/ 2.0 Release Notes: http://www.mono-project.com/Release_Notes_Mono_2.0 Mono Project Announces Mono 2.0 for Cross-Platform Microsoft .NET Development: http://www.novell.com/news/press/mono-project-announces-mono-2-0-for-cros
最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累。在介绍具体实现代码之前,我们必须明确解决这个问题的思路是什么的?下面只要分享我的一个思考的这个问题的方式:
文章来源 http://www.cnblogs.com/zhili/p/OnlyInstance.html 转载请注明出处
在第一篇横向移动中我们使用了MMC20.APPLICATION COM对象来进行横向移动,其实我们可以思考一个问题,微软的COM不只有MMC20.APPLICATION。
Mono Migration Analyzer (Moma) 是一个用于开发者使用的MS .net下开发的应用程序迁移到Mono平台的不兼容性检测工具。工具通过分析.dll或者.exe程序集的代码是否符合ECMA CLI,大家都知道符合ECMA CLI标准的.net 程序可以运行于MS .net和Mono平台。这个工具使用Cecil,这是一个用于检测代码是否符合ECMA CLI标准的类库,Mono网站上的小工具还真多。到http://www.mono-project.com/MoMA下载最新版本,解压后运
Mono 3.0.12已于6月19日发布。对跨平台开发者而言,对可移植类库的支持可能是该版本最重要的变化。该技术可以使一个DLL支持.NET、Windows Store、Windows Phone、Silverlight、ios、android。支持可移植类库的相关介绍可以看Msdn杂志的一篇文章介绍《将旧 .NET 库迁移到最新目标平台》 Mono 3直接提供了新版本的Entity Framework 6的支持,为降低产品服务器成本而使用Linux的用户会非常开心。Entity Framework于去年7
本文将创建一个简单的动态库-link,谱写控制台应用程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL,仅仅是项目及文件名不同。
看了个BUILD的PPT,Windows Runtime (RT)并不是一些新闻网站说的那样微软自废.NET武功,而是恰恰相反,WinRT是Win32API的现代版,其中有很深的.NET的基因,是Metro UI的.NET基础,如果考察Metadata的变化,WinRT的API定义的元数据是基于标准ECMA 335,也就是.NET的标准 ,WinRT也是一个沙箱的环境,针对AppStore环境设计的。 视频 基础知识 微软以推出Windows 8为契机,以解决Windows长期存在的问题,并带来了新的用户界
很多开发者,包括开发老司机们,在碰到需要调用 Win32 函数时,都有一个困扰,那就是我应该如何去调用。有两个主要的选项,第一就是自己写 PInvoke 代码,第二就是使用其他大佬给许多 Win32 函数封装好的库。然而这两个方法都有各有各的缺点,第一个方法缺点是可能工作量会很大,需要写方法,写结构体等等。第二个方法缺点是大佬封装的库,虽然全,但可惜里面有很多我用不着的函数,有些浪费。本文将来和大家介绍一个宝藏库,可以很好解决此问题
【详细过程】 这次主要说说核心层的hook。包括SSDT-hook,IDT-hook,sysenter-hook。欢迎讨论,指正!内核层需要驱动,有这方面的基础最好,如果不会,了解下其中的思路也可以的。 II. SSDT-hook,IDT-hook,sysenter-hook 一.SSDT-hook (一)一般思路: 1.先来了解一下,什么是SSDT SSDT既System Service Dispath Table。在了解他之前,我们先了解一下NT的基本组建。在 Windows NT 下,NT 的 executive(NTOSKRNL.EXE 的一部分)提供了核心系统服务。各种 Win32、OS/2 和 POSIX 的 APIs 都是以 DLL 的形式提供的。这些dll中的 APIs 转过来调用了 NT executive 提供的服务。尽管调用了相同的系统服务,但由于子系统不同,API 函数的函数名也不同。例如,要用Win32 API 打开一个文件,应用程序会调用 CreateFile(),而要用 POSIX API,则应用程序调用 open() 函数。这两种应用程序最终都会调用 NT executive 中的 NtCreateFile() 系统服务。
这两天在做服务器框架的C的接口导出和C#的接入。之所以要做这么个东西是因为之前的服务器框架(atsf4g-co)已经完成了通信层面和基本设计模式的细节部分,而且基本算是最大化性能了吧。但是现在的项目的战斗引擎是从以前Unity游戏上抽象而来的,全部由C#编写。再加上最近再考虑接入实时战斗,这样就不能像之前一样用一个简单的通信方式了,必须使用一个高效并且实时性更高通信机制。需要能够处理好比较高的集中式的组播和容灾的通信方式。于是就有了把之前的C++的框架抽离出API来驱动逻辑的想法。这样也比较容易地兼顾开发成本和性能之间地权衡。
在调用 win32 库的时候,小伙伴会遇到的问题是不知道对应的 win32 函数应该如何写。或者在网上抄了的代码的实现都有些诡异,想要自己封装发现工作量太大。好消息是官方将 PInvoke 库在 dotnet 基金会完全开源,包含了大量的 Win32 库,如 gdi32.dll 和 kernel32.dll 和 user32.dll 等
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了。 我们可以简单的实例化一个WPF窗体对象然后在Office应用程序的窗体上打开这个新的WPF窗体,此时Office应用的窗体就是WPF的宿主窗体。然后宿主窗体跟Office应用并不是在一个UI线程上,子窗体很可能会在宿主窗体后面看不到。这个时候需要调用Win32函数,将Office应用的窗体设置为WPF子窗体的父窗体,这个函数的形式定义如下
众所周知,Dotnet Core目前没有图形API,以前的System.Drawing程序集并没有包含在Dotnet Core 1.0环境中。不过在dotnet core labs项目里可以见到MS已经在移植这个项目,不过目前的版本只能在Windows上和NET541+或DNX环境中才可以使用。
在 Windows 应用开发中,如果需要操作其他的窗口,那么可以使用 EnumWindows 这个 API 来枚举这些窗口。
领取专属 10元无门槛券
手把手带您无忧上云