这个C程序如何工作?
main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1:10);}
Run Code Online (Sandbox Code Playgroud)
它按原样进行编译(测试gcc 4.6.3).它打印编译时的时间.在我的系统上:
!! !!!!!! !! !!!!!! !! !!!!!!
!! !! !! !! !! !! !! !!
!! !! !! !! !! !! !! !!
!! !!!!!! !! !! !! !! !! !!!!!!
!! !! !! !! !! !! !!
!! !! !! !! !! !! !!
!! !!!!!! !! !! !! !!!!!!
Run Code Online (Sandbox Code Playgroud)
资料来源:sykes2 - 一行中的一个时钟,sykes2作者提示
一些提示:默认情况下没有编译警告.编译时-Wall,会发出以下警告:
sykes2.c:1:1: warning: return type defaults to ‘int’ [-Wreturn-type]
sykes2.c: In function ‘main’:
sykes2.c:1:14: warning: value …Run Code Online (Sandbox Code Playgroud) 我想创建一个非开源的JavaScript应用程序,因此我希望学习如何模糊我的JS代码?这可能吗?
我正在开发一个Python软件,将分发给我的雇主的客户.我的雇主希望使用时间限制的许可证文件来限制软件的使用.
如果我们分发.py文件甚至.pyc文件,那么很容易(反编译)删除检查许可文件的代码.
另一个方面是我的雇主不希望我们的客户阅读代码,担心代码可能被盗或至少是"新颖的想法".
有没有一个很好的方法来处理这个问题?优选使用现成的解决方案.
该软件将在Linux系统上运行(所以我认为py2exe不会这样做).
混淆是一种方式,但它无法防止破坏应用程序的盗版保护安全性.我如何确保应用程序不被篡改,以及如何确保注册机制不能被反向工程?
此外,可以将C#应用程序转换为本机代码,而Xenocode代价太高.
C#提供了很多的功能,并且是我的代码的理想语言,所以下再次写入整个代码库++是出了问题.
可以从.NET中的签名程序集中轻松删除安全证书.
我在编码书中看到了以下宏定义.
#define TRUE '/'/'/'
#define FALSE '-'-'-'
Run Code Online (Sandbox Code Playgroud)
那里没有解释.
请向我解释如何将这些作为工作TRUE和FALSE.
由同事作为一个谜题,我无法弄清楚这个C程序实际上是如何编译和运行的.什么是这个>>>=运算符和奇怪的1P1文字?我在Clang和GCC进行了测试.没有警告,输出是"???"
#include <stdio.h>
int main()
{
int a[2]={ 10, 1 };
while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
printf("?");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我看到下面的代码这次提交的MongoDB的Java的连接驱动程序,它首次出现时是某种玩笑.以下代码有什么作用?
if (!((_ok) ? true : (Math.random() > 0.1))) {
return res;
}
Run Code Online (Sandbox Code Playgroud)
有没有人用过PHP的好混淆器?我尝试了一些,但他们不适用于非常大的项目.例如,它们无法处理包含在一个文件中并在另一个文件中使用的变量.
或者你有任何其他技巧来阻止代码的传播?
我一直在考虑如何保护我的C/C++代码免于反汇编和逆向工程.通常我永远不会在我的代码中宽恕这种行为; 然而,为了各种人的安全,我一直在努力的现行协议绝不能被检查或理解.
现在这对我来说是一个新的主题,互联网并不是真正有效防范逆向工程,而是描绘了大量有关如何逆向工程的信息
到目前为止我想到的一些事情是:
编写我自己的启动例程(调试器更难绑定)
void startup();
int _start()
{
startup( );
exit (0)
}
void startup()
{
/* code here */
}
Run Code Online (Sandbox Code Playgroud)运行时检查调试器(如果检测到则强制退出)
功能蹦床
void trampoline(void (*fnptr)(), bool ping = false)
{
if(ping)
fnptr();
else
trampoline(fnptr, true);
}
Run Code Online (Sandbox Code Playgroud)无意义的分配和解除分配(堆栈变化很多)
我的意思是这些是我所想到的一些事情,但是在适当的时间范围内,它们都可以被代码分析师解决或者解决.我还有其他选择吗?