我想在一个dll之上,封装自己的dll,哪位大侠知道怎么作?

OXlOlO 2003-08-19 04:32:34
发布的时候,是否要将原来的dll同时发布,还是只一个dll就行?

最好有个小例子。

谢谢!
...全文
34 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
OXlOlO 2003-08-26
  • 打赏
  • 举报
回复
那个dll的.h文件用发布吗?
OXlOlO 2003-08-20
  • 打赏
  • 举报
回复
而且我不是定义一个变量,而是定义一个类型,他是一个结构体。比如说
原来的.H中有个这样的结构体:
struct A
{
int a;
char* b;
};
而在我的.h中,要让用户看到这个结构体的。



OXlOlO 2003-08-20
  • 打赏
  • 举报
回复
gxingmin(小高)
这样作对于用户来说看着不太好,有更好的方法吗?

Motolola 2003-08-20
  • 打赏
  • 举报
回复
和在exe中使用dll没什么不同!
gxingmin 2003-08-20
  • 打赏
  • 举报
回复
看看那个变量redefine了
在它前面加个判断
如:#define PI 3.1415926 (系统检测到PIredefine) 则:

#ifndef PI
#define PI 3.1415926
#endif
OXlOlO 2003-08-20
  • 打赏
  • 举报
回复
原来的.DLL文件的.h文件有个数据结构,现在我想在我的.H文件中让用户看到,我直接拷贝到我的.H文件,则提示redefine,而我剪切再拷贝后,由于原来的dll与这个结构相关,所以造成类型没有定义,我该怎么作呢?
xiaohedou 2003-08-20
  • 打赏
  • 举报
回复
没有必要发布一个啊?两个又怎么了?有的DLL是需要注册的,你又如何?在你的程序里调用就行了。
OXlOlO 2003-08-20
  • 打赏
  • 举报
回复
不用com,要是那样的话,我可就麻烦了。
nonocast 2003-08-20
  • 打赏
  • 举报
回复
更好的办法就是COM了
孤必有邻 2003-08-19
  • 打赏
  • 举报
回复
如果你是静态编译链接的,则运行时不需要DLL(都不需要)
如果你是动态编译链接的,则需要(你的DLL静态,则不用他的DLL,你的应用程序静态,则都不需要)
wangweintk 2003-08-19
  • 打赏
  • 举报
回复
可以,把原来的dll动态链接到你的dll中就可以了。

使用你的dll,当然需要原来的dll。
kingzai 2003-08-19
  • 打赏
  • 举报
回复
if you use lib file,then you can not use
if you load dll by LoadLibrary,then you should use.
Anikan 2003-08-19
  • 打赏
  • 举报
