插件开发
熟练开发PS插件、AI插件、AE插件、CDR插件、3DMax插件和其它各类插件。
展开
-
Adobe-字体名-字体family-对应关系
字体一般有字体名和字体family,两者存在对应关系。获取代码如下所示:2.字体名和字体family对应关系3.作者答疑如有疑问,敬请留言。原创 2023-02-08 16:15:54 · 486 阅读 · 0 评论 -
C++-开源日志库-easylogging-配置-格式记录-线程安全
easylog++是c++应用程序的单头高效日志库。它功能强大,可扩展性强,可根据用户要求进行配置。它提供了编写自己的接收器的能力(通过被称为LogDispatchCallback的特性)。这个库目前被github和其他开源源码控制管理网站上的数百个开源项目所使用。本手册适用于easylogag++ v9.96.7版本。其他版本请参考github上的对应版本。如果您正在用c++开发一个小型实用程序或大型项目,那么这个库会很方便。它基于单头文件,只需要链接到单个源文件。(最初它只是头文件,在第445期更改为使原创 2022-12-05 12:44:08 · 1272 阅读 · 0 评论 -
沙盒软件-软件多开-命令行-运行参数-进程通信-运行和评估
比如说你在沙盒中通过浏览器下载了一个文件,看上去文件被下载到了 Download 目录中,但你在真实系统中通过资源管理器是看不到下载文件的。在本机建立apache服务器,沙箱内的程序向本机IP服务器,申请任务,执行任务,完成任务后提交任务。:param disable_forced:如果True,在沙盒外运行一个程序,即使这个程序是被迫的。:param listids:如果True,返回包含行分隔的字符串沙箱中所有沙箱进程的进程id,当。:param terminate:如果True,终止所有的沙箱进程*原创 2022-12-01 10:52:11 · 907 阅读 · 0 评论 -
C++-CGAL5.5.1-功能介绍-全部模块简介-功能相当庞大-需要再去阅读相应模块-模块指南
这个包从概念、类和函数的角度定义了代数对CGAL的意义。主要特征是:(i)类型互操作性的显式概念(ii)代数类型(不一定可嵌入到实数中)和数字类型(可嵌入到实数中)之间的分离。此包为第三方数值类型库提供数值类型概念以及数值类型类和包装器类。这个包提供了有限域上的数值计算。所提供的工具对于基于模块化算法的滤波器和基于中文余数的算法特别有用。这个包在[数学处理错误]变量中引入了单变量和多变量多项式的概念。虽然这个概念是为任意数量的变量写的,但变量的数量对特定模型是固定的。多项式的实解是一个基础问题,具有原创 2022-11-29 20:15:30 · 358 阅读 · 0 评论 -
C++-矩阵运算-Eigen-几何矩阵变换-常见几何参数求解-平移-缩放-旋转-仿射变换-垂足-面积-周长-方向角-按目标点和距离移动当前点
Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(译注:straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变。三维计算中,绕任意轴旋转,而创建的旋转矩阵,这个轴的定义起点是原点,结束点是向量的构造点。从原始坐标系,复合各种变换,最终形成一个统一的变换矩阵。以下代码实际测试,可以运行。以下代码实际测试,可以运行。原创 2022-11-28 17:15:10 · 926 阅读 · 0 评论 -
常见C++开源库-几何算法库-Boost.Geometry-Clipper2-布尔运算库-支持开放式多段线-基础几何对象-详解教程
return 0;}笛卡尔坐标系中的二维点。return 0;}对于剪切解决方案,有时用户需要将用户定义的数据分配给顶点,包括在路径交叉点创建的顶点。原创 2022-11-27 12:51:39 · 1837 阅读 · 0 评论 -
C++-继承-单继承-多继承-虚函数-内存结构分析-类分析-无源码-逆向分析(三)
与源码对比,还是存在较大的不同,工具的参数好像分析不正确,查阅相关资料,发现int main()这种写法,是可以传参数的,(应该是编译器有校正)。将相关解释,写在注释里,优化后的编译器行为,确实存在一定的不确定性,一般会在静态数据段生成虚表函数,但是工具没有检测到,这时就需要手工修正。但是实际上工具如果无法动态调试,有些地方就无法具体分析,或者分析出错,这时需要修正。继承对象的虚表指针,与父对象的虚表指针,指向的并不是相同的位置,所以相同的类用的相同的虚表指针集合,不同的类用的不同的虚表指针集合。原创 2022-11-15 21:19:07 · 231 阅读 · 0 评论 -
C++-RTTI-运行时类型识别-typeid类型名-dynamic_cast-多继承类型转换-详细分析-Com基础
为什么作者花这么多精力来整理这个RTTI,因为这个是C++高级技术多继承中必然的一环,在windows系统中随处可见的Com模块,它的基础技术就是C++的多继承,除了要了解多继承的内存结构,也要了解多继承的类型识别,以及父子类型的动态转换,这样才能理解Com模块设计思路,在将来的软件互操作设计中,才能从底层了解,技术上为啥这样设计。原创 2022-11-13 11:30:41 · 633 阅读 · 0 评论 -
C++-继承-多继承-类型转换-内存结构分析-汇编分析-逆向分析(二)
本文介绍了多继承的内存结构特点,但是没有深入分析菱形继承和虚继承等问题,一来这些技术在使用时,由于复杂的交互关系,容易产生莫名奇妙的问题,如果不是非它们不可,应该尽量设计更加清晰的类继承关系,这样使用起来才更不容易出错,另外一方面使用频率不高,如果遇到这类问题,在一般多继承的内存结构上,也是非常容易得到它们的内存结构布局。除了多继承,本文还分析了C++提供的类型转换,更合更充分的利用编译器的检查和运行期间的检查,读者视情况使用。原创 2022-11-11 17:21:33 · 543 阅读 · 0 评论 -
C++-继承-单继承-虚函数-内存结构分析-汇编分析-逆向分析(一)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型级别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态“。对于使用者而言,意思就是将复杂的子类,按照父类统一的函数接口来进行访问。原创 2022-11-11 10:42:55 · 525 阅读 · 0 评论 -
CorelDraw插件开发-文字功能-文本分列-创建文本-函数分析-Cdr插件开发教程(二)
通过逆向分析可以看出,虽然已经定位到了,但是Com的函数定位和虚函数这块技术没有跟读者讲解透彻,读者看起来应该有点晕,接下来先插两章,一章关于C++虚函数机制分析,另一章关于VBA基础插件分析,将我们需要调用的Coreldraw函数,在vgcore模块中,标记出来,方便后续的功能解析讲解。原创 2022-11-10 12:02:19 · 476 阅读 · 0 评论 -
CorelDraw插件开发-文字功能-文本分列-语言-横排重组-窗口函数-Cdr插件开发(一)
这一小节主要分析了如何定位到目标关键代码,算是万里长征先走了第一步,接下来就是如何分析目标代码的实现。读本文的读者可能疑惑,为什么spy++能钩到窗口过程,而X64dbg不行呢?这个跟实现原理有关,spy++是全局线程钩子,加入窗口过程线程函数,而X64dbg猜测是通过win32 api函数获取的窗口过程的位置,但是该位置是可以动态改变的,导致X64dbg获取窗口过程函数并不准确,感兴趣的读者可以自己逆向分析一下,或者查看X64dbg的源码。下一节分析,文字功能原理及接口,敬请期待。原创 2022-11-09 11:15:26 · 589 阅读 · 0 评论 -
C++-源代码调试-Visual Studio-X64dbg-WinDbg-插件开发
如果宿主软件,存在反调试技术,我们开发插件的第一步就是干掉反调试,但这往往是一个复杂的工程,具体的技术可以查看相关教程,这样就需要一个强大的反汇编工具,比如X64dbg,同样可以先启动目标软件,然后可以在指定模块下断点,查看程序运行情况,使用X64dbg的读者,需要具备一定的逆向分析能力,如汇编代码阅读能力。看到此文的很多读者,可能会疑问,都有源代码,还要介绍怎么调试,这是为何,这主要是很多时候系统运行的复杂性,有可能我们只有部分代码,或者传统的调试器无法使用(反调试技术的存在)。原创 2022-11-09 08:00:00 · 534 阅读 · 0 评论 -
CorelDraw插件开发-X4-反调试分析-CDR插件开发
对Kernel32.dll中的IsDebuggerPresent函数,可以在主程序中导入位置进行修改。在crlutl,非直接位置调用了这个调试状态跟踪。通过这类反调试,可以采用忽略异常的方法,将异常还是交由程序对应的代码进行处理,让其处理对应的流程。非常奇怪,在早期的X4版本里,竟然存在反调试,不让开发插件的软件工程师进行调试分析,本文针对这个奇怪的问题进行逆向分析。但是很奇怪,所以的异常都过了之后,发现应用程序退出了。打开调试->窗口->异常设置,取消对应的异常中断。这是最简单的过反调试的方法。原创 2022-11-08 08:00:00 · 327 阅读 · 0 评论 -
CorelDraw插件开发-_bstr_t-字符串对象-内存结构分析-CDR插件开发
通过范例的形式,分析_bstr_t对象的内存模型,方便在逆向分析时遇到此对象时,更好的理解,同时熟练使用X64dbg查看内存数据。原创 2022-11-07 12:36:13 · 147 阅读 · 0 评论 -
CorelDraw插件开发-_bstr_t-字符串对象-SysAllocString-SysReAllocString-SysFreeString-CDR插件开发
bstr_t是Com编程中,对BSTR的封装, Com组件传输字符串有固定的标准,就是BSTR,这样才能在不同的语言里调用。函数返回的指针指向BSTR的第一个字符,而不是BSTR在内存的第一个字节。另外,复制BSTR意味着制作字符串的一个拷贝,不是简单的复制指针,BSTR字符数组内部可以包含嵌入的NULL字符。看作BSTR,虽然他们都指向一个字符数组,但是他前边的四个字节的内容是无效的,也就是BSTR的长度无效。将以前分配的字符串重新分配为第二个字符串的大小,并将第二个字符串复制到重新分配的内存中。原创 2022-11-07 09:16:06 · 259 阅读 · 0 评论 -
Com插件开发-CDR插件-自动化接口-IDispatch接口-原理解析
向支持自动化的编程工具和其他应用程序公开对象、方法和属性。COM组件实现IDispatch接口以支持自动化客户端(如Visual Basic)的访问。主要用于其它脚本语言根据名称或者ID来调用对应的功能。原创 2022-11-06 10:59:06 · 605 阅读 · 0 评论 -
Com插件开发-VBE-模块导出函数-DllRegisterServer-DllUnregisterServer-DllGetClassObject-DllCanUnloadNow-使用时机场合
CoGetClassObject会帮我们完成根据CLSID找到对应DLL的工作,导出对应的接口并不是直接导出组件对象的接口,而是通过一个工厂对象来完成导出。DllGetClassObject根据传入的CLSID返回对应的工厂对象,工厂对象再进一步创建组件对象。来检测当前进程中所有COM组件,发现某个组件的DllCanUnloadNow函数返回TRUE就调用FreeLibrary函数,COM库不会主动调用CoFreeUnusedLibraries,推荐客户在空闲时刻调用(如单开一个线程处理)。原创 2022-11-06 08:16:59 · 311 阅读 · 0 评论 -
什么是TLB文件,怎样从dll文件中提取TYPEID信息?- IID
IDL是一种用来说明操作(过程或函数),操作的参数以及数据类型的语言,它在语法上继承于C语言,但形式上和C语言有很多不同,当然也有一些符合自己特点的适合于分布计算的特殊语法。TLB文件是一个说明文件,通过TLB文件,用户可以得知你的DLL中的COM接口以及常量等信息。如果给你一个dll,或者windows自带的dll,是否有可能提取其Com接口信息,答案是可以的。采用visual studio IDE打开对应的dll文件,然后选择第一步右键,第二步导出bin文件,最后将后缀重命名为.tlb文件即可。原创 2022-11-02 10:41:18 · 992 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-弹出漂浮窗口-非模态窗口-CDR插件(六)
文章目录1 生成插件类2 创建非模态窗口函数--CreateDialog3 添加通用插件源码4 创建漂浮对话框(非模态对话框)5 添加创建文档功能6 项目源码7 最终效果8 作者寄语 阅读本文之前需要具备基本的构建CPG插件项目的能力,请先阅读第一小节和第二小节,这两小节是分析CPG插件源码必须具备的基础知识。本文介绍在CorelDraw软件中弹出一个窗口,完工效果如下:1 生成插件类 使用VS添加类ACPGMainWindowPlugin,如下图所示: 生成的ACPGMainWindo原创 2022-05-05 09:05:59 · 390 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-CLSID-CLSIDFromProgID-IDispatch接口-illustrator调用-CDR插件(五)
文章目录1 CLSID和CLSIDFromProgID1.1 CLSID和ProgID1.2 常用函数2 IDispatch接口3 C++调用illustrator3.1 COM初始化和卸载3.2 查找illustrator主应用程序接口3.3 新建文档并添加文字3.4 修改文字属性4.源码效果5.作者答疑 在CorelDraw的CPG插件开发过程中,主应用程序通过IDispatch接口回调插件中对应函数功能,如通过vbs脚本调用,本文思路,先讲解COM实例化的基础知识,然后讲述IDispatch接口,原创 2022-05-01 07:14:36 · 373 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-标准工具栏添加按钮-CDR插件(四)
文章目录1.生成插件类2.添加插件源码3.工具栏增加按钮4.最终效果5.作者寄语 阅读本文之前需要具备基本的构建CPG插件项目的能力,请先阅读第一小节和第二小节,这两小节是分析CPG插件源码必须具备的基础知识。从本文开始,将逐步介绍CorelDraw软件中按钮的插入。而本小节主要介绍按钮的插入,最终效果如下:1.生成插件类 使用VS添加类ACPGToolBarPlugin,如下图所示: 生成的ACPGToolBarPlugin.h文件源码如下:#pragma onceclass AC原创 2022-04-30 07:18:05 · 731 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-插件类架构-IVGAppPlugin-IVGApplication-CDR插件(三)
文章目录1.IVGAppPlugin2.IVGApplication3.STDMETHOD和STDMETHOD_4.VARIANT5.REFIID6.DISPPARAMS7.作者寄语 阅读本文之前需要具备基本的构建CPG插件项目的能力,请先阅读第一小节和第二小节,这两小节是分析CPG插件源码必须具备的基础知识。本文思路是分析第二节的Hello程序源码,让读者初步理解,开发一个CPG插件所涉及到的软件逻辑知识。本文讲解如何涉及到的概念。主要包含IVGAppPlugin、IVGApplication、STD原创 2022-04-29 08:11:30 · 473 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-HelloWorld-CDR插件(二)
文章目录1.VS创建DLL项目2.CorelDraw相关2.1 vgcoreauto.tlb文件2.2 调试和插件安装位置3.HelloWolrd程序4.作者寄语 本文作为系列文章第二节,主要介绍一个CPG插件,需要的最基本的结构,如何从头开始构建一个CPG插件,文章思路是,首先认识到CPG文件是一个动态链接库,在windows系统下,就是一个dll文件,然后找到tlb文件,将其拷贝至项目文件夹,最后输入必要的源码,来构建一个简单的插件程序。1.VS创建DLL项目 CPG插件本质是一个动态链接库文原创 2022-04-28 08:03:22 · 930 阅读 · 0 评论 -
CorelDraw插件开发-Cdr插件-CPG插件-tlb文件位置-脚本插件
文章目录1.CDR插件2.作者答疑1.CDR插件 如果读者需要在CorelDraw软件中开发插件,一种方式是采用脚本语言开发,即VBA这种脚本语言,CorelDraw对它支持录制和拥有自定义的编辑器,使用起来简单方便,但它也有一些缺点,由于本身是一种脚本,一方面代码容易被盗取,另外一方面脚本语言具有的缺点是单线程。与操作系统交互起来不太容易。而且界面一般制作简陋,不太美观。另外一种方式采用Com组件开发插件,这种方式可以采用多种语言开发,如C++,C#,Python等强大的编程语言。一般看程序员方面的原创 2022-04-27 07:25:38 · 1014 阅读 · 0 评论 -
CorelDraw插件开发-Cdr插件-CPG插件-GMS插件-安装位置
文章目录1.gms格式插件2.cpg格式插件3.作者答疑 CorelDraw软件是一款使用非常广泛的矢量图形软件,系统本身提供了非常便利的二次开发环境,制作插件的格式有两种,一种是gms格式的脚本插件,另外一种是cpg格式dll插件。1.gms格式插件 gms格式插件是使用微软的 VBA 技术,编写和调试都比较方便,从9的版本开始支持。 安装:把gms文件复制到程序所安装的目录 gms 下,一般在C:\Program Files\Corel\CorelDRAW Graphics Suite 1原创 2022-04-26 07:12:26 · 1686 阅读 · 0 评论 -
CorelDRAW插件-CPG插件开发-环境搭建-VS2017-TLB文件-CDR插件
文章目录1.编程环境2.对象浏览器3.Com库的引入4.作者寄语 CorelDRAW是一款矢量编辑软件,具有非常广泛的用途,本文针对专业插件开发人员,介绍如何开发一款CDR插件。首先阅读本文的读者需要具备一定的C++编程能力,和对微软的Com编程思想有基础的认识,本文从入门开始讲解CDR插件开发。1.编程环境 开始编写插件之前,需要使用一款IDE来辅助我们编写插件,本文采用C++的编程环境来编写插件,文本所介绍插件,运行在windows系统上,所以推荐使用VS来开发。理论上由于COM是一种可以互操原创 2022-04-22 08:04:11 · 1278 阅读 · 0 评论