|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有个问题想请教你一下,呵呵:)你觉得将来学什么方向比较好,我真是想不出来,知道的太少了,麻烦了。加密|字符串<Pstyle="TEXT-INDENT:2em">进修过了称号搅浑,比来又看了一些字符串加密方面的器材。在搅浑回护和加密壳中都有字符串加密回护功效。<Pstyle="TEXT-INDENT:2em">整体上字符串加密能够分为两类,第一类是搅浑回护中的字符串加密手艺。次要特性是修正代码实行路径。年夜部分搅浑回护工具的字符串加密都是这一类。<Pstyle="TEXT-INDENT:2em">第二类就是加密壳中的字符串加密手艺。这类不必修正IL代码,间接对元数据中的字符串加密。这一类以remotesoft,maxtocode为代表。<Pstyle="TEXT-INDENT:2em">先看第一类,加密完成大抵以下。<Pstyle="TEXT-INDENT:2em">加密前:<Pstyle="TEXT-INDENT:2em">- MessageBox.Show("HellowWorld!");
复制代码 <Pstyle="TEXT-INDENT:2em">加密后:<Pstyle="TEXT-INDENT:2em">- MessageBox.Show(Helper.Decode("A34579dfbbeyu346563345/=="));
复制代码 <Pstyle="TEXT-INDENT:2em">复杂的说就是将本来利用字符串的中央,将间接利用字符串改成直接利用字符串。在这里回护软件将字符串"HellowWorld!"举行加密失掉了局"A34579dfbbeyu346563345/=="。Helper.Decode是回护软件供应的一个解密函数,它完成将"A34579dfbbeyu346563345/=="复原为"HellowWorld!"。<Pstyle="TEXT-INDENT:2em">由于是搅浑回护,以是我们能够剖析失掉Decode的代码。然后间接用这个函数的代码写一个小工具将程序会合一切加密的字符串都复原。天生一个字符串对应表。以便利代码浏览和调试。<Pstyle="TEXT-INDENT:2em">假如再深切,能够完成主动将字符串复原到原程序会合。<Pstyle="TEXT-INDENT:2em">再来看下面例子的IL代码。<Pstyle="TEXT-INDENT:2em">加密前:<Pstyle="TEXT-INDENT:2em">- ldstr"HellowWorld!"callMessageBox.Show(string)
复制代码 <Pstyle="TEXT-INDENT:2em">加密后:<Pstyle="TEXT-INDENT:2em">- ldstr"A34579dfbbeyu346563345/=="callstringHelper.Decode(string)callMessageBox.Show(string)
复制代码 <Pstyle="TEXT-INDENT:2em">怎样复原,实在很复杂,我们已晓得了decode的代码,并且已能完成字符串的解密了。失掉了字符串的对应表。<Pstyle="TEXT-INDENT:2em">间接将<Pstyle="TEXT-INDENT:2em">- ldstr"A34579dfbbeyu346563345/=="callstringHelper.Decode(string)
复制代码 交换为<Pstyle="TEXT-INDENT:2em">便可。写一个小工具利用正则表达式搜刮交换就能够了。<Pstyle="TEXT-INDENT:2em">第二类字符串加密回护:<Pstyle="TEXT-INDENT:2em">完成就是间接对元数据中的String流举行加密。<Pstyle="TEXT-INDENT:2em">这类回护有一个缺点,程序运转后元数据中的String流会解密后在内存中完全复原。在我后面的文章内里有先容元数据的dump。这里就不反复罗嗦了。关于第一类字符串加密回护,另有别的的情势,如Helper.Decode这个函数能够是一个native的函数。大概是和流程搅浑分离。
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。 |
|