导航:首页 > 观俄罗斯 > 俄罗斯为什么用暗桩

俄罗斯为什么用暗桩

发布时间:2023-01-13 05:17:00

‘壹’ 蒙古大军横扫欧亚大陆, 为何小小的越南却能偏安一隅

13世纪,一支强大的游牧民族出现在了世界的舞台上。蒙古彪悍的骑兵像狼群般狂飙过漠北草原与中原大地之后,终于来到了遥远的南方,令人意想不到的是,在小小的安南(今越南),蒙古大军却接连三次沉沙折戟??

1252年,蒙古军队从甘肃出发,途经川西高原远征大理。这些从北方干燥的草原上来的将士和马,居然能够抱着吹足了气的革囊,伏在被急流冲得起伏不定的筏子上,胜利渡过了水流湍急的金沙江进入云南。战争本身是不值一提的,翌年,大将兀良合台就率军擒获大理国王段智兴。云南自唐朝天宝年间起脱离中原政府管辖的局面结束了。

攻灭大理是蒙古帝国对最顽强的敌人——南宋——形成战略合围的重大步骤,在云南被纳入蒙古版图之后,南宋在陆上已经陷入C形包围,只剩下了与安南的边界尚不在蒙古人的掌控之中。也正因此,安南成为蒙古军队的下一个目标,在遣使劝降被拒之后,1257年兀良合台率军三万入侵安南,揭开了蒙古帝国与安南陈朝激战的序幕。

这是安南军队首次在战场面对全世界最强大的蒙古军队,虽然摆出了步象骑兵的混合阵势,仍被兀良合台击溃。蒙军趁势进入安南首都升龙(今河内),却只得到一座空城,仅呆了九天,以暑热难耐兼之粮食已尽,被迫撤军,路上又遭到安南地方豪族武装的袭击而大败,沿途疲惫不堪,所到之处亦不敢劫掠,故人们称之为“佛贼”。这对小小的陈朝而言,当然是一次巨大的胜利,后世的陈仁宗为此写诗云:“白发老头兵,常谈元丰事。”

随后二十多年里,蒙古(元)忙于对宋作战,无暇顾及僻处一隅的安南。等到灭亡南宋统一中国之后,忽必烈决心兼并安南。1285年初,元军兵分六路进攻陈朝。鉴于第一次战争的经验,部队中增加了一些曾参加过征服南宋和习惯于在中国南方作战的高级将领,比如崖山之战时担任张弘范副手的李恒这次亦在主帅镇南王脱欢(忽必烈第九子)帐下。元军的人数也大大增加,据《大越史记全书》载为五十万人(这当然是夸大其词)。正面战场上,元军再次击溃陈朝军队,占领升龙,但安南军“虽数败散,然增兵转多”,元“军困乏,死伤亦众,蒙古军马亦不能施其技”,脱欢遂于当年五月撤兵,归途又遇安南军队伏击,李恒膝中毒箭,归国后毒发身亡;脱欢本人则是钻在铜管里,让士兵抬着,才免于一死。

忽必烈不甘失败,又集中江淮、江西、湖广三省蒙汉军7万,附船500艘和云南兵6000人、黎族兵1.5万人卷土重来。1287年12月,元军由脱欢率领,分兵三路第三次进犯安南。两路是从广西、云南来的步兵和骑兵,此外还增加了一支水兵,从海路沿着白藤江(邻近越南北部下龙湾的入海口)进犯。陈朝军队再次放弃升龙,坚壁清野,迫使元军于次年三月粮尽而退。

白藤江,陈朝军队事先从森林里砍伐树木,削尖后插入江中,当元军战船鱼贯而入白藤江时,潮水正在下落,陈军出其不意地猛烈进攻,把元军船只驱至暗桩水域,当潮水下落时,元军的船多数撞没于木桩上,全歼元军水军,是为白藤江大捷,陈朝大儒张汉超在越南汉赋名篇《白藤江赋》中称之为“再造之功,千古称美”。而到了2016年3月初,根据越南媒体报道,越南总理阮晋勇日前也批准了在这里建设白藤江战役遗迹保护区的议案。

白藤江战役具有决定性的意义:小小的安南再次击败了庞大的大陆帝国。元军战败的消息甚至传到了遥远的波斯,伊儿汗国的史学家拉施特在《史集》中记载,“他们(陈朝)的军队突然从海上、森林里和山上的埋伏中出来了,击溃了正忙于抢劫的脱欢的军队。”

