小编Tho*_*omi的帖子

在C++中模糊敏感字符串的技术

我需要在我的C++应用程序中存储敏感信息(我想保密的对称加密密钥).简单的方法是这样做:

std::string myKey = "mysupersupersecretpasswordthatyouwillneverguess";

但是,通过该strings过程(或从二进制应用程序中提取字符串的任何其他应用程序)运行应用程序将显示上述字符串.

应使用哪些技术来掩盖这些敏感数据?

编辑:

好的,所以你们所有人都说"你的可执行文件可以进行逆向工程" - 当然!这是我的一个宠儿,所以我要在这里咆哮:

为什么99%(好吧,或许我夸大一点)这个网站上所有与安全相关的问题都会被"没有可能的方法来创建一个完全安全的程序"所回答 - 这不是一个有用的回答!安全性是完美可用性与一端无安全性之间的滑动尺度,完美的安全性,但另一方面没有可用性.

关键在于,您可以根据您要执行的操作以及运行软件的环境来选择滑动比例.我不是在为军事装置编写应用程序,我正在为家用PC编写应用程序.我需要使用预先知道的加密密钥在不受信任的网络上加密数据.在这些情况下,"通过默默无闻的安全"可能已经足够了!当然,有足够时间,精力和技能的人可以对二进制文件进行逆向工程并找到密码,但猜猜是什么?我不在乎:

实施顶级安全系统所花费的时间比破解版本的销售损失更为昂贵(不是说我实际上是卖这个,但你明白了我的意思).在新程序员的编程中,这个蓝天"让我们尽可能做到绝对最好的方式"的趋势至少可以说是愚蠢的.

感谢您抽出宝贵时间回答这个问题 - 他们最有帮助.不幸的是,我只能接受一个答案,但我已经投了所有有用的答案.

c++ security obfuscation defensive-programming

85
推荐指数
5
解决办法
3万
查看次数

跨平台IPC

我正在寻找有关可能的IPC机制的建议:

  • 跨平台(至少Win32和Linux)
  • 易于在C++中实现以及最常见的脚本语言(perl,ruby,python等).
  • 最后,从编程的角度来看简单易用!

我的选择是什么?我正在Linux下编程,但我希望将来我写的可以移植到其他操作系统.我曾考虑使用套接字,命名管道或DBus之类的东西.

cross-platform ipc

72
推荐指数
9
解决办法
4万
查看次数

Linux API列出正在运行的进程?

我需要一个C/C++ API,它允许我列出Linux系统上正在运行的进程,并列出每个进程打开的文件.

希望最终直接读取的/ proc /文件系统.

谁能想到办法做到这一点?

c c++ linux api process

49
推荐指数
5
解决办法
8万
查看次数

正则表达式检测用于&while循环的半冒号终止C++

在我的Python应用程序中,我需要编写一个匹配C++ forwhile循环的正则表达式,该循环使用分号(;).例如,它应匹配此:

for (int i = 0; i < 10; i++);
Run Code Online (Sandbox Code Playgroud)

......但不是这个:

for (int i = 0; i < 10; i++)
Run Code Online (Sandbox Code Playgroud)

这看起来很琐事,直到您意识到开括号和右括号之间的文本可能包含其他括号,例如:

for (int i = funcA(); i < funcB(); i++);
Run Code Online (Sandbox Code Playgroud)

我正在使用python.re模块.现在我的正则表达式看起来像这样(我已经留下了我的评论,所以你可以更容易理解):

