代码混淆

SmartAssembly批处理用法

孤者浪人 提交于 2020-01-08 19:17:43
SmartAssembly 7 documentation: https://documentation.red-gate.com/sa SmartAssembly7.2版本下载链接: https://www.red-gate.com/products/dotnet-development/smartassembly/ 混淆设置 以下是主要的几个混淆设置: 混淆名称 Obfuscating code with name mangling 设置后会修改类名、方法名、字段名 注:不会混淆DLL中的公开访问成员,因为会使得DLL不可使用 混淆流程 Obfuscating your application's control flow 开启后,会更改方法内的代码逻辑,使反编译后阅读更加困难 动态代理方法调用 Creating a proxy for external calls 会将方法的调用转到动态代理,隐藏程序集外部调用。反编译之后,方法调用实现都不可见,理解代码更难了 压缩加密资源 Compressing and encrypting managed resources 压缩代码中使用的资源使代码更有效率,加密代码中使用的资源使代码更难理解。 注:当首先需要每个资源时,资源会在运行时自动解压和解密。 一般来说,有混淆名称、混淆流程就已经够了。动态代理方法调用

.Net 程序代码混淆加密工具 ILProtector

馋奶兔 提交于 2020-01-08 16:44:30
我的项目中某一部分信息比较敏感,但是.Net程序反编译之后连注释都看得到。需要把exe保护起来,如:代码混淆之后再加壳。 Bing到一款.Net混淆工具 ILProtector 作为资深工具党,先"拿来主义"体验体验。本篇主要介绍工具使用 1.加密前的exe,反编译之后什么都有 2.用ILProtector加密,参考官网介绍 http://www.vgrsoft.net/Products/ILProtector 原理是把.Net的中间语言MSIL代码 转换成特殊的代码,只有他自己可以识别,其他工具如 IL DASM, .NET Reflector, ILSpy, dotPeek 不能够识别出来,因此达到防逆向目的。 支持 .NET Framework 2.0, 3.0, 3.5, 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2 支持 Windows x32/x64 使用也比较简单,直接拖程序到 Assemblies中, 这里会生成两个DLL到文件夹中,至于dll的名字无所谓写什么,后面可以使用工具合并成一个exe EnableIntegr 设置为True,启动的时候回检测程序是否被人修改,如果别人修改了就不能用了。 EncryptStrings 设置为True,否则你的String类型的常量不会被加密

android studio...混淆打包全揭秘

感情迁移 提交于 2020-01-01 12:56:26
  前言,当前android studio使用的版本较新,低版本的如果有差异,或者问题,欢迎拍砖! 1、修改配置文件 找到配置文件, build.gradle,修改如下。 1 signingConfigs { 2 release { 3 // 下面各值的意思将在后续进行讲解 4 storeFile file('release.keystore') 5 storePassword "123456" 6 keyAlias "androiddebugkey" 7 keyPassword "123456" 8 } 9 debug { 10 storeFile file('release.keystore') 11 storePassword "123456" 12 keyAlias "androiddebugkey" 13 keyPassword "123456" 14 } 15 } 16 17 buildTypes { 18 release { 19 minifyEnabled true // 设置代码进行混淆 20 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 21 signingConfig signingConfigs.release // 签名配置 22 }

PESpin加密壳分析

三世轮回 提交于 2019-12-31 01:37:30
转载自 https://www.cnblogs.com/KIDofot/p/8641385.html KIDofot 大神 手工脱壳之 PESpin加密壳【SHE链硬件反调试】【IAT重定向】【混淆+花指令】 阅读目录(Content) 一、工具及壳介绍 二、脱壳之寻找OEP 1、硬件断点失效 2、采用API断点+单步跟踪 3、确定目标 3.1、API Address 3.2、Put EXE IAT 3.3、IAT加密 3.4、IAT重定向 3.5、IAT重定向解决方案: 3.6、OEP 3.7、记录分支 四、快速定位OEP 五、 SEH异常链反调试 六、OD脚本及修复 七、脱壳成功 八、混淆花指令 回到顶部 一、工具及壳介绍 使用工具:Ollydbg,PEID,ImportREC,LoadPE,IDA,Universal Import Fixer,OllySubScript 此篇是加密壳的第二篇,更详细的步骤和思考,请查看第一篇:手工脱壳之 未知加密壳 【IAT加密+混淆+花指令】 PESpin壳: 回到顶部 二、脱壳之寻找OEP 1、硬件断点失效 尝试ESP定律,但硬件断点未断下。 (原因其实是壳做了反调试,后面部分介绍) 2、采用API断点+单步跟踪 API下断: 壳导入了LoadLibrary 和 GetProAddress,可以从API下手。 按照经验来说,跟踪GDI32

如何阻止java反编译

非 Y 不嫁゛ 提交于 2019-12-29 12:06:32
常用的保护技术 由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。 1. 隔离Java程序   最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。这种保护方式见图1所示。 图1隔离Java程序示意图    2. 对Class文件进行加密   为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。   在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因

Gradle混淆+打包Jar包基础

丶灬走出姿态 提交于 2019-12-29 09:49:58
本文为原创文章,转载请注明 出处 。 文章最后会附带源码下载地址,有需要的朋友可下载。 通常我们编写Android APP时有这样的需求:(1)代码混淆;(2)模块化;(3)向第三方提供JAR包。下面将以实例的形式向初学Android或开始使用AndroidStudio(AS)的朋友介绍下这几部分。 引述: (1)AS采用了Gradle的构建工具,可以让我们很方便的对我们的APP进行配置,比如版本、支持最低API level 、代码混淆文件、第三方库等等,具体语法请查考其他朋友的文章。 (2)AS提供了模块编程,便于我们对APP进行分层和理清架构,个人推荐初学者可以参考下这篇 文章 。 实例正文: 本文实例仅作为演示使用,重点是演示代码混淆和打包JAR,所以功能都进行了简化并省略了很多逻辑代码。 基本需求:接受用户的登录请求,模拟完成向服务端发起登录请求,并提示登录结果。 一、创建项目 项目目录结构: 个人习惯将各模块创建为平级,模块(android library)描述: app:用户模块,用户交互界面、用户资源等 model:实体模块 player:核心业务模块 utils:辅助类模块。 提示:创建模块时注意模块类型为Android Library,否则会对后面的一些功能会有影响。 二、代码编写 (1)model模块 用户登录信息实体: 1 package xiaoshubao

自动化打包资源混淆集成python实践----打包

泪湿孤枕 提交于 2019-12-26 09:30:33
1、自动化打包方案  1)友盟多渠道多渠道打包 2)gradle productFlavors系统的条件编译 3)美团打包 4)APK文件注释写入渠道号 2、各打包方案简介 1)友盟多渠道多渠道打包(window 绿色版,gradle版本 现在过时) 原理:拆包分解apk,修改AndroidManifest.xml二进制文件后,再重新打包 耗时:较短(多渠道打包时,避免了多次dex过程,aapt过程) 渠道号保存方式:保存在AndroidManifest.xml 文 件 meta 数据中 不足:较难保证AndroidManifest.xml二进制修改正确,可能会出现兼容性问题;多渠道apk 命名不能预定,需要额外处理重命名apk文件。 2).gradle productFlavors系统的条件编译    原理: 每个渠道包,都走完整个打包(appt、混淆、dex,签名)流程 耗时:长(跟渠道包量成正比) 渠道号保存方式:保存在AndroidManifest.xml 文 件 meta 数据中 3)美团方案 原理:在APK文件的META-INF目里增加渠道文件 耗时:快(多个渠道包,只有一次完整打包流程) 渠道号保存方式:mtchannel_yybcpd文件名中 4)APK文件注释写入渠道号 原理:Android 使用的apk包的压缩方式是zip,与zip有相同的文件结构,正确写入

