作者crazying (追杀大象)
看板NTUGIEE_EDA
标题Re: 暗黑程式?
时间Tue Jun 13 11:36:49 2006
※ 引述《yellowfishie (喵喵喵喵~~~)》之铭言:
: 有没有人有兴趣把程式转成让人看不懂(不容易看懂),
: 但却可以正确执行的?
: 就是把有意义的变数/函数名称
: 转成无意义的变数/函数名称 (如 sum => xxx, answer => xxxx)
: 例如:
: int main()
: {
: int s = sum(100);
: return s;
: }
: int sum(int upper_bound)
: {
: int answer = 0;
: for (int i = 1; i <= upper_bound; i++)
: { answer += i; }
: return answer;
: }
: 转成:
: int main()
: {
: int Xx = xXx(100);
: return Xx;
: }
: int xXx(int xXXx)
: {
: int xxxXx = 0;
: for (int x = 1; x <= xXXx; x++)
: { xxxXx += x; }
: return xxxXx;
: }
: 看起来用 lex 加乱数就可以达到。
: 多的额外功能: 建一个 symbol table, 进行加密/解密。
这是去年其中一个范例,hoyle.c,可以画出 y = x^2 的图形:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define _ ;double
#define void x,x
#define case(break,default) break[O]:default[O]:
#define switch(bool) ;for(;x<bool;
#define do(if,else) inIine(else)>int##if?
#define true (--void++)
#define false (++void--)
char*O=" <60>!?\\\n"_ doubIe[010]_ int0,int1 _ Iong=0 _ inIine(int eIse){int
O1O=!O _ l=!O;for(;O1O<010;++O1O)l+=(O1O[doubIe]*pow(eIse,O1O));return l;}int
main(int booI,char*eIse[]){int I=1,x=-*O;if(eIse){for(;I<010+1;I++)I[doubIe-1]
=booI>I?atof(I[eIse]):!O switch(*O)x++)abs(inIine(x))>Iong&&(Iong=abs(inIine(x
)));int1=Iong;main(-*O>>1,0);}else{if(booI<*O>>1){int0=int1;int1=int0-2*Iong/0
[O]switch(5[O]))putchar(x-*O?(int0>=inIine(x)&&do(1,x)do(0,true)do(0,false)
case(2,1)do(1,true)do(0,false)6[O]case(-3,6)do(0,false)6[O]-3[O]:do(1,false)
case(5,4)x?booI?0:6[O]:7[O])+*O:8[O]),x++;main(++booI,0);}}}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.5.65