黑客代码都是怎么编辑的?
针对不同的程序/对象,使用不同的语言。本人痛狠无孔不入的黑客,所以,只能告诉你:那些代码都是手写的。
Javascript 看看黑客怎么写的 [转]
它可以在大部分浏览器上运行。(虽然目前我测试过手头的浏览器都能运行,但理论上不能保证所有浏览器都能正确运行,原因见下文) 这段代码的好处(对于黑客)是,它不包含任何字符或数字,可以逃过某些过滤器的检查。比如说,如果假定一个AJAX请求将返回一个只包含数字的JSON,于是很可能会简单判断了一下其中不含字母就直接eval了,结果给黑客们留下了后门。上面的代码功能很简单,只是alert(1),但使用同样的原理,完全可以干出更复杂的事,例如alert(document.cookie)。更重要的是,这段代码再一次提醒我,黑客的想象力是无限的……正如Ryan Barnett的演讲标题:"XSS:The only rule is no rule"。 我们可以把它分为两个部分来理解: 第一部分: ($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])() 第二部分:[__[_/_]+__[_+~$]+$_[_]+$$](_/_) 其中第一部分是核心,我们首先对它进行分析,先缩进一下: ($= [$=[]][ (__=!$+$)[_=-~-~-~$] + ({}+$)[_/_] + ($$= ($_=!''+$)[_/_] + $_[+$]) ] )() 显然,最外层是(...)()形式的函数调用,我们需要看看这里究竟调用了什么函数,返回了什么。下一步,我们把原来代码中赋值表达式提取出来,将其改写为以下等价形式:$ = []; //1 __ = !$+$; //2 _ = -~-~-~$; //3 $_=!''+$; //4 $$ = $_[_/_] + $_[+$]; //5 $= [$][ __[_] + //6 ({}+$)[_/_] + //7 $$ //8 ]; //9 $(); //10 现在来一行行看: 1. $先赋值为一个空数组 (后面会被覆盖) 2. __ = ![] + [] = false + [] = "false" 这里利用了javascript运算的强制类型转换特性。首先空数组是一个非null值,因此![]的结果是false(布尔型)。在计算false + []时,由于数组对象无法与其他值相加,在加法之前会先做一个toString的转换,空数组的toString就是"",因此事实上在计算false + ""。这时false被自动转换为字符串。最终结果是"false"+"" = "false"。 **换句话说,在$为空数组时,使用 “+$”的方式可以将任何一个值转为字符串** 3. 在计算~[]时,~需要一个数字操作数,空数组无法直接转换为数字,则作为0处理。因此~[] = ~0 = -1。 参考: ~3 = -4 ~[3] = -4 ~[3,2] = -1 (无法转为数字) ~"3" = -4 ~"abc" = -1 因此: _ = -~-~-~[] = -~-~-(-1) = -~-~1 = -~-(-2) = -~2 = -(-3) = 3 理论上,可以用这种方式得出1-9所有数字 4. !''是true,使用+$将其变为字符串 "true" 5. 这里需要注意的是,之前一直用“值+[]”来获得“值”的字符串形式。而“+[]”则是0(正号导致[]被自动转换为数值0)。因此:$$ = "true"[3/3] + "true"[+[]] = "true"[1] + "true"[0] = "rt" 6. __[_] = "false"[3] = "s" 7. ({} + [])导致空对象{}被转换为字符串"[object Object]", 因此({}+$)[_/_] = "[object Object]"[1] = "o" 9. 这里把$覆盖为 [[]]["s"+"o"+"rt"]。注意这里[[]]本身是一个包含空数组的数组,其实对这一步来说,任何一个数组都没有关系(不一定要是嵌套数组),但作者巧妙地把$的首次赋值式放在了数组内部,使代码更为紧凑。最终结果是,$ = [[]]["sort"] = [[]].sort = Array.prototype.sort。 10. 调用$(),作为整个表达式最终的取值。需要注意,$是全局范围的,是window的一个属性,相当于window.$。而Array.prototype.sort会返回this。对于window.$来说,this就是window。因此,整个第一部分的值,就是window本身!当然,这个过程的正确运作依赖于当前浏览器的Array.prototype.sort实现能对this为window的情况容错。 通过第一部分,我们已经获得将任何值转换为字符串的简单方法,并能产生任意的数值,理论上就可以从javascript的取值系统中提取出大部分字母(不知道是不是全部,需要考证)。并且,我们获取到了window的引用。下面就可以开始上下其手,为所欲为了。木哈哈哈哈哈! 可以看出,上面的第10步是与浏览器的具体实现相关的,因此也存在着某些浏览器下需要对代码作出修改的可能。 现在看第二部分,事实上已经非常明朗了,唯一需要注意的是,现在$是一个函数,因此~$ = ~0 (无法直接转换为数字则作为0处理) = -1。[__[_/_]+__[_+~$]+$_[_]+$$](_/_) = ["false"[1]+"false"[3+(-1)]+"true"[3]+"rt"](1) = ["a"+"l"+"e"+"rt"](1) 所以,整条式子相当于:window["alert"](1) 最后只想再感慨一次:黑客的想象力是无限的。理解代码并不难,问题是一开始时他们是怎么能想出来的。。。
电脑黑客如何编写程序?
额?黑客只有一小部分人自己琢磨着编程序(例如小榕工作室,专门编黑客软件),大部分都是用现有软件,例如流光啦之类的,还有一些直接用黑客文件,例如‘黑洞’软件、‘灰鸽子’软件这些可以直接种植到肉鸡中的文件
黑客是根据什么来编写编码
你这个是奇怪的问题,黑客软件有很多。比如扫描,远控,只要是黑客就没什么限制写代码。
随手来个bat就能扫描端口了。远程控制的话也好多,一般主流都能写出来。就是要过杀毒的查杀,
你不会是在这问需要学习什么编程软件来当黑客吧,其实编程这东西很奇妙,当我写出各种软件的时候总会有好多成就感。当然不是什么黑客软件。
黑客应该怎样编程(PS:写程序跟写作文为什么
有关于软件工程问题是一只困扰着我的苍蝇,每当我试图打死一只就会冒出来更多,网络上以及身边的人给了我很多指导,但是并没有对我起到实质性的帮助,直到现在我才明白,项目控制与软件工程只适用于程序员,但并不适用于黑客们。
黑客们打算用心写的程序大多是自己都认为比较难以实现的巧妙玩意,这些带有研发性质的工作是无法使用软件工程中的思想对其进行有效控制的,因为这些工作往往只是在最初有一个比较宽泛的目标,恐怕就连作者本人都不确定自己的作品完成后究竟是什么样的,这个过程就像是画家作画的过程一样。微软在开发NT内核时就是一个典型的例子,原本计划最多18个月即可完成的项目,在大卫.卡特勒这位伟大的项目管理者的带领下却花了超过60个月的时间。幸好比尔.盖茨这位商业奇才帮助微软渡过了这危险的5年时间,从而才诞生了经典的Windows XP乃至于现在Windows 7。
用Paul Graham先生的话说“我写代码时会先按照自己的思路来写,不管有没有错误,在写完一个基本的框架后在开始调试,这就像绘画时的‘打草稿’,我不想正襟危坐,把一个盛满各种变量类型的茶杯小心翼翼的放在腿上,并且为了一丝不苟的与编译器大婶交谈而努力的挑选词语,确保变量类型准确,以使得自己显得礼貌又周到”。
黑客们在编写扰乱社会和他人的计算机程序,这些代码统称为什么
黑客们在编写的计算机程序代码统称为恶意代码。
恶意代码
定义一:恶意代码又称恶意软件。这些软件也可称为广告软件(adware)、间谍软件(spyware)、恶意共享软件(malicious shareware)。是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。与病毒或蠕虫不同,这些软件很多不是小团体或者个人秘密地编写和散播,反而有很多知名企业和团体涉嫌此类软件。有时也称作流氓软件。
定义二:恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
英文:malicious software 或 malevolent software,Malicious code,malevolent code 或者简称Malware。
参考资料
百度文库:https://wenku.baidu.com/view/b4e01fd5c281e53a5902ff7f.html