以变制变——前端动态化代码保护方案探索

强颜欢笑 提交于 2019-12-26 03:45:17
欢迎大家前往 腾讯云+社区 ,获取更多腾讯海量技术实践干货哦~ 本文分享了腾讯防水墙团队关于机器对抗的动态化思路,希望能抛砖引玉,给现在正在做人机对抗的团队一些启发,帮助更多中小型公司的业务摆脱机器和爬虫之痛。 0x00 前言 浏览器作为当今互联网的一大流量入口,正在变得越来越强大。为了有更好的Web体验,各类新的标准被制定并实施。PWA的出现,更是把移动端H5的体验推向了另一个极致。越来越多业务使用H5作为主要入口的同时,也带来了另一个问题:机器行为泛滥。只要有利益的地方就会有恶意,登录注册、投票领券等页面很容易成为机器刷量的重灾区,如今写一个普通刷投票脚本的难度基本就跟写一个“Hello World!”的难度差不多。在与机器对抗的历程中,Web前端一直是非常薄弱的一环。浏览器毫无保留地把所有前端代码拉取到本地并执行、所有前端代码均透明可见,拿什么拯救前端代码安全? 0x01 名词解释 代码安全 本文中所提及的代码安全,是指前端JavaScript代码的安全。通常,如果一段JavaScript代码只能在正常的浏览器中运行,无法或尚未在非正常浏览器的运行环境执行得到结果、无法被等价翻译成其他编程语言的代码,则认为这段代码是安全的。 一段重要的JavaScript逻辑被置于其他环境以高于正常浏览器几个数量级的效率运行并得到正确的结果,对于服务端及后面的业务来说,几乎是一个灾难。

webpack代码混淆

不问归期 提交于 2019-12-18 07:43:09
作者:桑榆 QQ:934440653 有问题,评论留言,或qq联系 安装 npm install -- save - dev webpack - obfuscator 属性 { compact : true , //压缩,无换行 controlFlowFlattening : false , //是否启用控制流扁平化(降低1.5倍的运行速度) controlFlowFlatteningThreshold : 0.75 , //应用概率;在较大的代码库中,建议降低此值,因为大量的控制流转换可能会增加代码的大小并降低代码的速度。 deadCodeInjection : false , //随机的死代码块(增加了混淆代码的大小) deadCodeInjectionThreshold : 0.4 , //死代码块的影响概率 debugProtection : false , //此选项几乎不可能使用开发者工具的控制台选项卡 debugProtectionInterval : false , //如果选中,则会在“控制台”选项卡上使用间隔强制调试模式,从而更难使用“开发人员工具”的其他功能。 disableConsoleOutput : false , //通过用空函数替换它们来禁用console.log,console.info,console.error和console.warn

AndroidStudio 混淆打包

北慕城南 提交于 2019-12-17 19:52:54
AndroidStudio中的项目可以用compile的形式引入github上的开 源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式。在最终realease打包时,混淆的设置是比较重要的,否则会导致 生成的包有很多功能不能正常使用。下面列举一个基本的app的build.gradle和混淆文件。并注意,混淆打包后的apk文件大小会比不使用混淆要 小。 在app根目录下设置build.gradle和混淆文件,然后把混淆选项写入混淆文件就可以。虽然app项目中可能引用了一些module,但这些module工程可以不定义自己的混淆,我的工程目录结构如下: 其中app是应用主模块,引用剩余的module,被引用module的build.gradle中都使用默认的设置不启用混淆: buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 在主目录的build.gradle: apply plugin: 'com.android.application' def releaseTime() { return new Date().format("yyyy-MM-dd"