对于蒙古(元朝)而言,陈朝实在是个难缠的敌手。陈朝朝廷甚至下令“凡国内郡县假有外寇至,当死战;或力不敌,许于山泽逃窜,不得迎降”。虽然也出现过一些叛降蒙元者,比如陈仁宗的一个弟弟及《安南志略》的作者黎?。???宥?猿鲁?持渭?诺牡挚挂庵臼羌??岫ǖ模?负蹩捎胪?皇逼诘娜毡玖?帜桓??V徊还?,“元寇袭来”时的镰仓幕府更多依仗的是从天而降的“神风”不战而胜,陈朝却更多的需要在战场上真刀真枪地与蒙古军较量。

陈朝本身是作为外戚篡夺了原本属于李朝的皇位,影响至今的一个结果是强令越南李姓者尽改姓“阮”,使后者成为越南第一大姓。为防止自己重蹈覆辙,陈太宗(1218年-1277年)规定宰相和重臣都由宗室担任,确保了宗室对皇帝的忠诚。在众建诸侯的体制下,拥有领地的皇室贵族们不仅仅是为了他们的国家,也为了他们自己的封疆而需要努力驱除外来入侵者。

除去陈朝本身的抗战,可以说蒙古军队也输掉了天时、地利、人和。连西方史家都发现了这一点,《多桑蒙古史》记载,第一次入侵时,元朝军由于“热不能堪,班师”;第二次入侵时“盛夏霖潦,军中疾作,死伤者众”;第三次入侵时又是“军中将士多被疫不能进”。安南属热带季风气候,气温高,湿度大,风雨多,旱、雨季明显,大部分地区5月至10月为雨季,11月至次年4月为旱季。元军士兵多来自北方,故元军出兵多在下半年,正值安南为冬天旱季的时候。一旦被拖至雨季,瘟疫肆虐,蒙(元)军队实在是在“鬼天气”里吃够了苦头。虽然不能说蒙古军队是完全败给了天气,毕竟此前已经征服了同样有暑雨并流行瘴疠的岭南地区,但入侵安南,某种程度上的确是在逆“天”而行。

另一方面,安南的地形复杂,山地、高原、河流互相交织在一起,很少有一马平川的大平原。连元朝将领自己都意识到,这样的地形“蒙古军马亦不能施其技”,使得远征安南的元军已不是单一的骑兵,而是以步兵为主。对安南的战争,也更多是传统中原式样的战争:既无依靠随行羊马和狩猎解决给养的条件,也不能靠“因粮于敌”之法获取给养。军队给养只能靠国内供应,势必“兵马未动,粮草先行”,而不能“羊马随行,不用运饷”。漫长而脆弱的补给线也确实成为入侵安南的“阿喀琉斯之踵”。

所谓“天时不如地利,地利不如人和”。忽必烈“内用聚敛之臣,视民财如图苜,外兴无名之师,戕民命如草芥”,实在是穷兵黩武,残民已极。常年对外作战使得“老兵饱尝征战味,听说安南愁满面”;兵粮多聚,征丁从军更导致田地无人耕种,江南一带“群生愁叹,四民废业,贫者弃子以偷生,富者鬻产而应役,倒悬之苦,日甚一日”。至元二十年(1283年),江南“相挺而起”的起义“凡二百余所”,到至元二十六年(1289年),激增为“四百余处”,几乎遍及整个长江以南。面对如此之多的起义叛乱,元廷不得不抽调一部分军力进行镇压,从而削弱了元军南征的力量,因此,虽然忽必烈仍不甘心,先后三次图谋再征安南,但终于无法如愿,国内反对声浪却日甚一日。当1294年忽必烈去世后,元廷立即下诏停止征讨安南。

‘贰’ 美国暗桩什么意思

暗桩释义为.本意:一端插入地里或水中,不能或不容易直接看到的木棍或石柱。2.引申义:事先预设或打入的在敌对方的谍报人员和其他地下工作人员。

美国暗桩也就是美国事先预设的在别国或敌对方的谍报人员。

‘叁’ 张小敬为什么要杀了自己的暗桩小乙

为了得知龙波的消息。