# match any line that begins with a "for" or "while" statement:
^\s*(for|while)\s*
\(  # match the initial opening parenthesis
    # Now make a named group 'balanced' which matches a balanced substring.
    (?P<balanced>
        # A balanced substring is either something that is not …
Run Code Online (Sandbox Code Playgroud)

c++ python regex recursion parsing

35
推荐指数
3
解决办法
10万
查看次数

在QObject上调用的槽的顺序

我有一个QObject,有多个插槽连接到其中一个信号.在发出信号时,是否有一个命令可以调用每个插槽?

qt

32
推荐指数
2
解决办法
8493
查看次数

如何防止在堆上创建对象?

有没有人知道我怎么能在平台无关的C++代码中阻止在堆上创建对象?也就是说,对于"Foo"类,我想阻止用户这样做:

Foo *ptr = new Foo;
Run Code Online (Sandbox Code Playgroud)

并且只允许他们这样做:

Foo myfooObject;
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?

干杯,

c++ heap stack

26
推荐指数
3
解决办法
8478
查看次数

如何衡量CppUnit测试覆盖率(在win32和Unix上)?

我有一个非常大的代码库,包含大量的单元测试(使用CppUnit).我需要确定这些测试执行的代码百分比,并且(理想情况下)生成某种报告,该报告以每个库或每个文件的形式告诉我,执行了多少代码.

这是踢球者:这必须完全不受限制地运行(最终在持续集成构建中),并且必须是跨平台的(至少WIN32和*nix).

任何人都可以建议一个工具,或一组可以帮助我做到这一点的工具吗?我不能改变CppUnit(我也不想 - 它踢屁股),但除此之外,我很想听到你可能有的任何建议.

干杯,

c++ unit-testing cppunit cross-platform code-coverage

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

Mac事件点击只会延迟丢弃的事件

我正在尝试编写一些在Mac OSX 10.6上启用时丢弃所有键盘和鼠标事件的代码.我的代码以root用户身份运行.我正在采取的方法是创建一个事件点击,丢弃传递给它的所有事件(启用时).事件点击回调函数如下所示:

CGEventRef MyTapCallback(CGEventTapProxy proxy,
                         CGEventType type,
                         CGEventRef event,
                         void *refcon)
{
    return CKeyLocker::isEnabled() ? NULL : event;
}
Run Code Online (Sandbox Code Playgroud)

我用来启用和禁用事件tap的代码如下所示:

void CKeyLocker::enable(bool bEnable)
{
    if (bEnable == m_bEnabled)
        return;

    if (bEnable)
    {
        // which events are we interested in?
        CGEventMask evMask = kCGEventMaskForAllEvents;
        CFMachPortRef mp = CGEventTapCreate(kCGHIDEventTap,
                                            kCGHeadInsertEventTap,
                                            kCGEventTapOptionDefault,
                                            evMask,
                                            MyTapCallback,
                                            NULL);

        if (mp)
        {
            qDebug() << "Tap created and active. mp =" << mp;
            m_enabledTap = mp;
            m_bEnabled = true;
        }
    }
    else
    {
        CGEventTapEnable(m_enabledTap, false);
        CFRelease(m_enabledTap);
        m_enabledTap …
Run Code Online (Sandbox Code Playgroud)

c++ macos events macos-carbon quartz-graphics

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

将未绑定的python函数存储在类对象中

我正在尝试在python中执行以下操作:

在名为foo.py的文件中:

# simple function that does something:
def myFunction(a,b,c):
  print "call to myFunction:",a,b,c

# class used to store some data:
class data:
  fn = None

# assign function to the class for storage.
data.fn = myFunction
Run Code Online (Sandbox Code Playgroud)

然后在一个名为bar.py的文件中:import foo

d = foo.data
d.fn(1,2,3)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

TypeError:必须使用数据实例作为第一个参数调用未绑定方法f()(改为使用int实例)

我认为这是公平的 - python将d.myFunction视为一个类方法.但是,我希望它将它视为普通函数 - 所以我可以调用它而无需在myFunction定义中添加未使用的'self'参数.

所以问题是:

如何在没有函数绑定到该类的情况下将函数存储在类对象中?

python function

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

Qt问题:信号和插槽如何工作?

信号和插槽如何在高级抽象中工作?

如何在高级抽象中实现信号和槽?

c++ qt

15
推荐指数
3
解决办法
2万
查看次数