[英]Is there a way to envelope Adobe AIR (SWF/Flex) application into C# application to use HASP protection
我们有一个使用Flex Framework的Adobe AIR应用程序。 它最初是为浏览器版本构建的,但现在我们还需要将其用作独立应用程序。 使用Adobe AIR可以做到这一点。
但是,我们需要在此应用程序中使用IP保护,对于我们的服务器端应用程序,我们使用SafeNet(以前称为Alladin)HASP密钥。 可以使用相同的密钥来加密客户端独立应用程序,但是这些密钥支持的语言集非常有限,最简单的语言是C#(.NET)。
HASP保护的工作方式如下:执行加密的二进制文件,解密引擎将检查USB密钥,如果存在,则写入密钥的解密机制会将应用解密到内存中并执行。
因此,问题是-将SWF / AS文件嵌入C#应用程序的最佳(简便,安全)方法是什么,以便这些文件也将被加密并因此受到保护?
PS:我已经阅读了有关此问题的其他问题,无法直接在AIR中使用HASP保护,但是有些问题暗示可以通过ActiveX容器从C#应用程序使用SWF应用程序。
PPS:也许这是一个愚蠢的问题,但是我没有C#的经验,因此任何链接,解释,详细说明或示例都将不胜感激。
这会将嵌入式swf资源作为二进制内存流加载到嵌入窗体的Flash Player COM对象中(无需创建临时文件)。 请注意,SWF的功能将限于“标准” Flash Player沙箱,您不能以这种方式嵌入和运行使用桌面/ extendedDesktop的AIR swf。
我已经用完整的代码和一个示例swf创建了一个GitHub Project 。
1)将AIR应用程序编译为SWF
2)创建一个新的C#Forms项目
3)在解决方案资源管理器中,右键单击“参考”,然后从“ COM”选项卡中添加“ ShockWave Flash”
4)在解决方案资源管理器中,右键单击项目,然后选择“属性”。 在新打开的表单中选择“资源”选项卡,然后将SWF添加为资源。
5)从工具箱的“常规”选项卡中,在表单上放置一个“ ShockWave Flash”组件
6)将以下代码添加到表单中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace SwfRes
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
LoadBinSwf();
}
private void LoadBinSwf()
{
//Assuming your swf is called "Main.swf"
byte[] swf = Properties.Resources.Main;
MemoryStream memStream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(memStream);
writer.Write(8 + swf.Length);
writer.Write(0x55665566);
writer.Write(swf.Length);
writer.Write(swf);
memStream.Seek(0, SeekOrigin.Begin);
axShockwaveFlash1.OcxState = new AxHost.State(memStream, 1, false, null);
}
}
}
如果只想用swf / flex文件加密C#应用程序,则可以将swf文件作为嵌入式资源添加到C#应用程序中。 这样,您将只有一个可执行文件,并且它将包含swf应用程序。
当您的C#应用程序启动时,您需要获取swf文件并执行该文件(但似乎您知道在这里做什么)。
这是有关如何在应用程序中嵌入二进制资源并在执行时提取它们的教程: http : //www.dotnetscraps.com/dotnetscraps/post/Insert-any-binary-file-in-C-assembly-and-提取-IT-AT-runtime.aspx
您可以将AIR应用程序编译为本机可执行文件。 对于Windows(例如),就是.exe。 我想,一旦您为每个平台本地编译了AIR应用程序,就可以轻松地从C#中调用/执行AIR应用程序。
本机安装程序(我上次使用它)仅通过命令行可用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.