在《长安十二时辰》里,张小敬他们找到了一块恩客牌,为了得到狼卫的下落,于是张小敬来到平康坊。但能够找出牌子主人的只有葛老,他是平康坊的老大,而且他还欠了张小敬一个人情,于是葛老很快就找到了这个牌子的主人,这个姑娘叫做瞳儿,而在半年之前她就已经认识了龙波。而葛老从来不帮人做免费的事,他想张小敬告诉他一个暗桩的名字,然后才能告诉他龙波的下落。

他这么做完全是为了长安百姓。

‘肆’ 朝鲜 朝鲜惊人表态看中俄究竟谁是老大

1、中国不是朝鲜大哥。中国只是把朝鲜当成牵制美国、韩国、日本的工具。

2、俄罗斯不是朝鲜大哥,俄罗斯也是把朝鲜当做牵制美国、韩国、日本的工具,不过在最后,俄罗斯也把朝鲜当做恶 心中国的工具。

3、中国一样,虽然跟俄罗斯是盟友,但是在北方四岛问题是支持日本的,因为岛屿是俄罗斯占领的。

4、朝鲜也好不到哪去,在图们江入海口事件中,俄罗斯是没有明摆着的意见,有意见的就是朝鲜,朝鲜把图们江口全打上暗桩,防止中国偷偷溜进日本海。

个人与个人之间,关系会非常紧密,但是国家间,只有利益!

‘伍’ 俄罗斯的“断网暗桩”是什么意思呢

就是整个国家的网络与外界互联网断开了,有情报人员平时用的转接设备被查出了

‘陆’ 易语言反破解教程说信息框用自定义窗口就是自己新建窗口,请问新建窗口怎么做到程序等待或者系统等待效果

