问题列表 - 第5336页

保护我的代码免受逆向工程

正如在这里这里的类似问题中所讨论的,我想保护我的代码免受逆向工程.

我的情况是这样Simucal在他的(优秀)答案描述在这里:

基本上,它归结为唯一的机会是你有一个非常具体的,难以设计的,与你的领域相关的算法,让你在竞争中占据优势.这是尝试对应用程序的一小部分进行逆向工程的唯一时间.

我确实有这种情况.一种难以设计的算法,对我们的特定领域而言是优雅且有价值的.

经过数月的微调和开发后,最终结果非常紧凑(大约100行代码)和优雅.我想保护代码的这一特定部分免受逆向工程或至少使其合理困难.

该场景是一个用C#编写的富客户端应用程序,我必须部署这部分代码 - 我无法从Web服务执行它.

我认为,由于性能原因(以及跨边界问题),提取代码并在非托管本机二进制文件中重写代码不是一种选择.

最初我想做简单的混淆,但考虑到代码的小,我不认为这会提供很多保护.

理想情况下,我想保护我的整个应用程序,但有两个主要问题似乎使普通的混淆器和第三方打包器难以使用:

  1. 该应用程序提供了一个插件接口,因此不应对某些程序集(和接口/类)进行模糊处理和打包

  2. 我们仍然希望能够在接收错误报告时获得真正的堆栈跟踪 - 这可能是我对映射模糊到真实代码所做的.

将这些问题放在一边(尽管我也很感激这方面的任何意见),保护我的一小部分代码免受逆向工程的好方法是什么?我并不担心任何人改变或破解代码,而是想让它难以理解和逆向工程.

c# obfuscation reverse-engineering

6
推荐指数
1
解决办法
2852
查看次数

计算每天改变价值的公式的最佳方法是什么?

我使用存储在名为tb_player的SQL表中的以下列:

Date of Birth (Date),Times Played (Integer),Versions (Integer)

计算以下公式中的"playvalue"(整数):

playvalue = (Today - Date of Birth) * Times Played * Versions
Run Code Online (Sandbox Code Playgroud)

我随时在网页上显示最多100条带有关联播放值的记录.

我的问题是,由于(今天的出生日期)变化,它每天只会改变一次,因此计算这个游戏值的最有效方法是什么?其他值(播放时间和版本)保持不变.

有没有比每次为100条记录动态计算更好的方法?如果是这样,在存储过程或VB.NET/C#中进行计算是否更有效?

c# sql vb.net stored-procedures

1
推荐指数
1
解决办法
209
查看次数

TortoiseHG和TortoiseSVN一起玩得很好?

我先安装了TSVN,并且已经使用了很长时间.然后我安装T-HG,当我点击右键时,我看不到任何TortoiseHG.

有没有人有同样的问题?

所有T-SVN覆盖仍然存在.

svn tortoisesvn mercurial tortoisehg

14
推荐指数
2
解决办法
1万
查看次数

linq-to-sql中的公用表表达式(CTE)?

是否可以在Linq to SQL中执行公用表表达式(CTE)(如下所示).我对CTE和Linq to SQL都很陌生.

我目前正在免费存储过程(但不能以任何方式对付它们)所以我不想仅仅针对一个查询进行存储过程的跳跃,除非它是完全必要的.

这是我在SQL中做的一个例子,我想知道我是否可以在Linq to SQL中做:

WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS
(
   -- Base case
   SELECT
      TaskID,
      [Subject],
      ParentID,
      1 as HierarchyLevel,
      CONVERT(VARCHAR(MAX),'/') AS HierarchyPath
   FROM Task
   WHERE TaskID = 2

   UNION ALL

   -- Recursive step
   SELECT
      t.TaskID,
      t.Subject,
      t.ParentID,
      th.HierarchyLevel + 1 AS HierarchyLevel,
      CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath
   FROM Task t
      INNER JOIN TaskHierarchy th ON
         t.ParentID = th.TaskID
)

SELECT *
FROM TaskHierarchy
ORDER BY HierarchyLevel, [Subject]
Run Code Online (Sandbox Code Playgroud)

common-table-expression linq-to-sql

31
推荐指数
1
解决办法
1万
查看次数

确定列表是否是Python上的目录或文件

Python有一个标准的库模块ftplib来运行FTP通信.它有两种获取目录内容列表的方法.一,FTP.nlst()将返回给定目录名作为参数的目录内容列表.(如果给定文件名,它将返回文件的名称.)这是一种列出目录内容的可靠方法,但不会指示列表中的每个项目是文件还是目录.另一种方法是FTP.dir(),它给出了作为参数给出的目录的目录内容的字符串格式列表(或给定文件名的文件属性).

