问题标签 [mixed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1962 浏览

exception - 混合本机/托管可执行文件中的最终托管异常处理程序?

我有一个用 /clr 编译的 MFC 应用程序,我正在尝试为其他未捕获的托管异常实现最终处理程序。对于本机异常,覆盖CWinApp::ProcessWndProcException有效。

Jeff 的CodeProject 文章中建议的两个事件,Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException, 没有引发。

谁能建议一种为混合可执行文件提供最终托管异常处理程序的方法?


更新:

似乎这些异常处理程序仅在下游Application.Run或类似情况下触发(有工作线程风格,不记得名称。)如果您想真正全局捕获托管异常,则需要安装 SEH 过滤器。你不会得到一个System.Exception,如果你想要一个调用堆栈,你将不得不滚动你自己的助行器。

在有关此主题的 MSDN 论坛问题中,建议覆盖try ... catch (Exception^). 例如,CWinApp::Run. 这可能是一个很好的解决方案,但我没有研究过任何性能或稳定性影响。在保释之前,您将有机会使用调用堆栈进行日志记录,并且可以避免默认的 windows unahndled 异常行为。

0 投票
2 回答
7483 浏览

.net - 混淆混合 .NET DLL 的最佳产品

我有一个 .NET DLL 和应用程序。DLL 是用 C++/CLI 编写的,它是“混合的”,即部分托管代码和部分本地代码。

我有两个目标:
1. 混淆所有托管代码,使其无法被反汇编
2. 混淆混合 DLL 的公共方法/类,以便没有人可以在自己的应用程序中使用 DLL,即打乱公共名称。

是的,我知道混淆并不完美,人们仍然可以弄清楚并等等。这两个目标是管理要求。我发现的唯一可以处理这个问题的应用似乎是 Dotfuscator Professional Edition。不幸的是,它是那些非常烦人的应用程序之一,您必须乞求推销员告诉您价格。有谁知道另一种解决方案,或者知道购买便宜的合法副本的好地方吗?

不要告诉我用托管代码重写 DLL,这需要一个月的工作,而且我永远不会得到批准。:-)

请注意,我对混淆的效果并不特别偏执。任何打乱应用程序中所有方法和类的名称的东西都可能足够好。

以下是我尝试过的其他混淆器:

  • Dotfuscator 社区版随 Visual Studio 2008 提供,但不支持混合程序集。

  • Eazfuscator .NET 简单且免费,但不支持混合程序集。

  • {smartassembly} 的单个许可证为 500 美元。它有一些有趣的特性,但不支持混合程序集。

  • 蝾螈是800美元。声称完全支持混合程序集,但每当我尝试使用混淆的 dll 时,应用程序就会崩溃

  • .NET Reactor 的单个开发人员许可证价格为 180 美元。它支持混合 DLL 的“部分”混淆。不幸的是,如果你混淆了DLL 上的公共类型,它就不起作用,.exe 找不到类。它具有将 DLL 合并/打包到 .exe 中的能力,但是当您使用混合 DLL 执行此操作时,它不起作用(exe 找不到 DLL 的程序集,即使它是 .exe 的一部分)

  • Skater 是 300 美元的单张执照。我在他们的网站上没有看到任何声称它支持混合程序集的东西,而且我厌倦了尝试应用程序却只是感到失望,所以我假设它不支持。

我还尝试过 Microsoft 的 ILMerge,看看我是否可以将 DLL 与 .exe 合并,然后进行混淆,但似乎混合 DLL 也会窒息。

对于 Dotfuscator 的替代品或购买合法副本的好地方有什么建议吗?我发现几个无名网站声称卖得便宜,但我认为那些是俄罗斯盗版版本。

0 投票
2 回答
1199 浏览

c++ - 混合语言编程、VB 和 C++、理解 API 和指针

我的问题是理解混合语言编程和访问外部库中的 API 的更好点。我在 C++ 方面的技能不存在,而在 VB 方面则平庸。

我编译了一个 c++ dll(portaudio 库),并试图从 VB(Visual Studio 2005)访问它。我在调用函数时遇到 MarshallDirectiveException 错误,我相信是因为我与 dll 交互不正确。


C++ 函数和结构定义如下:

标题信息:

文档中的程序用法:

检索指向包含指定设备信息的 PaDeviceInfo 结构的指针。

返回: 指向不可变 PaDeviceInfo 结构的指针。如果设备参数超出范围,则函数返回 NULL。

参数:设备 0 到 (Pa_GetDeviceCount()-1) 范围内的有效设备索引


在VB程序中,我有:

这感觉是错误的,因为文档状态 Pa_GetDeviceInfo 返回一个指向包含结构信息的结构的指针,这意味着函数最初创建了结构。

我对混合语言编程完全陌生,完全是 C++ 菜鸟,也是一个糟糕的 VB 程序员。谁能指导我以正确的方式解决这个问题?我的感觉是我需要了解如何让 VB 引用在 dll 中创建的内存中的结构,所以我需要让 vb 将“指向事物的指针”理解为函数返回。

非常感谢提供的任何帮助。请不要只说 rtfm,我现在在 FM 中取决于我的眼睛,我只是不知道在哪里看。

非常感谢,大卫

0 投票
3 回答
3339 浏览

c++ - Visual Studio 2005 VB 调试与 c++ dll - 混合语言调试