回复
当然要两个同时发布了.跟原来写DLL时候一样,在你需要调用原来
DLL的时候把他加载就可以了.
Embarcadero.Delphi.10.2.2.v25.0.29039.2004.Lite.v14.3完整版,含示例、帮助、IOS、安卓支持、Net框架,共3G+。是最新的哦! 破解者说明如下: Embarcadero.Delphi.10.2.2.v25.0.29039.2004.Lite.v14.3 -------------------------------------------------------------------------------- 基本信息: 者:lsuper 联系方式:... -------------------------------------------------------------------------------- 版本说明: 由于 XE5 时代 Delphi 安装体积急剧膨胀(完整安装接近 10G,程序文件、安装缓存超过 20G+),按照过去的方式打包,XE5 的 lite 体积 1.xG,接近 PE image 理论极限,而且当前 XE5 支持 x86、x64、osx、ios、android、等诸多平台功能,不好按照网友的口味进行裁剪(win32only、winonly、...) 经多方案权衡对比,决定 v8.x 开始,只使用 inno 对 Delphi 的主体功能进行封装(完整的 x86+其他支撑组件、注册表等),其他平台、功能的安装文件(x64、osx、ios、android)通过 7z 外挂的方式支持:安装时只需保证 lite exe 旁边有相关的 7z 文件(文件名不能变),在安装过程中即可选择、安装相应的功能(这意味着,如果只一个 exe、装出来就是 win32only,多一个 Ext.X64.7z,安装可选 x64 的支持,其他类推) 当前分为以下 12 个包: 包名称 文件大小 用 Ext.3th.7z 91,226,756 网友收集的一些第三方扩展 Ext.Addons.7z 100,567,057 InterBase XE7、FastReport4 等 Ext.Android.7z 1,640,823,804 Android 编译环境 Ext.Help.7z 299,342,286 帮助文档 Ext.Hotfix.7z 000,000,000 网友收集的一些官方补丁 Ext.IOS.7z 3,737,156,232 IOS 编译环境 Ext.Linux.7z 1,180,105,999 Linux 编译环境 Ext.OSX.7z 846,515,926 OSX 编译环境 Ext.Samples.7z 599,352,431 范例,其实直接用 svn 的也行 Ext.SDK.7z 1,576,071,523 Android SDK/NDK 编译环境,当前包含 v23 的编译工具、虚机映像等 Ext.Support.7z 246,586,892 EMSServer、Image、LivePreview、PAServer 等支持组件 Ext.X64.7z 1,568,283,495 64 位编译环境 此外,安装程序支持: 1、保留一个第三方扩展的组件:Ext.3th.7z,当前集成 EDN 收集的扩展、增强文件,所有 7z 都会解压到 {app} 下 2、自动检测 Ext.SDK.7z 中的 SDK、NDK 版本进行设置,支持最新的 android-ndk-r9c-windows-x86+android-sdk_r24.3.3-windows 3、自动检测旁边的 jdk-7/8u*-windows-*.exe 进行安装,支持最新的 jdk-8u102-windows-i586 4、自动检测旁边的 NetFx20SP2_x86/NetFx20SP2_x64 进行安装 -------------------------------------------------------------------------------- 发布历史: 2017.12.20 - v14.3 1、根据 25.0.29039.2004 原版制 2、集成 aldian、elseif、unis、x-force、cjack 等大虾的特别补丁 3、集成 Andreas Hausladen 的 IDE Fix Pack v6.1.2 2017.12.14 - v14.2 1、根据 25.0.28979.1978 原版制 2、集成 elseif、unis、x-force、cjack 等大虾的特别补丁 2017.08.11 - v14.1 1、根据 25.0.276
前言: 经过长达将近三个星期的材料准备,终于在前几天完成了430的USB型仿真器的制,原理完全参照TI官方文档,只是将其中个别分立的125换成了4个一体的,资料都是来自于各个论坛,具体在哪里下载的也记不太清楚了,对这些提供资料的兄弟都表示感谢!现将自己觉得有用的资料上传,如有侵犯到您的权利或利益,请与我联系。 PCB文件也是在论坛上下的,看到各方面都比较完善,排版也基本参照了TI的就没有做大的改动,只是将个别线条和封装做了些许改动。焊接时发现有两个问题:一个是固定孔稍微偏小,螺丝勉强才能进去;一个是光耦继电器的封装小了。这个当初都没注意,但最终还是让我焊上了,不容易啊。 现将DIY 430UIF的制过程及注意事项公布一下,方便后来的DIY们少走弯路: 制过程还算是比较顺利吧,没有碰到非常困难的问题。主要还是耗在元器件的购买上,一共网购了三次,跑了一次电子市场,我这还算运气比较好的。建议各位在制的时候,USB口和线选用质量好些的,我这个就是接插件质量太差了,接触不是很稳定,导致调试的时候走了弯路。 根据TI官方的原理图做的板子,不用焊接的器件为: R49 R50 R52 R54 R62 C1 C2 我的制步骤: 1.先使用编程器将24C128的程序烧进去。(因为我这边有EEPROM的编程器,所以直接就写了,不知道各位大侠都是用的什么办法?在初次写的时候我看那里面没多少数据量,好像4K的范围外就没有数据了,不知道是不是后来单片机程序烧录后又往里面写了数据,所以需要这么大的EEPROM,改天拆下来读读看) 2.使用MspFet软件将TXT格式的固件烧进1612单片机。我是使用并口仿真器通过JTAG口烧录的,这里有个疑问,官方的JTAG口这里使用的是USB口过来的5V电源,刚开始没注意使用的5V电源,校验的时候经常出错,后来使用了VCC电压才烧录正确了。 友情提示:当使用TI USB型仿真器时,提示:Init failed. Could not open port.这时要到\IAR Systems\Embedded Workbench 4.0\430\bin下复制msp430.dll和hil.dll两个动态库文件(前提是要安装Embedded Workbench 4.0) 3.程序都烧录完成,检测完硬件后就可以插上电脑了,装好驱动;使用指定位置搜索驱动,其位置为IAR安装目录下的430\drivers\TIUSBFET,如果驱动安装不了,请看附件中的安装注意。 4.找个程序往目标板中烧录程序看看,如果固件版本不对会提示升级 USB MSP430仿真器实物展示: 附件内容截图: 实物购买链接:https://detail.tmall.com/item.htm?spm=a230r.1.14.15.i6OGzJ&id=44425555253&ns=1&abbucket=19
【文章标题】: 绕过 Enigma Protector 2.xx 注册保护 【文章者】: CodeGame 【者邮箱】: CodeGame@Yeah.Net 【者主页】: http://blog.csdn.net/codegame 【者QQ号】: 441673604 【软件名称】: windows 计算器 【软件大小】: 669kb 【下载地址】: windows xp 系统自带 【加壳方式】: The Enigma Protector 2.20 正版 【保护方式】: The Enigma Protector 2.20 正版 【编写语言】: VC 【使用工具】: OllyDBG 【操平台】: Windows XP sp3 【软件介绍】: 1+1=2 【者声明】: 文笔菜的很请谅解,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 【详细过程】 参考了 http://unpack.cn/thread-59541-1-2.html 定位方式,迅速定位到了 Enigma 注册授权位置: 010F2CBF E8 CC76F3FF call calc_em.0102A390 010F2CC4 8B45 E8 mov eax,dword ptr ss:[ebp-0x18] 010F2CC7 E8 FC78F3FF call calc_em.0102A5C8 010F2CCC 50 push eax 010F2CCD E8 DE90FFFF call calc_em.010EBDB0 ; Check Registration Key Info 010F2CD2 85C0 test eax,eax ; Eax =1 Success! 010F2CD4 0F95C0 setne al 这里010EBDB0 这个CALL负责检测注册码是否正确,正确返回1 否则返回0,由于 Enigma有多线程内联补丁保护因此不能 直接硬写此处代码,所以我们采用了硬件断点HOOK来实现。 1:定位PatchAddress: 先看此块内存信息: 地址=01026000 大小=002F4000 (3096576.) 属主=calc_em 01000000 区段= 类型=Imag 01001002 访问=R 初始访问=RWE 这块内存实际是Enigma的内置DLL授权模块,此块DLL是被加密压缩过,因此也无法直接patch,通过对比加不同的程序 发现这块区域解压后的代码都不变: $+CCCBF > E8 CC76F3FF call calc_em.0102A390 $+CCCC4 > 8B45 E8 mov eax,dword ptr ss:[ebp-0x18] $+CCCC7 > E8 FC78F3FF call calc_em.0102A5C8 $+CCCCC > 50 push eax $+CCCCD > E8 DE90FFFF call calc_em.010EBDB0 ; Check Registration Key Info $+CCCD2 > 85C0 test eax,eax ; Eax =1 Success! $+CCCD4 > 0F95C0 setne al 因此PatchAddress = BaseAddress+PatchOffsetAddress,通过上面分析得到 Enigma Protector 2.20 的 PatchOffsetAddress = 0xCCCD2 ,不同版本的PatchOffsetAddress 有可能不一样,BaseAddress 的获取就更简单了, 直接搜索区段判断VirtualSize为0x002F4000的VirtualAddress+GetModuleHandle(0)即为BaseAddress,整理公式: PatchAddress = GetModuleHandle(0)+VirtualAddress+0xCCCD2 定完毕。 2.硬件Hook: 这里我们采用AddVectoredExceptionHandler向量化异常API来实现,具体细节请自己google,重点讲下Hook触发后的过程 由于我们Patch点为$+CCCD2 > 85C0 test eax,eax ,因此只需要模拟操EFlags然后跳过此段指令即可: pException^.ContextRecord^.EFlags := $202; //TEST eax,eax pException^.ContextRecord^.Eax := 1; //TEST eax,eax PException^.ContextRecord^.Eip := PException^.ContextRecord^.Eip + 2; //Nex 3.整体封装: 这里我们采用是把硬件HOOK和处理的过程都封装DLL 然后导出一个GoPatch的函数供目标程序调用,那么如何使目标程序 加载并执行我们的GoPatch函数呢,我办法很多注入,远线程等等。。这里我采用了劫持EIP的方式使目标程序加载我们的 DLL并执行GoPatch函数。 到这里已经全部完成,执行GoPatch后任意输入或者不输入用户名、注册码都可以直接绕过Enigma 的注册保护直接执行。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