根据之前关于Stack Overflow的问题,解析结果dir()可能很脆弱(不同的服务器可能会返回不同的字符串).我正在寻找一些方法来列出通过FTP在另一个目录中包含的目录.据我所知,d在字符串的权限部分中抓取一个是我提出的唯一解决方案,但我想我无法保证权限将出现在不同服务器之间的同一位置.是否有更强大的解决方案来识别FTP上的目录?

python ftp

6
推荐指数
1
解决办法
5999
查看次数

从C转发stdin和stdout

我想重开stdinstdout(也许stderr当我在它)的文件句柄,从而使未来的呼叫printf()putchar()还是puts()会去到一个文件,以及未来的呼叫getc()和这种将来自一个文件.

1)我不想永久丢失标准输入/输出/错误.我可能希望稍后在程序中重用它们.

2)我不想打开新的文件句柄,因为这些文件句柄必须要么传递很多,要么全局传递(不寒而栗).

3)如果我无法帮助,我不想使用任何open()fork()其他系统相关的功能.

所以基本上,这样做是否有效:

stdin = fopen("newin", "r");
Run Code Online (Sandbox Code Playgroud)

而且,如果确实如此,我怎样才能得到原来的价值stdin?我是否必须将其存放在一个FILE *以后才能将其取回?

c redirect stdio

62
推荐指数
5
解决办法
12万
查看次数

为什么'没有选择数据库'SQLException?

为什么这个程序在第二次进入do while循环时没有执行,为什么它会给出异常"异常java.sql.SQLException:[MySQL] [ODBC 5.1驱动程序] [mysqld-5.0.51a-community-nt ]没有选择数据库"

//import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.util.Vector;

public class DataBase {

    public void LoadDriver() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }

    // 2.open a data source name by means of the jdbcodbcdriver.

    static void connect() throws SQLException {

        // Connect to the database
        Connection con = DriverManager.getConnection("jdbc:odbc:MySQL", "root", "admin");
        Statement stmt = con.createStatement();
        // …
Run Code Online (Sandbox Code Playgroud)

java jdbc

6
推荐指数
2
解决办法
1万
查看次数

无需大量投射即可创建和初始化不同的子类型

我肯定会在下面的代码中乱搞很多代码.似乎应该有一个更顺畅的方式.我基本上尝试使用构建器方法(CreateNewPattern)来处理创建传递的子类类型的新对象(通过CreateNewCircularPattern和CreateNewLinePattern方法).我目前只有两个子类型的CircularHolePattern和SingleLineHolePattern继承自HolePattern,但我希望随着我的应用程序的增长有更多.

这是一个使用委托或lambda的地方吗?它对它们一无所知,所以请尽可能具体和代码建议.

private CircularHolePattern CreateNewCircularPattern()
{
   var CreatedPattern = CreateNewPattern(typeof(CircularHolePattern));
   return (CircularHolePattern)CreatedPattern;
}


private SingleLineHolePattern CreateNewLinePattern()
{
   var CreatedPattern=CreateNewPattern(typeof(SingleLineHolePattern));
   return (SingleLineHolePattern)CreatedPattern;
}

private HolePattern CreateNewPattern(Type PatternTypeToCreate)
{
    var NewHolePattern = (HolePattern)Activator.CreateInstance(PatternTypeToCreate);
    NewHolePattern.PatternName = "Pattern #" + (HolePatterns.Count + 1).ToString();
    this.AddPattern(NewHolePattern);
    this.SetActivePattern(NewHolePattern);
    return NewHolePattern;
}
Run Code Online (Sandbox Code Playgroud)

.net c# generics

3
推荐指数
1
解决办法
141
查看次数

在其原始许可下涵盖的互操作定义的程度

我有一个为视频文件创建缩略图的项目,它基于directshow.net中的互操作定义.

目前媒体浏览器是GPL所以一切都是兼容的,我很高兴剪切和粘贴这些代码(因为它的所有归属都正确).

但是......我正在考虑将此代码包含在衍生的MIT许可项目中.这留下了一点点.

Directshow.net是根据LGPL许可的,这意味着我可以依赖该DLL.但是......我不能在限制较少的许可下包含代码.

有问题的文件是互操作定义,可以通过阅读MSDN并将内容翻译成C#来轻松/繁琐地定义,如果我手动执行此操作,我很可能会得到相同的代码(或非常类似的东西).

我站在哪里?如何将此功能纳入我的MIT许可项目?

相关:http://sourceforge.net/forum/forum.php?thread_id = 3040125&forum_id = 460697

.net licensing

0
推荐指数
1
解决办法
367
查看次数

将现有表单添加到C++/CLI WinForms项目

我在单独的解决方案中有两个C++/CLI项目A和B. 我使用A进行实验/测试,并在测试完成后将测试的代码移到B. 但是,我发现在向项目B添加Windows窗体类(header,cpp和resx)时,我不再能够使用IDE的可视窗体设计器.我如何启用它?

c++-cli visual-studio-2008 visual-studio winforms

7
推荐指数
1
解决办法
3402
查看次数