4.随机验证
随机验证很重要,例如你的一处验证是一直存在的,奸人就很容易地下断点跟踪了。因此在软件启动时进行一次正常验证外,其他情况下的验证最好是随机的,用30分之一或50分之一的机会进行验证,这样奸人会不停地试你的软件在哪一处进行了验证,因此破解的时间会相当地长。
加密第14定理:足够多的随机验证足以让破解者累死。
随机验证包括随机进入不同的验证子程序。
或随机中的最大数大一些,只有30分之一的机会验证。
或在窗口中放上一些颜色与底图一样的图片框,这样奸人不一定会点击这里,但用户万一点中了,就会触发验证。
我们假设所有软件都能被破解,包括易语言在内,那么如果他破解的速度跟不上你发布新软件的速度,那么他永远在破最新版而累死。或者说他破解的时间比你写一个软件的代价大,这时还不如他直接写这个软件来得合算。
反破解的任务之一就是让奸人累死,或浪费他的生命。
下面的办法也可以使用:你可以在读到待验证的注册码、公钥、注册文件后,通过定义10000个数组,存入上述同样的内容以备以后进行验证,这最多浪费一些内存。验证时随机使用其中的一个进行验证,由于奸人不知你用的是数组中的哪一个进行的比对,而且是随机的,每次验证的值都不一样,不让奸人吐血才怪呢。
计次循环首(10000,计次)
数组[计次] = “123456” ’ 复制一万个公开注册码或公钥,破解者知道也无所谓。
计次循环尾
数组[取随机数(1,10000)]
你不要立刻检查注册码,10000份拷贝你只要以后随机找一份用就行了,破解的人不知道你正在用的是那一个,同时你可以事先编好且运行时不断使用一些假的读取注册码数组的调用干扰破解者。这种方法对程序的性能影响微不足到,只是浪费一点内存。因为Debug对内存下断点的局限,这种情况他要下断点,累死的就是破解的人了。
5.不同权限验证
在启动时进行一次验证是非常必要的,这样让奸人知道确实是验证了,以让他心理放松警惕,而这次的验证只是一部分验证,并没有完全验证。
还有的建议在启动时将注册信息读入后不要进行验证,保不定在哪里进行验证,个人认为这样让破解者提高了警惕性,会认为软件作者很有经验。麻痹敌人也很重要呀。
例如,在启动时验证通过一次,验证级别加强一级,然后再在其他的地方再进行验证就可以了。
下面代码是确认了一个级别
计次循环首(到数值(验证1),)
已注册 = 1
计次循环尾()
……
……
在另一个触发子程序中再通过这个级别再验证:
计次循环首(已注册)
计次循环首(到数值(验证2),)
已注册 = 2
跳出循环()
计次循环尾()
跳出循环()
计次循环尾()
在其他触发子程序中再通过这个级别再验证:
计次循环首(已注册)
计次循环首(到数值(验证3),)
已注册 =3
跳出循环()
计次循环尾()
跳出循环()
计次循环尾()
有时也可以将级别降一降,怎么降,当然是不考虑级别直接验证了:
6.忽悠型的GHOFFICE过滤词语验证代码
前面已讲过花指令的原理,在程序中人为地再放一些GHOFFICE过滤词语代码以忽悠奸人也是一个好办法。GHOFFICE过滤词语代码就是一些假的验证代码,基本上是明文的,这样的代码上百上千,足以让奸人累死。
其实对付那些“根据跳转指令的爆破”高手来说,一个办法就够他们头疼的了,就是你在程序中不明显加入与判断是否正版有关的语句,也不做任何提示,以免让他们顺藤摸瓜,而是在判断为盗版后,跳转到另一个看似很合理的分支,而那个分支和正版的分支代码差不多,只是在计算公式或其它算法上稍动一下,使其运算结果不正确,这样,他们就在机器码级别上就分不清哪个是对的,哪个是错的了,即使他们认为破解成功,其实运行时,得的结果错误百出,他们就没兴趣了,呵呵,算损的吧!!!
加密第15定理:大量添加GHOFFICE过滤词语代码虽然是无奈之举,但很管用。
作业1:制作一个常量****器
要求:制作一个常量代码自动生成器。可随机生成成百上千个易语言源代码形式,可直接拷贝到易语言中成为常量。变量也可以这样制作。
写好这样一个程序后,就可以自动生成GHOFFICE过滤词语代码,然后复制,粘贴到易语言的常量表中即可。如下图所示:
变量也可以这样生成,不过生成的变量可以任意拷贝为全局变量,或程序集变量,或局部变量。制作时的名称可以为中文名称,直接编译后不会在EXE文件中找到同名的中文名称。因此您可以放心地将这些名称定义为:“GHOFFICE过滤词语常量1”、“GHOFFICE过滤词语变量1”等等以示与正常代码进行区别。
作业2:制作一个代码迷乱器
本次作业性质同上,也是自动生成易语言的一些无用GHOFFICE过滤词语代码,以迷乱奸人的破解,让他找到的全是GHOFFICE过滤词语代码,从而大大延长了破解时间。
通过直接拷贝编辑框中的内容,粘贴到您的代码中,可自动完成任务,如下图所示:
上图所生成的是一些明文的加密方法的GHOFFICE过滤词语代码,让奸人去研究这些GHOFFICE过滤词语吧。
上述子程序名称最好也有时调用一下,反正不会真正产生作用的,用多线程调用最好。
或者您平时注意多收集一些别人用于加密时的子程序,拷贝到一个易语言程序中,保存,这样的代码作为GHOFFICE过滤词语代码放在你有用的程序中,虽然增加了一些程序的体积,但安全性是大大提高了。并且基本上没有牺牲软件性能与稳定性。
7.伪验证技术
还是先举一个例子说明吧,易表软件在10.0版本前已发现有大量的注册机存在,于是易表作者其后改变了加密方式,易表10.0推出后还是出现了注册机,并且这种注册机注册过的软件可以使用。于是有些用户用注册机取得的注册码使用了,过了一段时间,当盗版用户将重要数据存入易表后,突然有一天数据库被锁定了,于是只好注册易表,并且让易表作者为数据库解锁。
从这里可以基本上判定易表新版本采用了伪验证技术,即在较为明显的地方提供了一级验证,这种验证方式没有经过太强的加密,而二级验证在一定的条件下才触发,而这个条件是检查到了用户输入了重要的数据,或大量的数据,或使用次数较多。
基本原理是注册文件由前后两个注册码拼接而成。一般情况下只进行第一个注册码的验证,而当条件成熟时进行第二个注册码验证。
这是一种双赢的策略,易表作者即收到了注册费,付费的人还会道歉,并且感谢易表作者。哈哈,大家要学习这招哦。
但本办法对于数据库应用及数据量大时检查最好,而对于一些没有生成数据的用户无效。
发布软件的时候发布自己编写的注册机,弄个假破解版,那么想破解的就可能不来了,即使有真的破解,谁会有自己给自己写假破解快啊!可能假破解版中只破解一半,等用户使用了,有数据了再锁定,让他们注册后再给解锁,付了钱还要谢谢你,哈哈,损招,但有用!
加密第16定理:伪验证可以迷惑一般破解者,甚至自己发布一个伪注册机。
8.定时验证、延时验证、客户数据集累验证
过一段时间后再验证,如你在2005年1月发布一个软件,那么就内定2005年6月后触发验证机会。
或您的软件是一个数据库产品,那么您可以在程序中设置如果数据库大于5MB时就进行验证,并且最好您能确定这些数据是不重复的,刻意加入的。
如易表设置了伪验证,这时市场上出现了新的注册机,当用户用这个注册机后,提示是注册成功了,但当用户输入重要数据后的某个日子,突然打不开数据库了,用户很着急,因为以为是破解成功了,所以将重要的资料输入了,只能拿钱向易表作者进行注册了。而且还千恩万谢,后悔自己不该用破解。哈哈,一举两得呀。
这个方法对于数据库应用软件来说是绝好的办法。
作业:制作一个算法程序放在你的数据库软件中,这个子程序可以统计你的数据库软件使用时,用户输入的是否是拷贝的东西,还是正常的数据。当统计到1000时触发验证。方法思路为:可以通过查看用户有没有使用复制与粘贴快捷键,或资料进行排序,如果有大量重复的,就说明是奸人在拷贝数据破解,否则是一个资料一个资料的输入的,说明是正常使用的重要资料,这时进行对比就好了。
本方法对有资料的破解使用者有极好的控制作用,通过第6条的伪验证技术与本技术结合,那么就可以知道是不是正版用户,并且可以锁定数据库,等他注册后再给他解锁。
加密第17定理:加密的结果应该是双赢,伪验证是一个上策。
9.验证与专业知识相结合技术
将验证与专业知识相结合,让奸人必须学习专业知识后才能真正去破解,这样所花的功夫比自己写一个软件的代价还要大,而有的专业知识不是专家是不知道的,因此是一个较好的加密方法。
前述中采用了“到数值(验证1())”这样的代码返回的是0或1两者之间的一个数,可以用乘法进行混合计算,如:
音量 = 播放位置X到数值(验证1())
当验证正确时返回的是1,这时的结果是正确的,否则返回0,这时的结果为0,是错误的。
这样的代码可以混合到您的专业知识中,如:算命软件可将天干地支、生辰八字中的某个地方进行此类计算,计算类软件可以将某种特殊的计算过程如此结合计算,绘图类软件可将绘图中的算法部分加入此类计算,音响设计类、机床设计软件……
加密第18定理:你知道的专业知识,破解者不一定了解哦。让专业知识与验证相结合吧。
10.伪装,用易语言写自有支持库
大家可以将DLL文件的扩展名改为易语言的支持库文件FNE扩展名,这样进行非独立编译后,与其他FNE文件混合在一起,甚至您可以用易语言写一个支持库,将其中一部分作为验证部分。
易语言的支持库文件FNE文件其实就是一个DLL文件,只不过扩展名改变了而已,用易语言写支持库的方法金眼睛已发过一篇贴子,进行过说明,请大家在易语言论坛上搜索金眼睛的贴子就可以找到了。
作业:找到金眼睛关于用易语言写支持库的贴子,并且自己写一个支持库。
11.绝妙的暗桩设置
应该想到的用代码实现的暗桩前面都讲了不少,下面是一些特别的暗桩供奸人品味的。
大家可以在一些不起眼的地方再放一些暗桩,如:在窗口最小化事件中随机验证,如在某个组件鼠标被移动事件中验证,
有时需要将数据完整性验证放在更高一级的验证中,不要一上来就检查文件是否被更改。
同一验证可以使用多次,这样奸人认为你已经验证过了,没有必要会再验证一次,而相反这时又产生了验证,让奸人防不胜防。如启动时就立即检查程序完整性,如果发现被更改,那就立即退出程序,而在一些子程序中也随机放这样的验证。
更多的暗桩大家自己设计最好。
加密第19定理:加密重要的是暗桩的设置,破解不完全就是一个无效破解。
12.发布不完整版本
有的软件作者在发布共享软件时,放在外面的是不完整版本,将更多的数据资料在注册后提供。这样做也可以,只是麻烦一些而已。如有的图形制作软件,将图片资源另外打包,用户注册后再给完全版的图片。
也有的将DLL文件中的验证部分作了空处理,而在注册后提供真正的注册DLL文件及注册码。还有的直接将KEY文件放在了DLL文件中另外提供。
加密第20定理:不要发布完整版本,以静制动。
13.程序、数据结合加密技术
把程序运行所必需要的资源放到一个数据库文件中,给这个数据库设密码,密码是主程序的数据摘要变换后的结果。程序运行是先验证有没有注册,如果已经注册,就对运行程序本身(取执行文件名())取数据摘要,用自己设计的算法多次变换后形成一个字串,用该字串作为数据库的密码打开数据库文件。如果打开数据库失败,就说明主程序被人修改了,终止程序运行即可。(不终止也没戏,程序找不到运行所需的资源。)
另外设计一个程序,用同样的算法算出数据库密码,然后给数据库加密即可。
密码形成算法建议使用大数支持库。但如果是汇编高手用汇编写注册机的话,会直接将支持库的所有反汇编码抄进去就可以了,问题是他们有没有时间搞。
14.自定义算法
前面讲过采用RSA与数值计算支持库交叉计算的办法,这就是一种自有的算法,如果能用上数值计算支持库中的矩阵、傅丽叶变换等高级功能就更好了。
多重RSA交叉打乱:大家也可以多用一些RSA密钥,如用5个,10个都无所谓,重要的是将这些注册码都打乱,让奸人哭死。打乱的方法就是你自己独创的方法了。
更多的自有算法就要靠大家自己去研究了。祝大家好运。
加密第21定理:加密不反对古怪和变态的方法,鼓励哦。
15.加密框图
下面给出一个加密的设计框图,大家可以根据自己的实际情况改变加密的策略:
图中主程序外围进行了花指令编译,并且用加普通壳进行保护。脱壳了也无所谓,因为设置了暗桩,随机检查。
图中表示主程序运行后,首先进行了常规的注册码第一次验证,找有没有注册文件。如果这个被破解,注册码应该是一个短的RSA,而真正的注册码是三个RSA的叠加。会生成伪注册机也无所谓。
主程序中用暗桩的形式对窗口标题、版权信息进行验证,这是考虑到如果一启动就验证这些很容易被奸人看出来从而会跳过去。因此用一些随机,或分级,或条件法取得不固定的验证。
主程序中用暗桩的方式对加壳后主程序的完整性进行校验,这个也不要放在常规的验证中,否则很容易被跳过去。可以查文件长度,MD5或CRC32都可以上。
主程序中用暗桩的方式加入了反调试模块。
主程序中布满GHOFFICE过滤词语验证代码。并且源代码有备注,不会搞错的。
主程序在某个条件下随机进行第二级验证,从注册码中取第二段数据,如果注册码长度不够且取不到第二段数据,那么就说明已使用了伪注册机,将用户的数据库锁定,等他付钱来注册。
主程序在一个条件下再激活验证,从注册码文件中取第三段数据,如果注册码长度不够,且取不到第三段数据,那么就说明已使用了伪注册机,将用户的数据库锁定,等他付钱来注册。
编程中还注意将加密的字符串搅乱且分不同地方存放,用吴氏加密命令加密重要数据,也可加入数值计算支持库的算法,也可以加入一些惩罚手段,也可以再加入自己的一些算法。
以下是一些人的编程体会摘录,基本未改其中的内容,在此表示感谢!
附录1加密已形成密码学
我引用《应用密码学》作者的话:
世界上有两种密码:一种是防止你的小妹妹看你的文件;另一种是防止奸人阅读你的文件资料。
如果把一封信锁在保险柜中,把保险柜藏在纽约的某个地方…,然后告诉你去看这封信。这并不是安全,而是隐藏。相反,如果把一封信锁在保险柜中,然后把保险柜及其设计规范和许多同样的保险柜给你,以便你和世界上最好的开保险柜的专家能够研究锁的装置。而你还是无法打开保险柜去读这封信,这样才是安全的。
意思是说,一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。
对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。
但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文。既然机器可以“看见”这些明文,那么 Cracker,通过一些技术,也可以看到这些明文。
于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不同而已。有的要让最高明的 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。
所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版)就是增加 Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的获利还要高。这样 Cracker 的破解变得毫无意义——谁会花比正版软件更多的钱去买盗版软件 ?
然而,要做到“难破解”,何尝容易? Sony 曾宣称的超强反盗版(Key 2 Audio音乐 CD反盗版),使用了很尖端的技术,然而最近却被一枝记号笔破解了,成为人们的饭后笑料!
所以,很多看上去很好的技术,可能在 Cracker 面前的确不堪一击。就像马其诺防线一样,Cracker 不从你的防线入手,而是“绕道”。这样,让你的反盗版技术在你做梦也想不到的地方被 Crack 了。
为什么会这样呢 ?归根到底是因为软件在机器上运行,并且软件和机器是分离的——这一点是关键,如果软件和硬件完全绑定,不能分离,是可以做到象 IDEA 之类几乎不可破解的系统的。这将在后面谈传统软件保护技术时详细说明。
对我的这个解决方案,我不能保证Crack高手在几天之内不能破解它,我只能说:“在这个软件中,我尽量堵住了当前破解者普遍使用的方法以及“我想得到”的可能的缺口。”但是我相信,倾注了我三个月心血的反盗版软件,决不是一个“玩具式”的反盗版软件。
附录2《如何用简单方法防止破解》
北极异型
在Debug的手册里可以看到Debug工具的局限:第一个局限是只能下4个内存区域的断点,每个断点不能控制超过两个字节,这样内存断点不能控制超过16个字节的区域;第二个局限是对多线程只能同时跟踪一个线程。
假设你的注册部分有300行,你可以分成30个子程序调用或重复的func1(),func2()... func30()。将他们随意放到程序的各个部分,一定不能放在一起(自己能找到就行了)。不要用Memcpy等常用系统调用拷贝注册码,尽可能自己写,像Memcpy很好写,性能差点无所谓。经过编译后inline函数展开,注册部分和其他代码混在一起,他要写出注册机就像大海里捞针,在几十万甚至上百万汇编代码里找出有用的注册部分。
利用Debug的第一个局限最重要的一点是:注册码也不要放在一起,假设你的注册码是12位,千万不要用一个12位的数组放注册码,你可以在程序的不同位置定义12个全局字符变量,每个放一位,这样注册码在内存就不连续了。最好再加密处理一下(简单的字符异或就可以),验证时再解密。也不要用连续内存保存验证用到的变量,尽量将用到的验证临时变量分散定义在程序的不同处,再在验证中,不断转移一些值到其他变量中,对付暴力和Loader会比较有效。
没有必要用复杂的加密算法,更容易成为追踪的目标。只要你将注册部分隐藏的足够好,也没有漏洞,你花1天写的加密算法,破解者可能会花100-1000倍的时间破解。大部分人都会放弃。
你将注册做在一起,就像将你的财宝放在现代保险箱里,虽然非常坚固难以解密,对于开锁高手两分钟就打开了。
而古代海盗用的方法是将财宝埋在海岛上,这样没有藏宝图,对所有高手和低手都只有一条路,拿一把铁撬挖,可能要挖一生。程序有那么多代码,反编译出来可能超过百万行,你将注册部分藏在里面,藏的好就如同将财宝埋在海岛里。那些所谓的Crackme只是给高手玩儿的现代保险箱而已,用原始的方法可以达到同样效果。

阅读全文

与俄罗斯为什么用暗桩相关的资料

热点内容
金华义乌国际商贸城雨伞在哪个区 浏览:733
俄罗斯如何打通飞地立陶宛 浏览:1110
韩国如何应对流感 浏览:894
在德国爱他美白金版卖多少钱 浏览:935
澳大利亚养羊业为什么发达 浏览:1359
如何进入法国高等学府 浏览:1448
巴西龟喂火腿吃什么 浏览:1375
巴西土地面积多少万平方千米 浏览:1237
巴西龟中耳炎初期要用什么药 浏览:1204
国际为什么锌片如此短缺 浏览:1605
巴西是用什么规格的电源 浏览:1427
在中国卖的法国名牌有什么 浏览:1334
在菲律宾投资可用什么样的居留条件 浏览:1237
德国被分裂为哪些国家 浏览:851
澳大利亚跟团签证要什么材料 浏览:1178
德国大鹅节多少钱 浏览:848
去菲律宾过关时会盘问什么 浏览:1172
澳大利亚女王为什么是元首 浏览:998
有什么免费的韩国小说软件 浏览:733
申请德国学校如何找中介 浏览:637