我有一个调用 dll 中的函数的 vb 项目。该dll是在一个单独的vs项目(portaudio)中创建的,它是用c编写的。

dll c项目编译干净并构建所需的dll,我目前将其放入c:\windows\system到vb运行时可以看到它。

VB 项目位于 c:\devprojects\vbtest

C 项目位于 c:\devprojects\portaudio,项目文件位于 c:\devprojects\portaudio\build\msvc。在此 msvc 目录下的 Win32\debug 中创建的 Dll。

当我调用dll函数时,vs调试器是否可以单步调试dll中的c函数-我有所有代码等,但我不知道VS2005是否支持这种混合语言调试。

如果这是可能的,您能否建议我应该如何设置我的 Visual Studio 来实现这一点。

非常感谢大卫

0 投票
1 回答
1321 浏览

web - 如何使用 jQuery 读取 RSS 提要

如何使用 JavaScript 或 jQuery 解析 RSS 提要?

0 投票
3 回答
222 浏览

linux - 是否可以设置混合架构集群?

我有一台运行 Linux 的 x86-64 计算机,我想补充其他非 x86-64 Linux 计算机。

是否有可能以某种方式从另一台机器的计算能力中受益,而无需它是相同的架构?

作为第二个问题,可以获得什么样的性能提升,是否需要专门的软件才能工作?或者 Linux 是否可以将集群/附加机器抽象为附加 CPU?

0 投票
2 回答
1981 浏览

encryption - 加密 C++/CLI /clr DLL 和 Assembly.Load()

伙计们。我正在为我所属的在线社区开发客户端软件。为了让我给它写一个客户端,所有者和网站管理员要求对我的代码进行加密(不仅仅是混淆)。我的大部分项目都是用 VB.NET (F3.5) 编写的,其中一些出于性能原因通过 C++/CLI 使用 SQLite 和 libcrypt(所以我不能使用 /clr:safe)。换句话说,如果要使用 /clr:safe ,编写 C++/CLI 代码将毫无意义(我只需在 VB 中编写所有代码,这要容易得多)。

如果这只是 VB 项目,我只需编写一个 C++ 加载程序,将代码从存储中解密到内存中,然后使用 Assembly.Load() 通过一些公共方法(例如,主窗体)使其运行。但是,一些莫名其妙的策略阻止我使用未经验证的 C++/CLI 代码来执行此操作。我不知所措,因为我可以使用正常的 DLL 加载机制不受限制地使用任何“不安全”的 DLL,但由于某种原因,我不能使用 Assembly.Load() 来做到这一点。我不明白为什么这应该更安全(鉴于其他选项可用)。Caspol.exe 没有帮助,即使有帮助,我也不能要求社区中的每个人都关闭他们机器的访问安全性。直接从内存加载 EXE 或 DLL 似乎不可行(UPX使用常规 DLL 执行此操作,但不使用 .

所以我问以下问题:

  • 你们能想到我可以用来加密 C++/CLI DLL 的 MISL 部分的任何方法吗?(我认为代码与常规 x86 机器代码混合在一起)。

  • 有什么方法可以从字节加载未经验证的 .NET DLL,就像我尝试使用 Assembly.Load 一样?

或者,由于 CreateProcess() 和 LoadLibrary() 只采用路径,我虽然可以编写一个临时 EXE 映像并从存储中运行它。但是我需要用户无法访问该图像,因此将其写入磁盘将是愚蠢的;它应该是易变的东西,例如私有 ramdisk 之类的东西。有什么想到的吗?(Windows 2000 及更高版本)。

非常感谢,

吉尔

0 投票
5 回答
569 浏览

asp.net - 是否可以通过运行 asp.net 表单身份验证的站点获取 Windows 登录名?

我有一个配置了 asp.net 2.0 表单身份验证的大型用户群的网站。在用户通过表单身份验证登录之前,是否可以在他们使用的机器上检索 Windows 登录名/用户帐户名?

非常感谢

0 投票
1 回答
460 浏览

visual-c++ - 在发布和调试模式下同时使用 Boost

标题只是为了取笑。:-) 我知道这是不可能的,但这是我的问题。

我的应用程序(实际上是一个 DLL)使用 Boost。它还使用外部 API,该 API 也使用 Boost。外部 API 当然是在发布二进制文件中提供的,以及所需的发布 Boost 二进制文件。

当我在发布模式下编译/链接我的 DLL 时,我没有问题。我精确地以动态方式将我的应用程序链接到 Boost (BOOST_ALL_DYN_LINK)。在调试模式下,我无法加载我的 DLL。我不确定是不是因为 Boost,但我怀疑 Windows 不喜欢使用两个 Boost(一个由外部库调用的版本,一个由我的代码调用的调试版本)。

如果我将我的代码与发布 Boost 静态链接,它会更好地工作吗?

我认为它与 CRT 无关,因为我在事件查看器中没有任何内容。

我使用 Visual Studio 2005 SP1。

谢谢。

0 投票
3 回答
1001 浏览

java - 我可以使用 JCheckbox 来显示“混合状态”吗

在 Windows 中,可以显示一个灰色的 JCheckbox,以表明它所代表的数据集合并非所有项目都具有相同的值。

这甚至可以使用 JCheckBox 吗?我该怎么做?(希望有办法不覆盖它)

谢谢