簡體   English   中英

有沒有一種方法可以將Adobe AIR(SWF / Flex)應用程序封裝到C#應用程序中以使用HASP保護

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM