文档库 最新最全的文档下载
当前位置:文档库 › 代码混淆pro文件配置修改

代码混淆pro文件配置修改

代码混淆pro文件配置修改
代码混淆pro文件配置修改

编辑pro文件,找到以下代码

-dontskipnonpubliclibraryclassmembers

-target 1.5

-dontshrink

-dontoptimize

-useuniqueclassmembernames

-keeppackagenames

-keepattributes

Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table ,*Annotation*,Synthetic,EnclosingMethod

-keepparameternames

-dontwarn

-ignorewarnings

在代码后添加相关配置

#不混淆lib下jar包里面的class文件

-keep class WebRoot.WEB-INFO.lib.*

#不混淆action包里面的类名,字段名,方法名

#在界面上会用到这些字段和getset方法

-keepnames class **.kf.**.action.**{

public private protected ;

public ;

}

-keepnames class **.kf.**.dao.**{

}

-keepnames class **.kf.**.service.**{

}

-keep class * extends org.springframework.orm.hibernate3.support.HibernateDaoSupport { public ;

}

#不混淆实体的字段和方法,jsp的表单里面会有这些属性的值,混淆之后,会出现无法提交表单情况

-keep class **.entity.** {

public private protected ;

public ;

}

ProGuard的作用:

1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.

2.创建的程序和程序库很难使用反向工程.

3.所以它能删除来自源文件中的没有调用的代码

4.充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.

参数:

-include {filename} 从给定的文件中读取配置参数

-basedirectory {directoryname} 指定基础目录为以后相对的档案名称

-injars {class_path} 指定要处理的应用程序jar,war,ear和目录

-outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称

-libraryjars {classpath} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件

-dontskipnonpubliclibraryclasses 指定不去忽略非公共的库类。

-dontskipnonpubliclibraryclassmembers 指定不去忽略包可见的库类的成员。

保留选项

-keep {Modifier} {class_specification} 保护指定的类文件和类的成员

-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。

-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)

-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)

-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)

-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件

压缩

-dontshrink 不压缩输入的类文件

-printusage {filename}

-whyareyoukeeping {class_specification}

优化

-dontoptimize 不优化输入的类文件

-assumenosideeffects {class_specification} 优化时假设指定的方法,没有

任何副作用

-allowaccessmodification 优化时允许访问并修改有修饰符的类和类的成员

混淆

-dontobfuscate 不混淆输入的类文件

-printmapping {filename}

-applymapping {filename} 重用映射增加混淆

-obfuscationdictionary {filename} 使用给定文件中的关键字作为要混淆方法的名称

-overloadaggressively 混淆时应用侵入式重载

-useuniqueclassmembernames 确定统一的混淆类的成员名称来增加混淆

-flattenpackagehierarchy {package_name} 重新包装所有重命名的包并放在给定的单一包中

-repackageclass {package_name} 重新包装所有重命名的类文件中放在给定的单一包中

-dontusemixedcaseclassnames 混淆时不会产生形形色色的类名

-keepattributes {attribute_name,...} 保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses.

-renamesourcefileattribute {string} 设置源文件中给定的字符串常量

Ant Example:

< !-- This Ant build file illustrates how to process applications,

by including ProGuard-style configuration options.

Usage: ant -f applications2.xml -->

< target name="obfuscate">

classpath="lib/proguard.jar" />

-injars in.jar

-outjars out.jar

-libraryjars ${java.home}/lib/rt.jar

-printmapping out.map

-renamesourcefileattribute SourceFile

-keepattributes SourceFile,LineNumberTable

-keepattributes *Annotation*

-keepclasseswithmembers public class * {

public static void main(https://www.wendangku.net/doc/52653527.html,ng.String[]);

}

-keepclasseswithmembernames class * {

native <methods>;

}

-keepclassmembers class * extends https://www.wendangku.net/doc/52653527.html,ng.Enum {

public static **[] values();

public static ** valueOf(https://www.wendangku.net/doc/52653527.html,ng.String);

}

-keepclassmembers class * implements java.io.Serializable {

static final long serialVersionUID;

static final java.io.ObjectStreamField[] serialPersistentFields;

private void writeObject(java.io.ObjectOutputStream);

private void readObject(java.io.ObjectInputStream);

https://www.wendangku.net/doc/52653527.html,ng.Object writeReplace();

https://www.wendangku.net/doc/52653527.html,ng.Object readResolve();

}

< /target>

< /project>

如何更改用户配置文件和程序设置的默认位置

如何更改用户配置文件和程序设置的默认位置 文章编号: 322014 最后修改: 2006年4月20日 移动用户的Documents and Settings 文件夹 概要 本文介绍了如何移动用户的Documents and Settings 文件夹。 所有用户的配置文件信息均存储在“%系统驱动器%\Documents and Settings”文件夹中。如果尝试在Windows 中移动或重命名用户的Documents and Settings 文件夹,您将收到以下错误消息:Documents and Settings 是Windows 系统文件夹,Windows 需要它才能正常运行,因此不能移动或重命名。 注意:本文包含有关Microsoft 不支持的配置的信息。Microsoft 提供此信息仅供参考;Microsoft 不能保证此配置可以正常运行。 警告:Microsoft 强烈建议不要重命名任何系统文件夹。如果重命名系统文件夹,可能会导致系统故障或计算机性能不稳定。使用本文中的信息之前,请备份您的计算机。 回到顶端 移动用户的Documents and Settings 文件夹 警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。 注意:此方法并不会重新定位重要的Windows 组件。此方法仅用于移动用户特定的数据。 1. 确定用户的配置文件路径。确定配置文件路径有两种方法。可以使用以下两种方法中的任一种(首选用户SID 方法):? 用户SID 方法:a. 使用Windows Server Resource Kit 中的Getsid 工具获取SID。使用与以下示例类似的语法: getsid \\server1username \\server1username b. 获取SID 之后,使用Regedit.exe 或Regedt32.exe 在以下注册表项之下选择用户的SID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList ? 用户路径设置方法:a. 以用户身份登录到计算机,然后在命令提示符处键入set。记下USERPROFILE 的设置,然后关闭命令提示符窗口。 b. 以计算机管理员的身份登录。 c. 使用注册表编辑器将USERPROFILE 设置添加到以下注册表项中: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList d. 单击注册表项,然后单击“编辑”菜单上的“查找”。 e. 在“查找”框中,键入USERPROFILE 设置的值,然后单击“查找下一个”。 2. 更改ProfilesDirectory 值以使用您希望在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 注册表项中使用的新路径。 3. 退出注册表编辑器,然后以用户身份登录。在命令提示符处键入set,以确认路径已更改。

二进制代码混淆的国内外研究现状

二进制代码混淆的国内外研究现状 1.国内外研究现状 南开大学 贾春福 《路径模糊一种有效抵抗符号执行的二进制混淆技术》提出了一种新的基于路径模糊的软件保护方法以抵抗符号执行的逆向分析:利用条件异常代码替换条件跳转指令来隐藏程序的路径分支信息,通过系统的异常处理机制实现程序的跳转,并使用不透明谓词技术引入伪造的路径分支来弥补程序在统计属性上的差异。 电子科技大学 吴适 《基于二进制代码混淆的软件保护研究》提出一种新的 C2D 转换的混淆算法—基于代码-数据欺骗的混淆算法,该算法的目的是为了在静态分析工具中隐藏目标基本块及到目标基本块的控制流,当反汇编器遇上条件跳转指令时,跳转指令中的目标地址和跳转指令紧接着的地址都会被解释成指令。 令绝对跳转指令(jmp,ret)后面的地址为 A,当使用递归遍历算法时,若没有其他指令跳转到 A,则 A 不会被解释成指令;当使用顺序扫描算法时,A 地址处存在无法被解释的指令,则会跳过对 A 的反汇编。利用这两点规律,将真正的控制转移隐藏在某条指令的数据部分中,还可以将指令隐藏在代码段的静态数据中。 西北大学王怀军《基于变形的二进制代码混淆技术研究》研究并实现了二进制代码混淆保护原型系统MEPE,MEPE 系统变形部分主要包含3 方面研究内容: 1) 指令等价变形,主要通过设计指令变形的模板函数,利用模板函数对原始指令进行等价变形。2) 控制流混淆,通过打乱原来指令的物理顺序,利用跳转地址表管理指令执行顺序; 3) 循环体中指令变形的控制,首先分析循环结构对时间开销的影响,然后提出控制循环体中指令变形和控制流混淆的方法。 南开大学 王志 《二进制代码路径混淆技术研究》提出了一种全新的线性代码混淆策略,该策略将未解数学猜想引入到软件的路径信息中,将基于符号执行和约束求解技术的逆向工程难度等价到证明未解数学猜想的难度。在代码混淆中只使用线性操作,不使用加密函数。多项式等价变换、收敛值变换、固定循环次数变换和相似控制流变换是基于未解数学猜想的路径混淆所特有的变换方式,多态和变形技术是常用的代码变换技术,由于基于未解数学猜想的路径混淆有很好的可扩展性,

代码混淆

混淆文件 proguard-rules.pro 参数详解: [plain]view plain copy print? 1.-optimizationpasses 5 # 指定代码 的压缩级别 2.-dontusemixedcaseclassnames # 是否使用 大小写混合 3.-dontskipnonpubliclibraryclasses # 是否混淆 第三方jar 4.-dontpreverify # 混淆时是 否做预校验 5.-verbose # 混淆时是 否记录日志 6.-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所 采用的算法 7. 8.-keep public class * extends android.app.Activity # 保持哪些 类不被混淆 9.-keep public class * extends android.app.Application # 保持哪些 类不被混淆 10.-keep public class * extends android.app.Service # 保持哪些 类不被混淆 11.-keep public class * extends android.content.BroadcastReceiver # 保持哪些 类不被混淆 12.-keep public class * extends android.content.ContentProvider # 保持哪些 类不被混淆 13.-keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些 类不被混淆 14.-keep public class * extends android.preference.Preference # 保持哪些 类不被混淆 15.-keep public class com.android.vending.licensing.ILicensingService # 保持哪些 类不被混淆 16. 17.-keepclasseswithmembernames class * { # 保 持 native 方法不被混淆 18. native ; 19.} 20. 21.-keepclasseswithmembers class * { # 保持自定 义控件类不被混淆 22. public (android.content.Context, android.util.AttributeSet); 23.} 24. 25.-keepclasseswithmembers class * { 26. public (android.content.Context, android.util.AttributeSet, int); # 保持自定 义控件类不被混淆 27.} 28. 29.-keepclassmembers class * extends android.app.Activity { # 保持自定 义控件类不被混淆 30. public void *(android.view.View); 31.} 32. 33.-keepclassmembers enum * { # 保持枚 举 enum 类不被混淆 34. public static **[] values(); 35. public static ** valueOf(https://www.wendangku.net/doc/52653527.html,ng.String); 36.} 37. 38.-keep class * implements android.os.Parcelable { # 保 持 Parcelable 不被混淆 39. public static final android.os.Parcelable$Creator *; 40.} 41. 42.-keep class MyClass; # 保持自己 定义的类不被混淆 以上是最基础的配置,几乎每个项目都需要进行这些地方的混淆(或保持不混淆)。 如果你仔细看过上方的注释,就会了解一些基本代码混淆策略了。 只是,这还远远不够,因为你在项目中,总会不可避免的引用第三方的library库或是jar包,那,如果你不能够正确的混淆第三方的资源,可能会导致你的应用无法使用。(我就因为忘了配置Gson相关的混淆,导致页面一直没有数据显示,蛋疼的一笔)。 贴出我项目中关于第三方的混淆部分: [plain]view plain copy print?

系统配置实用程序的设置和应用

1:Alerter服务:选择“手动/禁用”是明智之举。微软对警报器服务的描述为: 通知所选用户和计算机有关系统管理级警报,就是在系统出现错误的情况下能及 时向用户发出通告。对于普通应用人员来讲,禁用它可以阻止像IE出现错误、要 求发送错误报告之类对话框的出现,因为这些错误报告对于我们来说毫无用处, 所以选择禁用它是明智之举 2:application layer gateway service为internet连接共享和internet连接防 火墙提供第三方协议插件的支持如果你没启用internet连接共享或windows xp内 置防火墙,可以禁止这个服务。他不影响网络共享放心关闭吧,只是一个插件。这 个可占了内存资源1.5MB关了哦 3:Application management用于设定,发布和删除软件服务。SQL安装时,提 示“系统有一个程序的安装副本在运行之中,请重新启动电脑”等提示,一般重 启即可,但如果这个服务不开,重启N次也没有用网吧客户机建议手动,服务器 装了SQL的话也禁止吧(负带影响:有时候安装东西的时候会提示服务未启动,有时候又正常) 4:automatic updates自动从windows update启用windows更新的下载和安装需 要时,我们完全可以在windows update web网站手动进行更新。禁啦开这个服务 简直浪费系统资源。另外附加一句,需要手动更新的时候,需将此服务开启 5:Background Intelligent Transfer Service该服务的中文意思为智能备份和 传输服务,用于在局域网中利用空闲的网络带宽传输数据。这个服务被禁用可带 来一些好处,因为它存在一个小BUG,某些Windows XP系统会因为它的缺陷而在启动到桌面环境时出现任务栏暂时锁死的现象,禁用它能立马解决此故障放心禁止吧,补充一句:刚听朋友说,关闭此服务有一定的负面影响,网站上不能使用手 工更新功能了,大家知道就行了。 6:ClipBook这项服务的作用是储存粘贴信息并与远程计算机共享此信息,Windows XP的“剪贴簿查看器”就是依赖这项服务来工作的。如果此项服务被终止,“剪贴簿查看器”将无法与远程计算机共享信息,相反地,它的好处在于可 以杜绝一些隐私外泄的安全隐患放心禁止准没有错 7:COM+ Event System一些COM+ 软件需要,检查你的c:\program files\ComPlus Applications 目录,没东西可以把这个服务关闭(注意是这个路 径里面的服务没有东西可以关闭,不是指COM服务,以免大家又误会).不能禁 止的服务不过喜欢PF降低的朋友就禁止吧! 8:COM+ System Application管理基于COM+ 组件的配置和跟踪。禁止吧没关系的 9:Computer Browser用来浏览局域网电脑的服务,但关了也不影响浏览!所以 禁止啊降低PF哦 10:Cryptographic Services Windows更新时用来确认windows 文件指纹的,手 动或者禁止吧,比较保守的朋友就手动。和我这样的玩火使者就禁吧降低PF要紧,懒得运行了其他东东把这个服务又给开起了。 11:DCOM Server Process Launcher 此服务级重要程度(中级)终止或禁用此 服务会造成系统不稳定,大家可别打这个注意啊。虽然不影响你正常开机和使用 系统稳定为重啦。当然你们要跟谁比PF底的话哈哈把这个也禁了吧,看谁狠。补充描述:SP2新增的服务,DCOM(分布式组件对象模式),关闭这个服务会造成很多手动服务无法在需要的时候自动启动,很麻烦。比如一些软件无法正常安装,flashmx ,还有些打印机的驱动无法安装,都提示错误“RPC服务器不可用”。建

proe工程图配置文件.dtl常用选项及使用详解

工程图配置文件.dtl常用选项及使用详解 工程图配置文件是出工程图所必需了解掌握的知识。我写过一篇关于系统配置文件config.pro的教程,里面提到过配置文件对于使用PROE非常重要。 config.pro的使用,请先看这个帖https://www.wendangku.net/doc/52653527.html,/thread-9138-1-1.html 不可否认的是,论坛工程图版的求助帖超过一半与工程图配置文件设置有关。可见工程图配置文件的重要性。工程图配置文件*.dtl使用上比系统配置文件config.pro要简单一些。所以本帖先将一些常用选项列出,供大家参考。配置文件使用方面的内容放在后面讲解。 本帖为原创,严禁转载! 请勿综合成PDF或WORD等格式打包下载,谢谢合作! 本帖不设回复可见,方便大家都可以见到 本帖所讲述的内容目录如下: 一、工程图配置文件常用选项及说明 二、工程图配置文件使用详解 1、创建工程图配置文件*.dtl 2、工程图配置文件选项的查找 3、工程图配置文件的选项设置与修改 4、工程图配置文件的正确调用 一、工程图配置文件常用选项及说明 drawing_units mm(前面为选项,空格后为值,下同) 此项设置所有绘图参数的单位,比如后面的文字大小、箭头大小等选项,是以mm为单位的,先要设置这个选项。 drawing_text_height 3.5 设置缺省文本的缺省高度,如注释中的文字,标注中的数值大小。 text_width_factor 0.7 设置文本的高度和宽度的比例,按国标应使用长仿宋体,应为0.7。 但此项设置对于windows系统自带的仿宋体无效。 broken_view_offset 3 设置破断视图两破断线之间的距离 detail_circle_line_stylephantomfont 设置详细视图(局部放大图)的边界线的线型,影响打印的粗细 projection_typefirst_angle 设置视图的投影方向为第一角法(国标要求用第一角法,日本等国用第三角法)

代码混淆pro文件配置修改

编辑pro文件,找到以下代码 -dontskipnonpubliclibraryclassmembers -target 1.5 -dontshrink -dontoptimize -useuniqueclassmembernames -keeppackagenames -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table ,*Annotation*,Synthetic,EnclosingMethod -keepparameternames -dontwarn -ignorewarnings 在代码后添加相关配置 #不混淆lib下jar包里面的class文件 -keep class WebRoot.WEB-INFO.lib.* #不混淆action包里面的类名,字段名,方法名 #在界面上会用到这些字段和getset方法 -keepnames class **.kf.**.action.**{ public private protected ; public ; } -keepnames class **.kf.**.dao.**{ } -keepnames class **.kf.**.service.**{ } -keep class * extends org.springframework.orm.hibernate3.support.HibernateDaoSupport { public ; } #不混淆实体的字段和方法,jsp的表单里面会有这些属性的值,混淆之后,会出现无法提交表单情况 -keep class **.entity.** { public private protected ; public ; }

Windows_不能加载用户的配置文件,但是用系统的默认配置文件让您登录

一、错误现象: 当用户登录时,输入密码后弹出如下的错误信息: “windows不能加载本地存储的配置文件。此问题的可能原因是安全权限不足或者是本地配置文件损坏。 如果此问题持续存在,请与管理员联系。” 二、解决办法 此种情况的原因可能是当前登录的用户为域中的用户,此用户的本地配置文件被误删除或者被破坏,这样在登录时,系统就找不到其配置文件信息。所以出现错误。 当然,解决的办法就是恢复其配置文件。步骤如下: 1、进入C:\document and setting ,找到以此用户命名的文件夹(例如teyqiu),也就是该用户原来的配置文件夹,主要内容有桌面的设置、开始菜单的设置和收藏夹等等信息。将其复制到别处。 2、重命名C:\document and setting下以此用户命名的文件夹。(例如原来是teyqiu改成了teyqiu2) 3、重启机器,用该用户再次登录,此时当机器登录到域时,由于本地已经删除了该用户的配置文件夹,此时会自动创建一个新的以此用户命名的文件夹。里面就会包含一个正确的配置文件了。 4、再将copy走的那个文件夹(本案例是改名的teyqiu2)中的“桌面”、“开始菜单”、“收藏夹”等个人设置的文件夹copy到新创建的文件夹下就可以恢复以前自己熟悉的桌面和开始菜单设置了。 注意:不要把copy走文件夹中的所有文件夹和文件覆盖新创建的文件夹中的内容,这样新创建的正确的配置文件也会被覆盖,所以只把属于你的copy回来就可以了! 注意以下的几个问题: 1.在copy C:\document and setting 中的依此用户命名的文件夹时,显示所有该文件夹的文件,因为Outlook的所有邮件都隐藏在该文件夹中的'Local settings",别再把它误删除了。 2.另外,建议不要急于删除C:\document and setting下依此用户命名的文件夹,只要把它该文件夹改一个名字即可,等重新启动及按照上方法copy完原来的一些配置后,发现机器完全恢复原来的样子后再删除也不迟。 3.恢复完后,outlook需要重新设置,但原来的邮件一封也没有少 百度文库

PROE工程图国标配置

在config.pro文件里面增加如下行:drawing_setup_file X:\...\cns_ISO.dtl X:\...\cns_ISO.dtl 为你工程图配置文件的路径。 新建记事本文件,拷贝如下代码,然后另存为cns_ISO.dtl,即可。drawing_text_height 3.500000 text_thickness 0.000000 text_width_factor 0.700000 aux_view_note_format VIEW %viewname-%viewname broken_view_offset 3.000000 create_area_unfold_segmented YES def_view_text_height 3.500000 def_view_text_thickness 0.000000 default_view_label_placement BOTTOM_LEFT detail_circle_line_style PHANTOMFONT detail_circle_note_text DEFAULT detail_view_boundary_type CIRCLE detail_view_circle ON detail_view_scale_factor 2.000000 half_view_line SYMMETRY_ISO model_display_for_new_views FOLLOW_ENVIRONMENT projection_type third_angle show_total_unfold_seam YES tan_edge_display_for_new_views NO_DISP_TAN view_note STD_ISO view_scale_denominator 100 view_scale_format RA TIO_COLON crossec_arrow_length 3.500000 crossec_arrow_style TAIL_ONLINE crossec_arrow_width 1.000000 crossec_text_place above_tail crossec_type NEW_STYLE cutting_line STD_ISO cutting_line_adapt NO cutting_line_segment 7.000000 def_xhatch_break_around_text YES def_xhatch_break_margin_size 1.000000 default_show_2d_section_xhatch ASSEMBLY_AND_PART default_show_3d_section_xhatch YES draw_cosms_in_area_xsec NO remove_cosms_from_xsecs TOTAL show_quilts_in_total_xsecs NO datum_point_shape CROSS datum_point_size 1.000000 hidden_tangent_edges erased hlr_for_datum_curves YES

读取配置文件和修改配置文件(ServiceIP.properties)(原创)

读取配置文件和修改配置文件(ServiceIP.properties)(原创) package espeed.util; import java.io.*; import java.util.Properties; /* * 配置短信服务器IP(配置文件建在SRC下,ServiceIP.properties) */ public class EditServiceIP { private static Properties properties=new Properties(); private static EditServiceIP esip; public EditServiceIP(){} public static EditServiceIP getInstance(){ if(esip==null) esip=new EditServiceIP(); return esip; } //取得短信服务器IP public String getSmsServiceIP(){ InputStream

is=EditServiceIP.class.getClassLoader().getResourceAsSt ream("ServiceIP.properties"); try { properties.load(is); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("------------取得短信服务器IP地址发生IO异常"); } String provalue=properties.getProperty("SMS.ServiceIP"); return provalue; } //修改短信服务器IP public String modifySmsServieIP(String smsServiceIP){ File file=new File(EditServiceIP.class.getClassLoader().getResource("S erviceIP.properties").getPath()); try{ properties.load(new FileInputStream(file));

浅谈安卓开发代码混淆技术

浅谈安卓开发代码混淆技术 关键字:代码混淆,代码保护,应用安全,应用加固,安卓安全 随着移动互联网的快速发展,应用的安全问题不断涌现出来,于是越来越多的应用开发者将核心代码由java层转到native层,以对抗成熟的java逆向分析工具,然而如果native层的代码如果没有进行任何保护,还是比较容易被逆向分析工作者获取其运行逻辑,进而完成应用破解或者进行其他的操作。那么提高native代码的安全性有什么好办法吗?答案是肯定的,今天我们就来介绍一种有效对抗native层代码分析的方法——代码混淆技术。 那么,什么是代码混淆呢?代码混淆的学术定义如下: 代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。其解释如下:程序P经过混淆变换为P‘,若P没有结束或错误结束,那么P’也不能结束或错误结束;而且P‘程序的结果应与程序P具有相同的输出。否则P’不是P的有效的混淆。 目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation)和预防混淆(preventive obfuscation)这四种类型。 1. 布局混淆 布局混淆是指删除或者混淆软件源代码或者中间代码中与执行无关的辅助文本信息,增加攻击者阅读和理解代码的难度。软件源代码中的注释文本、调试信息可以直接删除,用不到的方法和类等代码或数据结构也可以删除,这样

即可以使攻击者难以理解代码的语义,也可以减小软件体积,提高软件装载和执行的效率。软件代码中的常量名、变量名、类名和方法名等标识符的命名规则和字面意义有利于攻击者对代码的理解,布局混淆通过混淆这些标识符增加攻击者对软件代码理解的难度。标识符混淆的方法有多种,例如哈希函数命名、标识符交换和重载归纳等。哈希函数命名是简单地将原来标识符的字符串替换成该字符串的哈希值,这样标识符的字符串就与软件代码不相关了;标识符交换是指先收集软件代码中所有的标识符字符串,然后再随机地分配给不同的标识符,该方法不易被攻击者察觉;重载归纳是指利用高级编程语言命名规则中的一些特点,例如在不同的命名空间中变量名可以相同,使软件中不同的标识符尽量使用相同的字符串,增加攻击者对软件源代码的理解难度。布局混淆是最简单的混淆方法,它不改变软件的代码和执行过程。 2. 数据混淆 数据混淆是修改程序中的数据域,而对代码段不作处理。常用的数据混淆方式有合并变量、分割变量、数组重组、字符串加密等。 合并变量是将几个变量合并为一个数据,原来的每个变量占据其中一个区域,类似于一个大的数据结构。分割变量则是将一个变量分割为两个变量,对分割前后提供一种映射关系,将对一个变量的操作转化为对分割后两个变量的操作。 数组重组有数组的分割、合并、折叠和平滑等几种方式。分割是将一个数组分成2个或多个相同维度的数组;合并则相反;折叠是增加数组的维数;平滑则是相反。 在ELF文件中,全局变量和常量字符串存放在数据段中,反汇编工具可以轻易查找到字符串与代码之间的引用关系。在软件破解中,通过一些字符串提示可

国标工程图格式的设置

在绘图区的空白处右击,然后选择“属性”/“绘图选项”在项目中找到 “projection_type”将其值改为“third_angle”或“first_angle”即可完成第一视角与三视角的转换。 在这里我了就顺便说一下,其实要想做出标准的工程图,有很多的选项需要修改。要想减少修改的选项你可以选择“打开配置文件”然后在你电脑中找到PROE安装目录(若不知道安装目录在哪个文件夹,你可以右击桌面上PROE的图标//属性//查找目标,通过上面的地址栏就能知道PROE是安装在哪里了)下的text文件夹最后选择iso.dtl配置文件并打开,因为此配置文件为ISO标准在工程图上基本上和我国制图标准相符合了。此时绘图的单位也自动改成了mm。以下为一些常用的参数设置: drawing_text_height // 3.5 drawing_units // mm decimal_marker // period sym_flip_rotated_text // yes text_orientation // parallel tol_display // yes projection_type // first_angle(我国是采用第一角投影法) witness_line_offset // 0 crossec_arrow_style // tail_online * axis_line_offset // 2 circle_axis_offset // 2 draw_arrow_style // filled text_width_factor // 0.7 angdim_text_orientation // horizontal_outside 设置好以上的参数总体上都能满足工程图的标准了。

怎样修改proe的配置文件

怎样修改p r o e的配置 文件

怎样修改proe的配置文件 一、配置文件是什么东西?"C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files" 首先,要建立一个概念,PROE里的所有设置,都是通过配置文件来完成的。打个比方,在AUTO CAD里,新安装完软件后,我们就会把自己常用的一些工具条调出来,在窗口摆放好位置,设好十字光标大小,右键设置等等直到把整个AUTO CAD调成自己想要的样子,然后退出程序。再次运行AUTO CAD时,我们会发现之前设置都还有效。 用同样的方法,在PROE里就不灵了!听说在选项里可以设置中英文双语菜单……听说还可以设单位……听说还要设公差……听说还可以改颜色……。好的,费了大半天劲都一一改好了,这下放心了,关掉PROE。再一次打开PROE时,一看,傻眼了,之前明明设好的怎么又没了呢!你可能会觉得——这什么鬼烂软件,人家其他软件都是这样设,它就不行!告诉你,这就是PROE的配置文件在作怪!你没有保存这些配置文件,也没有放到适当的位置!这下你应该知道,这些配置文件是用来干嘛的了。那么配置文件(有些书也叫映射文件)又包括哪些呢?下面介绍常用的几个 config.pro——系统配置文件,配置整个PROE系统 gb.dtl——工程图配置文件,你可以先简单的理解为设置箭头大小,文字等标注样式。 format.dtl——工程图格式文件(可以简单的理解为图框)的配置文件。 table.pnt——打印配置文件,主要设置工程图打印时的线条粗细、颜色等。 A4.pcf——打印机类型配置文件,主要设置工程图打印出图时的比例、纸张大小等。 config.win.1——(1为流水号,每改一次自动增加)操作界面、窗口配置文件,比如说我们可以在这个文件中设置模型树窗口的大小,各种图标、工具栏、快捷键在窗口的位置等等。 Tree.cfg——模型树配置文件,主要设置在模型树窗口显示的内容、项目。

安卓加固APK防破解常用技术

引言 防破解技术汇集 关键逻辑放服务端 用 native code 替代 Java 代码 代码混淆 Java 代码混淆 native code混淆 运行前做完整性校验,防止重打包 zip 加密位法 dex 加密隐藏 dex 嵌入异常汇编法 资源混淆法 禁止调试与模拟器检测 附录资料 安卓破解常用工具软件 加固 apk 实例 引言 安卓应用防止破解和重打包可以选择梆梆加固、阿里聚安全、爱加密等成熟解决方案,他们的加固比较彻底,使用的技术也比较深层次,所以破解难度也很大,但是有可能带来应用不稳定的问题,所以周期长。 如果不选择梆梆加固等的成熟方案,那么可以选择将一些防破解和重打包的对抗技术组合使用,虽然不如成熟方案层次深,但是使用简单,周期短,防住普通破解者也有不错的效果。 这里将一些这样的防破解技术整理如下,仅供参考。 每个技术都标注了易用性和防破解效果,易用性越高表明越容易实现,防破解效果越高表明攻击者越难破解。其中易用性越高表明越容易开发实现,防破解能力越高表明攻击者越难破解。 防破解技术汇集

关键逻辑放服务端 尽可能将关键的逻辑代码放在服务端运行,减少敏感代码暴露在客户端。让客户端只做一些 API 请求和界面交互。 易用性:高 防破解能力:中 用 native code 替代 Java 代码 将一部分关键的或者计算密集型的代码用 native code (Android NDK)来编写,不仅能提高运行效率,也能增加攻击者的逆向难度。 易用性:中 防破解能力:高 代码混淆 Java 代码混淆 安卓标配了 proguard,推荐使用。 易用性:高 防破解能力:中 native code混淆 对 native code 做混淆,开源工具有:obfuscator-llvm/obfuscator/wiki 根据经验,这会让破解难度大大增加。 易用性:中 防破解能力:高 运行前做完整性校验,防止重打包

第7章 配置打印服务器_Z_2.0

第7章配置打印服务器 内容: ↘打印概述 ↘打印服务器 ↘添加打印机 ↘配置后台打印文件夹 ↘打印机的优先级 ↘打印池 ↘多客户端支持 ↘管理打印机 ↘打印权限 ↘配置Internet打印 ↘利用分隔页分隔打印文档 Windows Server 2008提供强有力的打印管理功能,不但可以减轻系统管理员的负担,还可以让用户轻易地打印文件。 7.1 Windows Server 2008打印概述 Windows Server 2008所提供的打印功能主要有: ↘用户使用Windows Server 2008家庭中的产口,可以在整个网络范围内共享打印资源。各种计算机和操作系统上的客户端,可以通过Internet将打印作业发送到运行Windows Server 2008家族操作系统的打印服务器所连接的本地打印机,或者发送到使用内置或外围网卡连接到网络或其他服务器的打印机。 ↘Windows Server 2008家族中的产品支持多种高级打印功能。例如,无论运行Windows Server 2008家族操作系统的打印服务器位于网络中的哪个位置,管事员都可以对它进行管理。另一项高级功能是,客户不必在Windows XP客户端计算机安装打印机驱动程序就可以使用打印机。当客户端连接运行Windows Server 2008家族操作系统的打印服务器订购时,驱动程序将自动下载。 ↘Windows Server 2008家族中的产品便利管理员更加容易在一个中心位置安装网络打印机和配置打印资源。客户可以配置运行Microsoft Windows 98或Microsoft Windows NT 操作系统的客户端计算机来访问网络打印设备,以实现打印。 我们介绍一些在Windows Server 2008打印上的几个术语,如图7-1所示。 ↘打印设备:也就是一般常说的打印机,换句话说,它就是可以放打印纸的物理打印机。 ↘打印机(逻辑打印机):在Windows Server 2008中,所谓“逻辑打印机”,并不是指物理设备,而是介于应用程序与打印设备之间的软件接口,用户的打印文档就是通过它发送给打印设备。 无论是打印设备,还是逻辑打印机,它们都可以被简称为“打印机”。不过为了避免混

实验 四:Oracle 11g数据库加密及代码混淆

实验四:Oracle 11g数据库加密及代码混淆 实验学时:2 实验类型:综合 实验要求:必修 一、实验目的 该实验主要是使学生学会在数据库中如何进行加密、解密以及计算hash、MAC。通过该实验的学习,是学生深入了解数据库中数据加密的目的、准则;掌握数据库加密、解密算法以及密钥的产生和存储,hash算法以及MAC。 二、实验内容 Oracle 11g数据库加、解密,hash以及MAC值计算;oracle 中的代码混淆 三、实验原理、方法和手段 1.数据库加密、解密(保证机密性)。 利用oracle 11g 中PL/SQL 包DBMS_CRYPTO 进行数据的加、解密。 利用这两个函数dbms_crypto.Encrypt和dbms_crypto.Decrypt ●Data Encryption Standard (DES), Triple DES (3DES, 2-key) ●Advanced Encryption Standard (AES)(128、192、256) 2.hash 和MAC 值的计算(保证完整性) 利用oracle 11g 中PL/SQL 包DBMS_CRYPTO 进行。 采用DBMS_CRYPTO.Hash和 DBMS_CRYPTO.Mac进行。 ●SHA-1 Cryptographic Hash ●SHA-1 Message Authentication Code (MAC)(Usage of SHA-1 is more secure than MD5)

3.oracle中代码混淆 参见oracle官方文档《PL/SQL User's Guide and Reference》,利用wrap utility对代码进行混淆。 四、实验组织运行要求 根据本实验的特点,采用以学生自主训练为主的开放模式组织教学。 五、实验条件 硬件:CPU:2.4G 内存:1G 硬盘:80G 软件:Windows 2003、WinXP、Win7 及以上操作系统 ,Oracle 11g数据库 六、实验步骤 1.请写一段PL/SQL代码实现在oracle中加密自己的学号,并将密文输出。请使用DBMS_CRYPTO 中:ENCRYPT_AES192、CHAIN_ECB 和PAD_PKCS5,并使用RANDOMBYTES函数产生密钥。

实用的系统配置实用程序(Msconfig)使用比360好用多了

系统配置实用程序(Msconfig)使用 初学者在使用电脑过程中,肯定会碰到各种各样的问题:如怎么管理电脑的自启动程序、如何查看加载的系统服务、怎样从安装光盘提取丢失的系统文件等。为了解决类似问题,微软在系统中提供了一个实用工具——系统配置实用程序(Msconfig)。 以系统管理员身份登录系统后,单击“开始→运行”输入“Msconfig”回车后即可启动系统配置实用程序(图1)。下面笔者就结合几个应用实例来详细介绍Msconfig的使用(以WinXP为例)。 “一般”选项不一般 1.选择启动方式 默认情况下,Windows采用的是正常启动模式(即加载所有驱动和系统服务),但是有时候由于设备驱动程序遭到破坏或服务故障,常常会导致启动出现一些问题,这时可以利用Msconfig的其它启动模式来解决问题。单击“一般”选项,在“启动模式”选择“诊断启动”(图2),这种启动模式有助于我们快速找到启动故障原因。此外,还可以选择“有选择的启动模式”,按提示勾选需要启动项目的即可。

小提示:诊断启动是指系统启动时仅加载基本设备驱动程序如显卡驱动,而不加载Modem、网卡等设备,服务也仅是系统必须的一些服务。这时系统是最干净的,如果启动没有问题,可以依次加载设备和服务来判断问题出在哪里。 2.从安装光盘提取丢失系统文件 虽然WinXP具备强大的文件保护功能,不过有时候由于安装/卸载软件或误操作,还是经常会造成系统文件的丢失。一般重要的系统文件,在系统安装光盘CAB文件中都可以找到。单击上图的“展开文件”,然后在弹出窗口中依次输入要还原的文件(填入丢失文件名)、还原自(单击“浏览自”,选择安装光盘的CAB压缩文件)、保存文件到(选择保存文件路径,WinXP/2000一般为c:windowssystem32,Win98则为c:windowssystem),最后单击“展开”(图3),系统会自动解压CAB文件,将系统文件从安装光盘提取到电脑。 小知识: 可以先用系统的SFC命令来扫描系统文件的改动,找出变化的系统文件,命令格式:SFC [/SCANNOW] [/SCANONCE]

工程图配置文件.dtl常用选项及使用详解.doc

工程图配置文件*.dtl常用选项及使用详解 工程图配置文件是出工程图所必需了解掌握的知识。我写过一篇关于系统配置文件config.pro的教程,里面提到过配置文件对于使用PROE非常重要。 config.pro的使用,请先看这个帖https://www.wendangku.net/doc/52653527.html,/thread-9138-1-1.html 不可否认的是,论坛工程图版的求助帖超过一半与工程图配置文件设置有关。可见工程图配置文件的重要性。工程图配置文件*.dtl使用上比系统配置文件config.pro要简单一些。所以本帖先将一些常用选项列出,供大家参考。配置文件使用方面的内容放在后面讲解。 本帖为原创,严禁转载! 请勿综合成PDF或WORD等格式打包下载,谢谢合作! 本帖不设回复可见,方便大家都可以见到 本帖所讲述的内容目录如下: 一、工程图配置文件常用选项及说明 二、工程图配置文件使用详解 1、创建工程图配置文件*.dtl 2、工程图配置文件选项的查找 3、工程图配置文件的选项设置与修改 4、工程图配置文件的正确调用 一、工程图配置文件常用选项及说明 drawing_units mm(前面为选项,空格后为值,下同) 此项设置所有绘图参数的单位,比如后面的文字大小、箭头大小等选项,是以mm为单位的, 先要设置这个选项。 drawing_text_height 3.5 设置缺省文本的缺省高度,如注释中的文字,标注中的数值大小。 text_width_factor 0.7 设置文本的高度和宽度的比例,按国标应使用长仿宋体,应为0.7。 但此项设置对于windows系统自带的仿宋体无效。 broken_view_offset 3 设置破断视图两破断线之间的距离

相关文档
相关文档 最新文档