一.gcc编译选项-fstack-protector和-fstack-protector-all 正是我在前面猜测的错误原因,牛人Stack Guard 就想出了保护栈信息的方式,在ebp和ip等信息的地址下面放一个保护数
欢迎使用 Sugo 保护工具 (Sugo Protector)。本工具致力于为您的二进制文件提供专业级的安全保护,涵盖代码混淆、虚拟化、压缩及反调试等多种技术手段。 以下是详细的操作流程:第一步:登录与账号激活启动 Sugo Protector 客户端。(参考截图 1)登录账号:在弹出的登录窗口中输入您的手机号和密码,点击 “登录”。 查看授权:在授权列表中,您可以看到当前拥有的产品授权(如“Sugo Protector免费试用”)、授权码及剩余天数。绑定设备:如果是新设备,状态栏会显示“可绑定”。 第四步:配置保护选项Sugo Protector 提供了“保护选项”和“函数保护”两个维度的配置。1.
概述本报告旨在对比未经保护的原始代码与经过 Sugo 保护工具 (Sugo Protector) 处理后的受保护代码,从源代码逻辑、汇编指令结构、反编译可读性以及文件结构等多个维度进行分析。 结论先行: Sugo Protector 成功通过控制流平坦化、指令级混淆、虚假控制流、防反编译(Anti-Decompilation)等技术,将原本清晰的逻辑彻底转化为不可读、不可逆的混乱状态,极大提升了逆向工程的门槛 综合评估总结根据以上截图分析,Sugo Protector 展现了高强度防护能力:多层级防御体系: 从源码级(.NET IL 混淆)到汇编级(x64/ARM64 指令变异)再到文件级(APK 结构),形成了立体防护
PDF Protector是一个易于使用的工具来加密或解密您的PDF文档。设置一个密码,让PDF保护加密您的文件,以阻止他人打开它。 因为PDF Protector还允许您删除这些安全机制中的任何一个,提供您知道的密码。 PDF Protector for Mac图片PDF Protector for Mac软件功能•支持Adobe标准40位加密和Adobe高级128位加密。•密码保护文档的打开。
在软件商业化的进程中,程序的“安全防护”与“商业授权”始终是驱动业务增长的双引擎。
important;">
, string plaintext) { if (protector == null) throw new ArgumentNullException(nameof (protector)); if (plaintext == null) throw new ArgumentNullException(nameof (plaintext ) { if (protector == null) throw new ArgumentNullException(nameof (protector)); return protector limitedDataProtector : (ITimeLimitedDataProtector) new TimeLimitedDataProtector(protector); } 该方法能够将 (); var protector2 = provider2.CreateProtector(Purpose); rawContent = protector2.Unprotect(content
; 堆栈保护 指的是 栈溢出保护 , Canary 值 ; 执行 readelf -sW example.so 命令 , 可以查询动态库是否启用了 堆栈保护 ; 二、gcc 编译选项 -fstack-protector -fstack-protector 是 gcc 编译器 的 增强 堆栈保护的 选项 , 该选项可以增强程序的安全性 , 特别是对抗堆栈缓冲区溢出攻击 ; " 堆栈保护 " 选项 -fstack-protector 参数 在交叉编译动态库时 , 设置 -fstack-protector 参数 ; 这样编译出来的动态库 利用堆栈缓冲区溢出 的难度会增加 ; 2、Android.mk 配置 在 Android.mk 脚本中配置 LOCAL_CFLAGS := -Wall -O2 -U_FORTIFY_SOURCE -fstack-protector-all 参数 , -Wall : 开启所有警告 ; -O2 : 使用优化级别 2 , 进行代码优化 ; -U_FORTIFY_SOURCE : 取消 _FORTIFY_SOURCE 的定义 , 这是用于增强安全性的宏定义 ; -fstack-protector-all : 启用所有
解决方案# 由上图可看出,没有经过加密的.pyc文件可以很轻易的通过Easy Python Decompiler v1.3.2工具反编译出源码 ,深思对.pyc保护的方式是通过DS Protector工具进行保护 DS Protector是北京深思数盾自主研发的程序数据保护工具 ,它弥补了加壳VirboxProtector的功能, Virbox Protector是对程序编译后的二进制代码行保护,配合DS Protector 通过 Virbox Protector先对解析文件的python.exe进行加密,加密时打开 DS Protector 插件功能,然后通过DS Protector对pyc文件进行加密,并使用壳生成的配置将后文件进行加密后的 解决方案# python脚本打包的可执行文件,可以直接使用 Virbox Protector 对exe 程序进行加壳保护,加壳软件中内置了虚拟机、碎片代码执行混淆等多种安全技术,能有效阻止 exe 程序被反编译
-fno-stack-protector 参数可以禁用堆栈保护机制,这样可以减少杀软对程序的误报。 -fvisibility=hidden 参数可以隐藏编译出的符号表,这也可以使反汇编变得更困难。 试试后面的4个: g++ scl.cpp -o scl.exe -mconsole -fno-stack-protector 还是1个报毒。 g++ scl.cpp -o scl.exe -mconsole -fno-stack-protector -fvisibility=hidden 还是1个报毒。 g++ scl.cpp -o scl.exe -mconsole -fno-stack-protector -fvisibility=hidden -Wl,--dynamicbase 还是1个报毒。 使用g++编译时 -s 参数会导致报毒增多(6/71), -fno-stack-protector -fvisibility=hidden -Wl,--dynamicbase -Wl,--nxcompat
/-fstack-protector-all HAVE_LIBSSP=1 echo "#include <iostream> int main () { return 0; } " | =1 echo "" | "$USE_CC" -E "-fstack-protector-strong" - >/dev/null 2>&1 || HAVE_FSTACK_PROTECTOR_STRONG --copt -fstack-protector-strong --host_copt -fstack-protector-strong --linkopt -fstack-protector-strong --host_linkopt -fstack-protector-strong" else BAZEL_LINUX_GCC_OPTIONS="$BAZEL_LINUX_GCC_OPTIONS --copt -fstack-protector-all --host_copt -fstack-protector-all --linkopt -fstack-protector-all --host_linkopt
在编译的Android.mk文件中添加: LOCAL_CFLAGS := -Wall -O2 -U_FORTIFY_SOURCE -fstack-protector- all 如果是cmake编译,在CMakeLists.txt 文件中添加: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all") 关键字段就是:-fstack-protector-all 它还有其他属性可以设置 参数 作用 -fstack-protector 对alloca系列函数和内部缓冲区大于八个字节的函数启用保护 -fstack-protector-strong 增加对包含局部数组定义和地址引用的函数保护 -fstack-protector-all 对所有函数启用保护 -fstack-protecto-explicit 对包含stack protect属性的函数启用保护 -fno-stack-protector 2.在ijkplayer/android/contrib/tools/do-compile-ffmpeg.sh 脚本中添加设置:-U_FORTIFY_SOURCE -fstack-protector-all
Virbox Protector 发布最新版本 Net加壳工具:Virbox Protector 2 . Virbox Protector 为.NET Framework编写的软件做代码保护,防止代码被反编译,防止 IL 代码在内存被 Dump。同时可配合授权产品实现软件的许可管理。 加密技术 Virbox Protector .NET版通过多种保护方式来防止反编译,加密后可让任何现有工具都无法反编译。 服务,控件和类库,通用Windows程序集 Web ASP.NET应用程序和库,ASP.NET服务 其他 .NET Core和.NET标准程序集,Mono应用程序和库,Unity程序集 Virbox Protector 直接将项目拖入加密工具,快速解析,无需对编译环境做任何修改,三分钟内完成保护,顺滑体验 不影响程序性能 加密后不影响程序或者游戏的性能,让加密安全和游戏性能不再冲突 支持 .NET Core Virbox Protector
gcc在4.2版本中添加了-fstack-protector和-fstack-protector-all编译参数以支持栈保护功能,4.9新增了-fstack-protector-strong编译参数让保护的范围更广 因此在编译时可以控制是否开启栈保护以及程度,例如: $ gcc -fno-stack-protector -o test test.c #禁用栈保护 $ gcc -fstack-protector - o test test.c #启用堆栈保护,不过只为局部变量中含有char数组的函数插入保护代码 $ gcc -fstack-protector-all -o test test.c #启用堆栈保护,
public class ProtectionConverter : JsonConverter { private readonly ITimeLimitedDataProtector _protector string val = reader.GetString(); if (string.IsNullOrEmpty(val)) return 0; return long.Parse(_protector.Unprotect = 0) { var nowDate = DateTime.Now; str = _protector.Protect(value.ToString public class ProtectionConverter : JsonConverter //{ // private readonly ITimeLimitedDataProtector _protector JsonSerializer serializer) // { // var nowDate = DateTime.Now; // writer.WriteValue(_protector.Protect
fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong
不同环境的通用流程 1.用Virbox Protector对解释器(php-cgi.exe或httpd.exe)加密 2.用DSProtector对php加密 3.用加密后的解释器(php-cgi.exe 服务,即可运行程序 phpstudy2018环境 1.加密php-cgi.exe 确认环境的php使用版本,打开对应的php环境目录下php-cgi.exe,将php-cgi.exe拖入到Virbox Protector 找到php环境目录下php-cgi.exe,将php-cgi.exe拖入到Virbox Protector中,设置加密选项,ds按钮打开,设置密码。 1.找到apache文件夹下的httpd.exe,加密httpd.exe 将httpd.exe拖入到Virbox Protector中,加密选项处【ds】按钮打开,设置密码,然后点击【保护选中项目】,
fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong extension x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong
Guid.NewGuid().ToString(); var dataProtectionProvider = CreateEphemeralDataProtectionProvider(); var protector = dataProtectionProvider.CreateProtector("foobar"); var protectedPayload = protector.Protect(originalPayload ); protector = dataProtectionProvider.CreateProtector("foobar"); Debug.Assert(originalPayload == protector.Unprotect (protectedPayload)); protector = CreateEphemeralDataProtectionProvider().CreateProtector("foobar"); protector.Unprotect(protectedPayload); static IDataProtectionProvider CreateEphemeralDataProtectionProvider
本文是对http://antoinealb.net/programming/2016/06/01/stack-smashing-protector-on-microcontrollers.html的意译 三、开启GCC栈溢出保护 在编译选项中增加-fstack-protector-all、-fstack-protector-strong、-fstack-protector中的任何一个即可开启GCC的栈溢出保护 ,三个选项的差异可以参考https://mudongliang.github.io/2016/05/24/stack-protector.html. 四、参考资料 https://mudongliang.github.io/2016/05/24/stack-protector.html https://www.ibm.com/developerworks /cn/linux/l-cn-gccstack/index.html http://antoinealb.net/programming/2016/06/01/stack-smashing-protector-on-microcontrollers.html