Visual Studio提供的Dotfuscator保护程序,可以对用户代码中包含的字符串进行加密.比如下面的例子,为了找到这个程序的注册算法,用.NET Reflector加载程序集后,发现代码中的字符串,都变成这种形式的: Assembly executingAssembly = Assembly.GetExecutingAssembly(); ArrayList list = new ArrayList(); string str = Class64.smethod_0("ᓊᓜᓙᒷᓎᓝᒶ…
关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串  实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来讲第三篇,如何应用上面所学内容,设计一个字符串混淆程序. 先设计一个控制台程序,它是将要被我混淆的程序集文件: public static void Main() { try { RunSnippet(); } catch (Exception e) { string error = string.…
因为手头需要使用一个第三方类库,网络上又找不到它的可用的版本,于是只好自己动手.这个类库使用了Dotfuscator 加密,用.NET Reflector加载程序集, 看到的字符串是乱码,如下面的代码例子所示: internal class Program { // Methods private static void Main(string[] args) { int num2 = 4; try { List<string> expressionStack_51_0; string exp…
转自:http://www.cnblogs.com/Charles2008/archive/2009/04/12/1434115.html MSDN概念:公共语言运行库通过维护一个表来存放字符串,该表称为拘留池,它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用.因此,具有特定值的字符串的实例在系统中只有一个. 上面的概念不好理解,我们还是从基础说起: 一.众所周知,C#中的string是一个引用类型,String对象存放在堆上,而不是在堆栈上的,因此,当把一个字符串变量赋给另一个字符…
在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很大,重新打包又由于有签名的保护导致很难被盗版,但代码被反编译就有可能会泄漏核心技术了,因此一款安全性高的程序最起码要做到的一件事就是:对代码进行混淆. 混淆代码并不是让代码无法被反编译,而是将代码中的类.方法.变量等信息进行重命名,把它们改成一些毫无意义的名字.因为对于我们而言可能Cellphone…
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情.不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了.另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术.那么最近的两篇文章我们就围…
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/50451259 在上一篇文章其中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及又一次打包等内容.通过这些内容我们也能看出来,事实上我们的程序并没有那么的安全.可能资源被反编译影响还不是非常大,又一次打包又由于有签名的保护导致非常难被盗版.但代码被反编译就有可能会泄漏核心技术了,因此一款安全性高的程序最起码要做到的一件事就是:对代码进行混淆. 混淆代…
同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说,特别是HTML5.WebGL和其它纯Javascript实现的项目,知识产权保护是不能忽视的,保护好源代码至少可以增加竞争对手山寨你的应用的成本.通过混淆Javascript代码的方法,可以降低代码的可读性,在一定程度上保护源代码:同时,混淆算法多数都会用非常短的变量名,因此混淆后的代码往往体积更小…
前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI和利用MobileAPI处理Json还是蛮无聊的,做着重复的事情,没有技术的上提升空间的.所以,根据里面提到的Android应用开发人员所需要精通的20个技术点,写篇文章进行总结,一方面是梳理下基础知识和巩固知识,另一方面也是弥补自我不足之处.     那么,今天就来讲讲ProGuard代码混淆的相关技术知识…
本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过涉及架构部分的内容 你只需关心Cache即可,具体的架构,会在后续文章中与大家分享,如果你感兴趣,只需关注即可. 一   为什么要在ASP.NET 项目中引入缓存 1. 我们先来考虑一个问题,通常,面临高并发问题时,我们应该怎么处理? 下图为常规的处理思路和方法 2.为什么引入Cache呢? 我们知道,造成高并发的根本原因是大量读写的问题,…
本篇文章虽不谈架构,但是Cache又是架构中不可或缺的部分,因此,在讲解Cache的同时,将会提及到部分架构知识,关于架构部分,读者可以不用理解,或者直接跳过, 你只需关心Cache即可,具体的架构,会在后续文章中与大家分享. 一   为什么要在ASP.NET 项目中引入缓存 1. 我们先来考虑一个问题,通常,面临高并发问题时,我们应该怎么处理? 下图为常规的处理思路和方法 2.为什么引入Cache呢? 我们知道,造成高并发的根本原因是大量读写的问题,一般地,对于一个系统,读总是比写多,如我们总…
.前言 在上一篇Androd安全--反编译技术完全解析中介绍了反编译方面的知识,因此我们认识到为了安全我们需要对代码进行混淆. 混淆代码并不是让代码无法被反编译,而是将代码中的类.方法.变量等信息进行重命名,把它们改成一些毫无意义的名字.因为对于我们而言可能Cellphone类的call()方法意味着很多信息,而A类的b()方法则没有任何意义,但是对于计算机而言,它们都是平等的. 所以说混淆代码可以在不影响程序正常运行的前提下让破解者很头疼,从而大大提升了程序的安全性. 1.   混淆的使用 在…
前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI和利用MobileAPI处理Json还是蛮无聊的,做着重复的事情,没有技术的上提升空间的.所以,根据里面提到的Android应用开发人员所需要精通的20个技术点,写篇文章进行总结,一方面是梳理下基础知识和巩固知识,另一方面也是弥补自我不足之处.     那么,今天就来讲讲ProGuard代码混淆的相关技术知识…
http://blog.csdn.net/qustdong/article/details/7267258 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke 标签: delphiintegerfunctionobjectsoapclass 2012-02-17 11:46 1139人阅读 评论(0) 收藏 举报  分类: Delphi(24)  首先看一段Delphi帮助中的介绍(After Delphi 6 ): Returns the a…
首先看一段Delphi帮助中的介绍(After Delphi 6 ): Returns the address of a published method. class function MethodAddress(const Name: ShortString): Pointer; Description MethodAddress is used internally by the streaming system. When an event property is read from a…
在Linux上用强大的shell脚本应该也可以完成,可是使用Windows的朋友呢?其实象这样一个简单任务用Python这个强大脚本语言只要几条语句就可以搞定了.个大家知道,要完成这样一个任务根本不用动用C/C++或Java这样的大家伙.好来看看Python的身手,用自己喜欢的文本编辑器或者直接使用安装包自带的IDE都可以:# --- picknames.py ---import osfilenames=os.listdir(os.getcwd())for name in filenames:f…
http://poj.grids.cn/practice/2744 描述现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串.输入输入的第一行是一个整数t (1 <= t <= 10),t表示测试数据的数目.对于每一组测试数据,第一行是一个整数n (1 <= n <= 100),表示已经给出n个字符串.接下来n行,每行给出一个长度在1和100之间的字符…
最近在阅读java.lang下的源码,读到String时,突然想起面试的时候曾经被人问过:都知道在大数据量情况下,使用String的split截取字符串效率很低,有想过用其他的方法替代吗?用什么替代?我当时的回答很斩钉截铁:没有. google了一下,发现有2中替代方法,于是在这里我将对这三种方式进行测试. 测试的软件环境为:Windows XP.eclipse.JDK1.6. 测试用例使用类ip形式的字符串,即3位一组,使用”.”间隔.数据分别使用:5组.10组.100组.1000组.1000…
区块链Fabric技术在托管业务中的运用初探 什么是Fabric技术 HyperLedger是IBM.Intel等多家公司正开展的一个区块链项目,包含了Fabric.Iroha等多项技术,其中最为活跃的是Fabric. 在"开源中国"网站,对Fabric的介绍如下: HyperLedger Fabirc是一个开源的区块链实现,以企业级的安全机制和membership机制为特色,简单来说,Fabric之于区块链,很可能正如Hadoop之于大数据. 开源项目可以直接从代码来进一步理解,代码…
在 Date 方法 章节中,你可以查看更多关于日期转换为字符串的函数: 方法 描述 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6). getFullYear() 从 Date 对象以四位数字返回年份. getHours() 返回 Date 对象的小时 (0 ~ 23). getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999). getMinutes() 返回 Date…
目录 PC逆向之代码还原技术,第五讲汇编中乘法的代码还原 一丶简介乘法指令 1.乘法指令 2.代码还原注意问题 二丶乘法的汇编代码产生的格式 1.高级代码观看 2.乘法的汇编代码还原. 三丶乘法总结 PC逆向之代码还原技术,第五讲汇编中乘法的代码还原 一丶简介乘法指令 1.乘法指令 在汇编中,乘法指令使用 IMUL 或者 MUL指令. 一般有两种形式 IMUL reg,imm 这种指令格式是 reg * imm的结果 重新放到reg中. mul同上 第二种指令格式: IMUL reg,reg1,…
目录 PC逆向之代码还原技术,第三讲汇编中加法的代码还原 一丶汇编简介 二丶高级代码对应汇编观看. 1.代码还原解析: 总结 PC逆向之代码还原技术,第三讲汇编中加法的代码还原 一丶汇编简介 在讲解加法的代码还原之前.我们首先要知道. 加法在汇编中对应的指令是什么. Add 汇编指令. Add x,y 将x的值 加上y 并且重新赋值给x 二丶高级代码对应汇编观看. 观看如下代码 int main(int argc, char* argv[]) { 1 + 2; int nValue = 10 +…
package text1; import java.util.ArrayList; import java.util.HashSet; /* * 要求产生10个随机的字符串, * 每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同, * 每个字符串长度为10; */ public class Example { //先设置一个集合用来存储要随机的数据 public static ArrayList<Character> getContainer(){ //建立一个…
在应用程序配置文件中找不到名为“OAEntities”的连接字符串. 分析原因:由于Model类是数据库实体模型,通过从数据库中引用的方式添加实体,所以会自动产生一个数据库连接字符串,而程序运行到此,没有在MVC模型的App.Config中发现这个链接字符串.所以报错. 解决方法: 将Model中的APPConfig中的OAEntities <connectionStrings> <add name="OAEntities" connectionString=&quo…
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表. 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次.你可以按任意顺序返回答案. 示例 1: 输入:["bella","label","roller"] 输出:["e","l","l"] 示例 2: 输入:["cool&quo…
Java中如何输出对勾? 最简单的方法是,从那个地方拷贝一个对勾的字符,然后System.out.println("√"); 但是心里总会担心,万一机器不认这个字符该怎么办?(可能是多余了)如果我能找到它对应的ASCII编码就好了 第一反应就找来ASCII编码表来找它,还真有这个符号在一张图片上看到,如下: 然后输出System.out.println((char)251);结果û根本不对.... 纠结了很久才知道:扩展ASCII 字符是从128 到255(0x80-0xff)的字符.…
通过学习学会了文本的访问,了解一点哈希表用途.经过网上查找做成了下面查询文章重复词的JAVA程序. 1 思 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,getkey是字符串类型,保存单词:value是数字类型,保存该单词出现的次数. (3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的getkey中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(第一次出现): 如果…
注意:配置文件中的字符串不要有下划线 .配置中  key不能带下划线,value可以 错误的.不能读取的例子: mySet .ABAP_AS_POOLED      =  ABAP_AS_WITH_POOL 不要带下划线,正确的例子 mySet.ABAPASPOOLED      =  ABAP_AS_WITH_POOL (下划线的坑,坑了我两天..特此纪念) 读取核心配置文件 核心配置文件是指在resources根目录下的application.properties或application.y…
jQuery截取字符串.日期字符串转Date.获取html中的纯文本. var com = com || {}; (function ($, com) { /* * 截取字符串 * @param str:要截取的字符串 * @param len:保留多少字符 * @param symbol:超过之后字符串末端要添加的字符 */ com.cutStr = function (str, len, symbol) { if (symbol == undefined) { symbol = "...&q…
在mysql中更新字段的部分值,更新某个字符串字段的部分内容 sql语句如下: update goods set img = REPLACE(img,'http://ozwm3lwui.bkt.clouddn.com','http://imgs.lqjava.com') where img like 'http://ozwm3lwui.bkt.clouddn.com%' 如上,将字符串中 http://ozwm3lwui.bkt.clouddn.com/8f86f9d55d314720a2ada…