死代码
- 格式:docx
- 大小:437.12 KB
- 文档页数:1
⼏种超厉害的死循环代码想必⼤家在编程的过程中,时不时的体验过死循环。
有些是⾃⼰不⼩⼼写的,然后导致整个程序也不⼩⼼的崩溃;有些是⾃⼰特意写的,以便能达到我们制作恶作剧的效果。
下⾯IT博客分享⼏种实⽤简单的死循环代码,不过⼤家要切记不可⾮法使⽤,同样玩笑不可开过头哦。
(⼀)、死循环代码<img src=javascript:location=“⽹页的⽂件名.htm:”>说明:当含有这段代码的⽹页被⼈点击,连接就会不断的打开IE浏览器,直到你的系统资源浪费到0%~只有重新启动才能正常使⽤!使⽤:把上述代码加⼊到⽹页⽂件中(可新建记事本然后修改后缀),就可达到说明中的效果。
预防⽅法:禁⽤所有的ActiveX控件和插件!因为这是⼀个ActiveX教本程序~(⼆)、恐怖的⼤图⽚<img src= "http://恐怖图⽚的连接地址" width= "1" height= "100000000000000000000000">说明:当打开这样的⽹页,IE会不断的解释试图打开,但由于图⽚实在太⼤,超出了其处理能⼒,所以……使⽤:把上述代码加⼊到⽹页⽂件中(可新建记事本然后修改后缀),就可达到说明中的效果。
(三)、地震死机代码<script>if (window.top.moveBy){for (i = 1;i < 50; i++){for (j = 3;j > 0; j--){window.top.moveBy(0,i);window.top.moveBy(i,0);window.top.moveBy(0,-i*2);window.top.moveBy(-i*2,0);window.top.moveBy(0,i);window.top.moveBy(i,0);}}}</script><img src="c:\con\con">说明:<img src="c:\con\con">是windows9x的设备名称解析漏洞!WINDOWS9x的\con\con设备名称解析漏洞允许⽤户进⾏攻击,倒是98死机。
python爬⾍之破解javascript-obfuscator的混淆加密接上⼀篇有关前端加密达到反爬的⽂章,是不是觉得⽤了javascript-obfuscator 就很安全了,那还真不⼀定啊,还是那句,反爬与反反爬⼀直在⽃争,没有谁能绝对的压制另⼀⽅,只有使⽤者技术的⾼低。
以下就是⼀个⼤神的针对javascript-obfuscator库的破解。
本篇⽂章转载于 :死代码与花指令在开始之前,我们先了解⼀下这种「在代码中插⼊⼤量⽆⽤代码以混淆视听」的混淆⽅式吧。
这种混淆⽅式有两种叫法,或者说是两种做法,它们分别是「死代码」和「花指令」。
> 死代码死代码⼀开始是被⽤来描述⼀些⼈写代码时写出的没有⽤到的代码的,为了编译后的⽂件尽可能地⼩,编译器通常会对死代码进⾏移除处理。
⽽在不知道什么时候开始,死代码被安全⼯作者们⽤来作为⼀种混淆机制,以将代码量变得极为庞⼤,使进⾏逆向⼯程的⼈难以找到主要逻辑。
但死代码有个很明显的特征:它虽然看着代码量很⼤,但实际却完全不会在程序的正常代码中被调⽤。
如果你有兴趣的话,可以对⼀些包含了死代码的代码进⾏聚类分析,你会发现死代码和正常代码之间泾渭分明,正常代码都是互相关联着的,⽽死代码却是孤零零的⼀块或者多块,并且正常代码还完全不会与死代码产⽣关联。
> 花指令花指令是以前被⼤量运⽤在⽊马、病毒的免杀上的⼀种反反汇编⼿段,花指令中的“指令”通常指的是汇编中的 jmp、call 之类的调⽤、跳转指令,⽽攻击者们会将这些指令巧妙地插⼊到恶意代码的执⾏逻辑中,使得静态分析⼯具在分析到这个位置时⽆法正常反汇编。
花指令曾经的⽬的主要有两个,⼀个是使杀毒软件⽆法⾃动分析出恶意代码,达到瞒天过海的效果;⼀个是给安全⼯作者在分析恶意软件时设下层层阻拦,使安全⼯作者需要花费更多的时间才能理清代码逻辑,达到拖延时间的效果。
同样是不知道什么时候开始,花指令也被安全⼯作者们⽤来作为⼀种混淆机制。
Java基础之代码死循环详解⽬录⼀、前⾔⼆、死循环的危害三、哪些场景会产⽣死循环?3.1 ⼀般循环遍历3.1.1 条件恒等3.1.2 不正确的continue3.1.3 flag线程间不可见3.2 Iterator遍历3.3 类中使⽤⾃⼰的对象3.4 ⽆限递归3.5 hashmap3.5.1 jdk1.7的HashMap3.5.2 jdk1.8的HashMap3.5.3 ConcurrentHashMap3.6 动态代理3.7 我们⾃⼰写的死循环3.7.1 定时任务3.7.2 ⽣产者消费者四、⾃⼰写的死循环要注意什么?⼀、前⾔代码死循环这个话题,个⼈觉得还是挺有趣的。
因为只要是开发⼈员,必定会踩过这个坑。
如果真的没踩过,只能说明你代码写少了,或者是真正的⼤神。
尽管很多时候,我们在极⼒避免这类问题的发⽣,但很多时候,死循环却悄咪咪的来了,坑你于⽆形之中。
我敢保证,如果你读完这篇⽂章,⼀定会对代码死循环有⼀些新的认识,学到⼀些⾮常实⽤的经验,少⾛⼀些弯路。
⼆、死循环的危害我们先来⼀起了解⼀下,代码死循环到底有哪些危害?程序进⼊假死状态,当某个请求导致的死循环,该请求将会在很⼤的⼀段时间内,都⽆法获取接⼝的返回,程序好像进⼊假死状态⼀样。
cpu使⽤率飙升,代码出现死循环后,由于没有休眠,⼀直不断抢占cpu资源,导致cpu长时间处于繁忙状态,必定会使cpu使⽤率飙升。
内存使⽤率飙升,如果代码出现死循环时,循环体内有⼤量创建对象的逻辑,垃圾回收器⽆法及时回收,会导致内存使⽤率飙升。
同时,如果垃圾回收器频繁回收对象,也会造成cpu使⽤率飙升。
StackOverflowError,在⼀些递归调⽤的场景,如果出现死循环,多次循环后,最终会报StackOverflowError栈溢出,程序直接挂掉。
三、哪些场景会产⽣死循环?3.1 ⼀般循环遍历这⾥说的⼀般循环遍历主要是指:for语句foreach语句while语句这三种循环语句可能是我们平常使⽤最多的循环语句了,但是如果没有⽤好,也是最容易出现死循环的问题的地⽅。
luawhiledo死循环代码
在Lua编程语言中,可以使用while true do语句创建一个死循环。
下面是一个示例代码:luawhile true do
-- 循环体代码
-- 这里可以放置您希望一直执行的代码块
end
上述代码将一直执行循环体内的代码,因为条件表达式true始终为真。
请注意,在使用死循环时,务必小心,确保在循环体中有适当的退出条件,以免导致无限循环。
例如,您可以在循环体中添加一个条件来手动中断循环,例如按下特定的按键或满足某个条件:luawhile true do
-- 循环体代码
-- 这里可以放置您希望一直执行的代码块
-- 添加中断条件
if condition then
break -- 根据条件跳出循环
end
end
在上面的代码中,当满足某个条件时,使用break语句跳出循环,以避免无限循环。
请注意,死循环可能会导致程序无法正常终止,因此在使用时要格外小心,并确保设置适当的终止条件,以避免出现不可预测的结果。
饥荒控制台示例代码如何实现角色死亡和复活系统在饥荒这个控制台游戏中,角色死亡和复活系统是非常重要的一部分。
下面是一个1500字左右的代码示例,展示了如何实现这个系统。
首先,我们需要定义一个角色类,里面包含角色的属性和方法。
角色拥有生命值(Health)和饥饿值(Hunger),同时还有一个表示角色是否存活的布尔值(isAlive)。
```pythonclass Character:def __init__(self, health, hunger):self.health = healthself.hunger = hungerself.isAlive = Truedef eat(self, food):self.hunger -= foodif self.hunger < 0:self.hunger = 0def takeDamage(self, damage):self.health -= damageif self.health <= 0:self.isAlive = Falsedef revive(self):self.isAlive = Trueself.health = 100self.hunger = 100```接下来,我们需要创建一个角色对象,并模拟游戏过程。
假设角色开始时的生命值为100,饥饿值为100。
```pythoncharacter = Character(100, 100)while True:if character.isAlive:action = input("请输入你的行动:")if action == "吃饭":food = int(input("请输入食物的数量:"))character.eat(food)print("剩余饥饿值:", character.hunger)elif action == "攻击":damage = int(input("请输入攻击伤害:"))character.takeDamage(damage)if character.isAlive:print("剩余生命值:", character.health)else:print("很遗憾,你已经死亡!")elif action == "复活":character.revive()print("你已复活!")else:print("无效的行动!")else:print("你已经死亡,无法行动!")break```这段代码模拟了一个控制台环境下的饥荒游戏。
死亡编码规则一、总原则总原则指出当证明书上列入不止一个情况时,就选择单独列在第Ⅰ部分最低一行占用线上的那个情况,只要它能够引起列在其上的所有情况。
例3:I (a)肺脓肿(b)大叶性肺炎选择大叶性肺炎例4 :I (a)外伤性休克(b)多发性骨折(c)行人被卡车撞伤(交通事故)行人被卡车撞伤(交通事故)为根本死因例5:I (a)食道静脉曲张出血(b)门静脉高压(c)肝硬化(d)乙型肝炎乙型肝炎为根本死因二、选择规则规则1.如果存在不止一个死因顺序,总原则不适用,但存在一个终于证明书上首先列入之情况的报告顺序,则选择该顺序的起始原因。
例6:I (a)支气管肺炎(b)脑梗死和高血压性心脏病选择)脑梗死(I63.9)。
存在两个终结于证明书上首先列入之情况的报告顺序;由于)脑梗死引起的支气管肺炎和由于高血压性心脏病引起的支气管肺炎。
选择第一个提及顺序的起始原因。
规则2.如果不存在终结于证明书上首先例入之情况的报告顺序,则选择首先提及的情况。
例7:I (a)恶性贫血和足坏疽(b)动脉粥样硬化选择恶性贫血(D51.0)。
不存在终结于证明书上首先列入之情况的报告顺序。
规则3.如果按照总原则、规则1或规则2所选择的情况明显为另一报告情况的直接后果,不管该情况处于第I部分或第Ⅱ部分,均选择这个原始的情况。
假定的直接后果包括以下几种情况:●卡波西肉瘤、伯基特瘤以及淋巴、造血等有关的恶性肿瘤(C46.-,C81~C96)可以认为是HIV病的直接后果,其他肿瘤不能做如此假定。
●任何感染性疾病(A00~B19,B25~B49,B58~B64,B99HUO J12~J18)可以认为是HIV病的直接后果。
●某些手术后并发症(肺炎、出血、血栓性静脉炎、栓塞、血栓形成、败血症、心脏停搏、肾衰竭、吸入、肺不张及梗死)可以认为是手术的直接后果,除非手术是在死前四周或更早进行的。
●肺炎和支气管肺炎可以是任何疾病的并发症。
●栓塞性疾病可以是静脉血栓形成、静脉炎、血栓性静脉炎、瓣膜性心脏病、心房纤颤、分娩或任何手术的直接后果。
死亡医学证明书死因填写举例一、所谓衰老1所谓老死(一)(a)、心力衰竭I50.9(b)、高血压性心脏病I11(c)、高血压I11.0根本死因:高血压I11.02、所谓老死(二)(a)、坠积性肺炎J18.2 3月(b)、偏瘫(G81)3年(c)、脑内出血(I61) 3年根本死因:脑出血后遗症3、所谓老死(三)(a)、坠积性肺炎J18.2 3月(b)、偏瘫(G81)3年(c)、脑梗I63.1 3年根本死因:脑梗死4、所谓老死(四)(a)、股骨骨折 3 年S72.9(b)、在同一平面上滑倒、绊倒和摔倒(家)3 年W01.0根本死因:其他事故的后遗症Y865、所谓老死(五)(a) 和坠积性肺炎(J18.2)(b)衰老(R54)(c) 类风湿性关节炎(M06.9)根本死因:类风湿性关节炎(M06.9)6、所谓老死(六)(a) 坠积性肺炎J18.2(c) 中风后遗症,未特指为出血或梗死(10年)根本死因:中风后遗症,未特指为出血或梗死(I69.4)二、循环系统及脑部例7、某女:71岁。
病史:糖尿病30年,高血压20-30年,一直服用降糖药,冠心病20余年,本次脑梗塞入院。
死亡诊断(同入院):1)猝死;2)脑梗塞(双侧复);3)高血压III期;4)II型糖尿病;5)冠心病:a不稳定型心绞痛,b心律失常;6)肺部感染;7)泌尿感染;8)左下肢深静脉血栓形成(a)猝死R96(b)脑梗塞I63(c)高血压20-30余年I10根本死因:脑梗I63例8、(a)、尿毒症(N19.1)(b)、高血压(I10)根本死因:高血压性肾脏病伴有肾衰竭(I12.0)例9、(a)、循环衰竭(I50)(b)、颅内出血(I61)(c)、高血压3期(I10)根本死因:颅内出血(I61.9)例10、(a)、心脏肥大I51.7(b)、高血压I10(c)、高血压心脏病(I11.9)根本死因:高血压心脏病(I11.9)例11、(a)、肾功能不全,代谢性酸中毒(b)、高血压(I10.2)根本死因:高血压性肾脏病不伴有肾衰竭(I12.9)例12、(a)、心源性休克(R57)(b)、急性心梗(I21.9)(c)、冠心病(I25.1)根本死因:冠心病(I25.1)例13、(a)、心源性休克(R57)(b)、脑血栓(I66.9)(c)、脑梗死(I63.9)根本死因:脑梗死(I63.9)例14、a)动脉粥样硬化b)高血压性心脏病I11.9c)高血压I10例15、a)心力衰竭I50.9b)高血压性心脏病I11.9c)高血压I10例16、a)心力衰竭3月I50.9b)高血压性心脏病I11.9c)高血压I10高血压性心脏病伴有心力衰竭I11.0例17.(a)、心源性休克(R57)(b)、脑梗死(I63.9)根本死因:脑梗死(I63.9)a)昏迷3天R40.2b)小脑出血术后18天I61.4c)高血压病I10例19.a)尿毒症N19b)动脉硬化性肾病I12.9c)高心病I11.9例20.a)急性前壁心梗15天I21.0b)冠心病I25.1c)高血压Ⅲ期I10例21、a)急性前壁心梗15天I21.0b)冠心病I25.1c)高血压Ⅲ期I10例22a)急性前壁心梗15天I21.0b)冠心病I25.1c)高血压Ⅲ期I10例23、a)瘫痪,衰竭G83.9b)脑血栓,偏瘫1年I66.9c)高血压10年I10例24:(a).心力衰竭I50.9(b). 高血压性心脏病I11(c). 特发性(原发性)高血压I10根本死亡原因:高血压性心脏病ICD编码:I11(a). 心源性休克R57.0(b). 急性心肌梗死I21.9(c). 冠心病I25根本死亡原因:急性心肌梗死,未特指ICD编码:I21.9例26:(a). 脑出血I61(b). 高血压性心脏病 I11(c). 高血压I13.9根本死亡原因:脑内出血,未特指ICD编码:I61.9调查记录范例:死者生前有高血压病史15年,经常出现头晕,心慌,耳鸣,失眠等症状,近日因饮酒过多,导致血压升高,血管破裂,经抢救无效死亡。
死代码的英文是dead code。
是指在程序操作过程中永远不可能被执行到的代码。
消除死代码(DCE)在某些情况下,编译器可以判断出某些代码根本不影响输出,所以编译器会消除这些代码。
也可以使用优化作用进行消除。
移除这类的代码有两种优点,不但可以减少程序的大小,还可以避免程序在运行中进行不相关的运算行为,减少它运行的时间。
不会被运行到的代码(unreachable code)以及只会影响到无关程序运行结果的变量(Dead Variables),都是死码(Dead code)的范畴。
那么,什么是基本块(Basic Block)?
基本块
∙程序中一个顺序执行的语句序列
∙只有一个出口语句和一个入口语句
∙执行时只能从入口语句入,从出口语句退出
∙基本块中的所有语句的执行次数一定是相同的
∙一般由多个顺序执行语句后跟一个跳转语句组成
因此,基本块的最后一条语句一定是一个跳转语句,且跳转的目的地一定是另一个基本块的第一条语句。
如果跳转语句是有条件的,就产生了一个分支(arc),该基本块就有两个基本块作为目的地。
如果把每个基本块当作一个节点,那么一个函数中的所有基本块就构成了一个有向图,称之为基本块图(Basic Block Graph)。
且只要知道图中部分BB或arc的执行次数就可以推算出所有的BB和所有的arc的执行次数。