精华内容
下载资源
问答
  • 1 抗反编译检查。 a. 在链接器命令中是否启用 /NXCOMPAT 选项。数据执行保护 (DEP)。 b. 在链接器命令中是否启用 /DYNAMICBASE 选项。使用地址控件布局随机化。 c. 查壳。 建议使用PEiD工具。(百度搜索...

    1 抗反编译等检查。

       a. 在链接器命令中是否启用 /NXCOMPAT 选项。数据执行保护 (DEP)。

       b. 在链接器命令中是否启用 /DYNAMICBASE 选项。使用地址控件布局随机化。

       c. 查壳。

           建议使用PEiD工具。(百度搜索PEiD即可下载)

           点击[拓展信息]可以查看到Not Packed一般代表没有加壳。(“熵值”、“EP校验”、“快速校验”)

       d.反编译。

          推荐工具:

             vs的使用:Reflector

             BCB,Delphi的可以用:DeDeDark

     

    2 配置文件,本地文件查看是否加密。或者是否可以随意篡改。

       至于使用什么工具,目前没啥推荐,可以使用沙箱。

     

    3 密码方面。(可考虑应用层和底层)

       a.钩子方面

       工具1: anti keylogger

       工具2: Actmon

       b.密码的复杂性,是否可以查看到密码。

       工具1: Fiddler(抓包工具)

       工具2: MemoryEngine(内存读取工具)

     

    4 防截屏。

       键盘:ALT+PrtSc或PrtSc。

       其他强截图工具:

       snagit,国外著名的截图软件,链接为:http://www.skycn.com/soft/2290.html 

       EPSnap 强力抓屏工具,链接为: http://www.skycn.com/soft/28188.html

           

    5 通讯。

       a https的支持,SSL协议是否能支持最高版本SSL3.0。   

       b 重放攻击(使用同一个内容,是否可以不断发送)。

     

    6  查毒。

       a http://www.virscan.org/

       b https://www.virustotal.com/

       

    转载于:https://www.cnblogs.com/SKeyC27/p/4864990.html

    展开全文
  • 1、下载lua5.1.4,解压后,新建空项目,修改成静态库lib ,在C++代码生成选项卡中设置运行库为多线程DLL (/MD) ,然后把安全检查设置为禁用安全检查 (/GS-) 把lua5.1.4src目录下的除了lua.c luac.c的所有文件添加到...

    tolua++ 是用来把 C++代码 生成 在Lua中使用的接口的工具,编译步骤比较繁琐。

    1、下载lua5.1.4,解压后,新建空项目,修改成静态库lib ,在C++ 代码生成选项卡 中设置 运行库 为 多线程 DLL (/MD) ,然后把安全检查 设置为 禁用安全检查 (/GS-)

    把lua5.1.4  src目录下的 除了 lua.c luac.c 的所有文件添加到项目中,编译。

    编译成功后获得 lua5.1.4.lib 。

    2、下载 tolua++ ,解压后,新建空项目,其它设置和上面一样,添加 tolua++ 文件夹中的 src/lib/ 里面的所有代码到项目中,编译成静态库。

    编译成功后获得 tolua++.lib

    到 tolua++ 文件夹中的 win32/vc7 中,打开 toluaapp.sln ,设置好 lua 头文件目录,把lua5.1.4.lib 添加到链接库 ,添加 tolua++ 目录的include 目录到头文件目录,把 tolua++.lib 添加到链接库,编译。

    编译成功后,在tolua++目录的bin 中获得 tolua++.exe

    3、编写Student 类来作为测试

    Student.h

    #pragma once
     
    #include<iostream>
    using namespace std;
     
    class Student
    {
    public:
    	Student();
    	~Student();
     
    	void Run();
     
    	void Run(int a);
    };
     
    

    Student.cpp

    #include "Student.h"
     
     
    Student::Student()
    {
    }
     
    void Student::Run()
    {
    	cout << "Student Run" << endl;
    }
     
    void Student::Run(int a)
    {
    	cout << "Student Run" <<a<< endl;
    }
     
    Student::~Student()
    {
    }
    

     

    为Student 类创建 pkg文件

    Student.pkg

    
    $#include"Student.h"
     
    class Student
    {
    public:
    	Student();
    	~Student();
     
    	void Run();
    	void Run @ Run2(int a);
    };
    

    把tolua++.exe 到 Student 的类文件目录,右键命令行

    "tolua++.exe" -o lua_Student.cpp Student.pkg
    

    生成成功获得 lua_Student.cpp


    4、创建测试项目在lua 脚本中使用 Student 类

    创建空项目,项目中设置好 lua5.1.4 和 tolua++ 的头文件目录 ,以及引用 lua5.1.4.lib 和 tolua++.lib 。

    然后把 Student 类 和生成的 lua_Student.cpp 添加到项目中。

    main.cpp 
     

    #include <stdio.h>  
    #include<windows.h>  
     
    extern "C"
    {
    	#include "lua.h"  
    	#include "lualib.h"  
    	#include "lauxlib.h"  
    	#include "luaconf.h"  
    }
    #include "tolua++.h"
    #include"Student.h"
     
    extern int tolua_Student_open(lua_State* tolua_S);
     
    int main(int argc, char* argv[])
    {
    	lua_State* L = luaL_newstate();
    	luaL_openlibs(L);
     
    	tolua_Student_open(L);
     
    	luaL_dofile(L, "./test.lua");
    	lua_close(L);
     
    	system("pause");
    	return 0;
    }
    

    lua脚本文件 test.lua

    studentB=Student:new() --实例化Student全局对象
     
    function Run()
    	studentB:Run();
    end
     
    function Run2(a)
    	studentB:Run2(a);
    end
     
    function show()  
    	local b = {}  
    	local index  
    	  
    	for index = 1,10,1 do  
    		print(index)  
    	end  
    end  
      
    show()  
     
    Run()
     
    Run2(10)
    

    项目打包下载 包括工具及测试例子代码 CSDN下载:

    https://download.csdn.net/download/u012278016/11811595

     

     

    展开全文
  • FreeBSD的软件包管理工具pkg主要是用来安装预编译好的二进制文件,速度快,但不能定制编译选项。适用于不需要定制编译参数,要求快速安装好软件包的场景。 1. 查看pkg帮助 pkg help pkg help install pkg help &...

    FreeBSD的软件包管理工具pkg主要是用来安装预编译好的二进制文件,速度快,但不能定制编译选项。适用于不需要定制编译参数,要求快速安装好软件包的场景。

    1. 查看pkg帮助

    pkg help
    pkg help install
    pkg help <command>

    2. 在安装新软件之前,建议对所有已安装的软件做个安全检查,看看是否有已知的漏洞。

    pkg audit -F #检查所有已安装的软件是否有已知的漏洞
    pkg audit axel #查看axel软件包是否有漏洞

    3. 查找软件包

    请参考https://blog.csdn.net/richardfjf/article/details/107242694

    4. 查看软件包信息

    1)查看本地已经安装了哪些软件包

    pkg info

    2)查看某个软件包的信息

    pkg info axel #查看axel软件包安装信息

    3)查看安装的软件包包含哪些文件

    pkg info -l axel

    也可以使用pkg list,它是一个pkg指令别名,定义在/usr/local/etc/pkg.conf文件中

    pkg list axel #相当于pkg info -ql axel, -q表示quiet

    4)查看软件包的port来源

    pkg info -o axel #查看axel的port来源
    

    或者使用pkg指令别名pkg origin

    pkg origin axel相当于pkg info -qo axel

    5)查看软件包大小

    pkg info -s axel #查看axel的软件包大小 
    pkg size axel #指令别名,相当于pkg info -qs axel

    5. 安装软件包

    pkg install pkgname #会自动安装依赖包

    6. 卸载软件包

    方法1:

    pkg delete pkgname 
    pkg remove pkgname #这也是执行的pkg delete命令
    #此方法同样可以卸载ports安装的软件包

    方法2:

    cd /usr/ports/sysutils/lsof
    make deinstall
    #此方法同样可以卸载pkg安装的软件包

    7. 自动删除不再使用的软件包

    pkg autoremove #自动侦测并移除leaf port包,这些包是因为安装了有依赖关系的软件包而留下的。
    pkg set -A 1 devel/cmake #将一个安装好的leaf软件包标记成"自动",这样能被pkg autoremove挑选出来
    pkg set -A 0 devel/cmake #标记一个安装好的软件包为"非自动"
    #pkg set可以修改已安装软件包的信息

    8. 升级软件包

    pkg upgrade #将已安装的软件包升级到最新版本
    pkg update #更新pkg源目录
    pkg update -f #-f代表强制更新整个pkg源目录

    9. 查看本地软件包和远程软件仓库的统计信息

    pkg stats

    10. 下载软件包但不安装

    有的时候,只想下载软件包,不需要安装。

    pkg fetch pkgname
    ls /var/cache/pkg/ |grep pkgname

    下载的软件包会放在/var/cache/pkg/目录下。

    11. 清空本地pkg缓存旧软件包

    pkg clean
    pkg clean -ay #清空全部缓存中旧软件包

    这将清空/var/cache/pkg/目录下所有文件。

    12. 锁定软件包

    有的时候,不希望软件包被卸载或者修改。

    pkg lock axel  #锁定axel软件包
    pkg unlock axel #解锁axel软件包

    13. 列出系统默认定义的所有pkg指令别名

    pkg alias

    为了使用方便,FreeBSD默认设置了一些pkg指令别名,定义在/usr/local/etc/pkg.conf文件中,以下是两个已定义的pkg指令别名

    pkg prime-list  #列出已安装的非依赖软件包(不是因为依赖关系而自动安装的软件包)
    pkg prime-origins #列出上述非依赖软件包,同时列出来源port目录

     

    展开全文
  • Swift 4中的安全编码

    2020-06-18 09:07:07
    从最小化指针使用到编译时的强类型检查,Swift是用于安全开发的出色语言。 但这意味着完全忘记安全性是很诱人的。 仍然存在漏洞,Swift也诱使尚未了解安全性的新开发人员。 本教程是一个安全的编码指南,将解决...

    从最小化指针使用到编译时的强类型检查,Swift是用于安全开发的出色语言。 但这意味着完全忘记安全性是很诱人的。 仍然存在漏洞,Swift也诱使尚未了解安全性的新开发人员。

    本教程是一个安全的编码指南,将解决Swift 4中的更改以及Xcode 9中可用的新工具选项,这些选项将帮助您缓解安全漏洞。

    指针和溢出

    许多安全漏洞都与C及其指针的使用有关。 这是因为指针使您可以访问原始内存位置,从而更容易读取和写入错误的区域。 这是攻击者恶意更改程序的一种主要方法。

    Swift大多不再使用指针,但仍然允许您与C进行接口。许多API(包括Apple的整个Core Foundation API)完全基于C,因此将指针的用法引入Swift很容易。

    幸运的是,Apple适当地命名了指针类型: UnsafePointer<T>UnsafeRawPointer<T>UnsafeBufferPointer<T>UnsafeRawBufferPointer 有时,您所连接的API会返回这些类型,并且使用它们时的主要规则是不存储或返回指针供以后使用 例如:

    let myString = "Hello World!"
    var unsafePointer  : UnsafePointer<CChar>? = nil
    myString.withCString { myStringPointer in
        unsafePointer = myStringPointer
    }
    //sometime later...
    print(unsafePointer?.pointee)

    因为我们在闭包之外访问了指针,所以我们不确定指针是否仍指向预期的内存内容。 在此示例中,使用指针的安全方法是将其与print语句一起保留在闭包中。

    指向字符串和数组的指针也没有边界检查。 这意味着在数组上使用不安全的指针很容易,但是意外地超出了数组的边界访问- 缓冲区溢出

    var numbers = [1, 2, 3, 4, 5]
    numbers.withUnsafeMutableBufferPointer { buffer in
                
        //ok
        buffer[0] = 5
        print(buffer[0])
                    
        //bad
        buffer[5] = 0
        print(buffer[5])
    }

    好消息是,Swift 4尝试使应用程序崩溃,而不是继续进行所谓的未定义行为 我们不知道buffer[5]指向什么! 但是,Swift无法解决所有问题。 在以下代码之后设置一个断点,并查看变量ac 它们将设置为999

    func getAddress(pointer:UnsafeMutablePointer<Int>) -> UnsafeMutablePointer<Int>
    {
        return pointer
    }
    var a = 111
    var b = 222
    var c = 333
    let pointer : UnsafeMutablePointer<Int> = getAddress(pointer: &b)
    pointer.successor().initialize(to: 999)
    pointer.predecessor().initialize(to: 999)

    这说明了堆栈溢出,因为在没有显式分配的情况下,变量通常存储在堆栈中。

    在下一个示例中,我们分配的容量仅为单个Int8 分配存储在堆上,因此下一行将使堆溢出 在这个例子中,唯一的Xcode警告您与该控制台的说明gets不安全。

    let buffer = UnsafeMutablePointer<Int8>.allocate(capacity:1)
    gets(buffer)

    那么,避免溢出的最佳方法是什么? 与C进行接口对输入进行边界检查以确保其在范围内时,这非常重要。

    您可能会认为很难记住并找到所有不同的案例。 因此,为了帮助您,Xcode附带了一个非常有用的工具,称为Address Sanitizer。

    在Xcode 9中对Address Sanitizer进行了改进。它是一种工具,可以帮助您捕获无效的内存访问,例如我们刚刚看到的示例。 如果要使用Unsafe*类型,则最好使用Address Sanitizer工具。 默认情况下未启用它,因此要启用它,请转到产品>方案>编辑方案>诊断 ,然后检查Address Sanitizer 在Xcode 9中有一个新的子选项, return之后检测堆栈的使用 此新选项从我们的第一个示例中检测范围后使用和返回后使用漏洞。

    有时会忽略整数溢出 这是因为整数溢出仅在用作缓冲区的索引或大小时,或者溢出的意外值更改了关键安全代码的流程时,才是安全漏洞。 Swift 4在编译时会捕获最明显的整数溢出,例如,当数字明显大于整数的最大值时。

    例如,以下内容将不会编译。

    var someInteger : CInt = 2147483647
    someInteger += 1

    但是很多时候数字会在运行时动态到达,例如当用户在UITextField输入信息时。 Undefined Behavior Sanitizer是Xcode 9中的新工具,它可以检测有符号整数溢出和其他类型不匹配的错误。 要启用它,请转到“ 产品”>“方案”>“编辑方案”>“诊断” ,然后打开“ Undefined Behavior Sanitizer” 然后在Build Settings> Undefined Behavior Sanitizer中 ,将Enable Extra Integer Checks设置为Yes

    关于未定义的行为,还有另一件事值得一提。 即使纯Swift隐藏指针,缓冲区的引用和副本仍然在后台使用,因此有可能遇到您未曾期望的行为。 例如,当您开始遍历集合索引时,索引可能会在迭代过程中被您意外修改。

    var numbers = [1, 2, 3]
    for number in numbers
    {
        print(number)
        numbers = [4, 5, 6] //<- accident ???
    }
            
    for number in numbers
    {
        print(number)
    }

    在这里,我们只是使numbers数组指向循环内的新数组。 number指向什么呢? 通常将其称为悬挂引用,但在这种情况下,Swift会在循环持续时间内隐式创建对数组缓冲区副本的引用。 这意味着print语句实际上将打印出1、2和3而不是1、4、5...。这很好! Swift可以使您从不确定的行为或应用程序崩溃中解救出来,尽管您可能也不希望得到该输出。 您的同级开发人员不会期望您的集合在枚举过程中发生变异,因此通常,在枚举过程中要格外小心,不要更改集合。

    因此,Swift 4在编译时具有出色的安全性强制措施,可以捕获这些安全漏洞。 在许多情况下,直到运行时与用户进行交互,该漏洞才存在。 Swift还包括动态检查,它也可以在运行时捕获许多问题,但是跨线程执行的代价太高了,因此不对多线程代码执行。 动态检查将捕获很多但不是全部违规,因此,首先编写安全代码仍然很重要!

    到了这一点,让我们转到另一个非常常见的漏洞领域—代码注入攻击。

    注入和格式化字符串攻击

    当您在应用程序中将输入字符串作为您不希望使用的命令进行解析时,就会发生格式字符串攻击。 尽管纯Swift字符串不容易受到格式字符串的攻击,但是Objective-C NSString和Core Foundation CFString类却可以从Swift获得。 这两个类都具有诸如stringWithFormat类的方法。

    假设用户可以从UITextField输入任意文本。

    let inputString = "String from a textfield %@ %d %p %ld %@ %@" as NSString

    如果直接处理格式字符串,这可能是一个安全漏洞。

    let textFieldString = NSString.init(format: inputString) //bad
    let textFieldString = NSString.init(format: "%@", inputString) //good

    Swift 4尝试通过返回0或NULL来处理丢失的格式字符串参数,但是尤其需要关注的是,该字符串是否将被传递回Objective-C运行时。

    NSLog(textFieldString); //bad
    NSLog("%@", textFieldString); //good

    虽然大多数情况下,错误的方式只会导致崩溃,但攻击者可以精心制作格式字符串,将数据写入堆栈中的特定内存位置,以更改应用程序的行为(例如更改isAuthenticated变量)。

    另一个重要原因是NSPredicate ,它可以接受用于指定从Core Data检索什么数据的格式字符串。 LIKECONTAINS这样的子句允许使用通配符,应避免使用它们,或至少将其仅用于搜索。 这样做的目的是避免枚举帐户,例如,在攻击者输入“ a *”作为帐户名的情况下。 如果将LIKE子句更改为== ,则意味着字符串必须字面上匹配“ a *”。

    其他常见的攻击是通过用单引号字符尽早终止输入字符串来进行的,因此可以输入其他命令。 例如,可以通过输入') OR 1=1 OR (password LIKE '*输入到UITextField ') OR 1=1 OR (password LIKE '*来绕过登录。该行翻译为“密码与任何东西都一样”,这完全绕过了身份验证。解决方案是完全转义通过在代码中添加自己的双引号进行任何注入尝试,这样,来自用户的任何其他引号都将被视为输入字符串的一部分,而不是特殊的终止字符:

    let query = NSPredicate.init(format: "password == \"%@\"", name)

    防范这些攻击的另一种方法是简单地搜索并排除您知道在字符串中可能有害的特定字符。 示例包括引号,甚至点和斜杠。 例如,当输入直接传递到FileManager类时,可能会进行目录遍历攻击 在此示例中,用户输入“ ../”以查看路径的父目录,而不是预期的子目录。

    let userControllerString = "../" as NSString
    let sourcePath = NSString.init(format: "%@/%@", Bundle.main.resourcePath! , userControllerString)
    NSLog("%@", sourcePath)
            
    //Instead of Build/Products/Debug/Swift4.app/Contents/Resources, it will be Build/Products/Debug/Swift4.app/Contents
    let filemanager:FileManager = FileManager()
    let files = filemanager.enumerator(atPath: sourcePath as String)
    while let file = files?.nextObject()
    {
        print(file)
    }

    如果该字符串用作C字符串,则其他特殊字符可能包括NULL终止字节。 指向C字符串的指针需要一个NULL终止字节。 因此,可以简单地通过引入NULL字节来操作字符串。 如果存在诸如needs_auth=1类的标志,或者默认情况下打开访问并显式关闭访问(例如is_subscriber=0 ,则攻击者可能希望尽早终止字符串。

    let userInputString = "username=Ralph\0" as NSString
    let commandString = NSString.init(format: "subscribe_user:%@&needs_authorization=1", userInputString)
    NSLog("%s", commandString.utf8String!)
    // prints subscribe_user:username=Ralph instead of subscribe_user:username=Ralph&needs_authorization=1

    解析HTML,XML和JSON字符串也需要特别注意。 使用它们的最安全方法是使用Foundation的本机库,该库为每个节点提供对象,例如NSXMLParser类。 Swift 4向外部格式(例如JSON)引入了类型安全的序列化。 但是,如果您正在使用自定义系统读取XML或HTML,请确保不能使用用户输入中的特殊字符来指示解释程序。

    • <必须成为&lt
    • >应该替换为&gt
    • &应该成为&amp
    • 在属性值内部,任何'需要分别变为&quot&apos

    这是删除或替换特定字符的快速方法的示例:

    var myString = "string to sanitize;"
    myString = myString.replacingOccurrences(of: ";", with: "")

    URL处理器内部是注入攻击的最后一个方面。 检查以确保没有在自定义URL处理程序openURLdidReceiveRemoteNotification直接使用用户输入。 验证URL是否正是您所期望的,并且不允许用户随意输入信息来操纵您的逻辑。 例如,与其让用户选择t=es84jg5urw索引导航到堆栈中的哪个屏幕, t=es84jg5urw如只允许使用不透明标识符(例如t=es84jg5urw特定屏幕。

    如果您在应用程序中使用WKWebView ,那么最好检查一下也会在其中加载的URL。 您可以覆盖decidePolicyFor navigationAction ,它使您可以选择是否要继续URL请求。

    一些已知的webview技巧包括加载开发人员不希望的自定义​​URL方案,例如app-id:启动完全不同的app或sms:发送文本。 请注意,嵌入式Web视图不会显示带有URL地址或SSL状态的栏(锁定图标),因此用户无法确定连接是否受信任。

    例如,如果Web视图为全屏,则URL可能会被劫持,其网页外观类似于您的登录屏幕,只是将凭据定向到恶意域。 过去的其他攻击包括跨站点脚本攻击,这些攻击已泄漏Cookie甚至整个文件系统。

    防止所有上述攻击的最佳方法是花时间使用本机UI控件设计界面,而不是简单地在应用程序中显示基于Web的版本。

    到目前为止,我们一直在研究相对简单的攻击。 但是,让我们以运行时可能发生的更高级的攻击结束。

    运行时黑客

    就像Swift在与C交互时变得更容易受到攻击一样,与Objective-C的接口也为表带来了单独的漏洞。

    我们已经看到了NSString和格式字符串攻击的问题。 另一点是,Objective-C作为一种语言更具动态性,可以传递松散的类型和方法。 如果您的Swift类是从NSObject继承的,那么它将对Objective-C运行时攻击开放。

    最常见的漏洞涉及将重要的安全方法动态交换为另一种方法。 例如,如果用户通过了验证,则返回的方法可以替换为几乎总是返回true的另一个方法,例如isRetinaDisplay 尽量减少使用Objective-C,可使您的应用更强大地抵抗此类攻击。

    在Swift 4中,如果从Objective-C类继承的类上的方法或这些类本身被@attribute标记,则这些方法仅在Objective-C运行时公开。 即使使用@objc属性,也经常会调用Swift函数。 当该方法具有@objc属性但从未从Objective-C实际调用时,可能会发生这种情况。

    换句话说,Swift 4引入了更少的@objc推断,因此与以前的版本相比,这限制了攻击面。 尽管如此,为了支持运行时功能,基于Objective-C的二进制文件需要保留许多无法剥离的类信息。 例如,对于逆向工程师来说,这足以重建类接口以找出要修补的安全性部分。

    在Swift中,二进制文件中公开的信息较少,并且函数名称被修饰。 但是,可以通过Xcode工具swift-demangle取消撤消操作。 实际上,Swift函数具有一致的命名方案 ,指示每个函数是否为Swift函数,类的一部分,模块名称和长度,类名称和长度,方法名称和长度,属性,参数以及返回类型。

    这些名称在Swift 4中更短。如果您担心逆向工程,请通过转到“ 构建设置”>“部署”>“剥离Swift符号”并将选项设置为“ 是” ,确保应用程序的发行版本剥离符号

    除了混淆关键安全代码之外,您还可以要求将其内联。 这意味着在代码中调用该函数的任何位置,该代码都将在该位置重复,而不是仅存在于二进制文件的一个位置。

    这样,如果攻击者设法绕过特定的安全检查,则不会影响位于代码其他位置的该检查的任何其他出现。 每张支票必须打补丁或钩住,这使得成功执行破解变得更加困难。 您可以像这样内联代码:

    @inline(__always) func myFunction() 
    {
        //...
    }

    结论

    考虑安全性应该是发展的重要组成部分。 仅仅期望语言安全是可以导致本来可以避免的漏洞。 Swift在iOS开发中很流行,但可用于macOS桌面应用程序,tvOS,watchOS和Linux(因此,您可以将它用于服务器端组件,这些组件可能更容易执行代码)。 应用程序沙箱可能被破坏,例如在越狱设备允许未签名的代码运行的情况下,因此在调试时仍然要考虑安全性并注意Xcode通知,这一点很重要。

    最后一个技巧是将编译器警告视为错误。 您可以通过转到“ 构建设置”并将“ 将警告视为错误 设置为“ 来强制Xcode执行此操作。 迁移到Xcode 9以获得改进的警告时,请不要忘记现代化项目设置,最后但并非最不重要的一点是,立即采用Swift 4来利用可用的新功能!

    无论您是刚刚开始使用基础知识还是想探索更高级的主题,我们都构建了完整的指南来帮助您学习Swift

    翻译自: https://code.tutsplus.com/tutorials/secure-coding-in-swift-4--cms-29835

    展开全文
  • JAVA编译器

    2020-11-02 09:31:55
    编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数),然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成中间代码即字节码,字节码文件名和源...
  • 都默认选择(不要勾选安全开发生命周期,SDL检查,这会提高代码的安全级别,编译不易通过),创建桌面应用程序后默认会生成一个有内容的cpp文件:WindowsProject1.cpp,一般能运行,也可以用下面的helloworld程序: ...
  • fwupd 该项目旨在使Linux上的固件更新自动,安全和可靠。... 如果您的设备具有fwupd支持的固件,则可以通过fwupd的命令行工具检查更新并应用更新。 # fwupdmgr get-devices 这将显示fwupd检测到的所有设备。
  • 编译工具 安全工具 静态代码分析工具 搜索工具 Debug调试工具 Api测试工具 Eclipse/Android Studio/IDEA插件 Eclipse Android Studio/IDEA Android资源/Themes/Style生成工具 Android资源分析工具 Android Layout ...
  • MySQL 5.1参考手册

    2018-10-15 11:12:46
    5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制,...
  • 深入浅出MySQL数据库开发、优化与管理维护

    千次下载 热门讨论 2014-01-21 15:48:01
     28.3 其他安全设置选项   28.3.1 old-passwords   28.3.2 safe-user-create   28.3.3 secure-auth   28.3.4 skip-grant-tables   28.3.5 skip-network   28.3.6 skip-show-database   28.4 ...
  • 本书还有一个网站,上面有本书额外的第12章“查询执行”、本书的所有代码及其他工具和脚本。  本书由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造,是一本关于sql server工作原理的权威参考指南,...
  • 10.8.1 检查选项组菜单窗体的组成 297 10.8.2 ManipulatingControlsExample窗体 298 10.8.3 查看窗体后面的代码 299 10.9 小 结 304 第11章 创建强大的报表 305 11.1 对汇总、细节以及综合这二者的报表...
  • 本书还有一个网站,上面有本书额外的第12章“查询执行”、本书的所有代码及其他工具和脚本。  本书由知识丰富的资深专家和数位具有多年产品使用经验的讲师联手打造,是一本关于sql server工作原理的权威参考指南,...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 目目 目 录 ... 比尔.... 2000 年 6 月 ...
  • 修改集成开发环境,自动记忆非独立编译时是否写出依赖文件的选项。 6. 大幅提高编译速度。 对其它支持库的更新: 1. 修改高级表格支持库,在双击单元格进入编辑状态后,不能收到第一个“字符输入”事件的BUG。 ...
  • 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1...
  • C#微软培训资料

    2014-01-22 14:10:17
    <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...
  • 对于VIVO设备,如果在开发者选项中包含“USB安全操作”,需要手动进行开启,否则录制回放与一机多控功能可能会无法正常操作 对于小米设备,需要开启开发者选项中的USB安装与USB调试(安全设置),否则录制回放与一机...
  • MYSQL中文手册

    2013-03-11 21:21:34
    5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制...
  • 本次更新编译日期:2013-3-1 发布日期:2013-3-3 本次更新内容: 1.允许编辑工具 2.可以创建VHD启动项 3.重置功能\r4.自动修复功能 5.首次启动询问备份 6.增加了两个选项 7.修复了备份错误的BUG 8.核心编辑...
  • 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL安全问题 5.7. MySQL访问权限系统 5.7.1. 权限系统的作用 5.7.2. 权限系统工作原理 5.7.3. MySQL提供的权限 5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1...
  • 2.2.1 使用命令行工具adrci 51 2.2.2 Support Workbench 59 2.3 数据库健康检查 64 2.3.1 检查、故障和修复 65 2.3.2 Health Monitor检查的类型 65 2.3.3 手动检查 66 2.4 Data Recovery Advisor 71 2.4.1 ...
  • 23.8.3 安全检查程序的问题 23.8.4 系统泄密衙怎么办 23.9 加限制的环境 23.9.1 加限制的外壳 23.9.2 用chroot()限制用户 23.10 小系统安全 23.11 物理安全 23.12 用户意识 23.13 系统管理员意识 23.13.1 保持系统...
  • 2.3.17 检查自己所属的工作组名称 13 2.3.18 改变文件或目录工作组所有权 13 2.3.19 改变文件或目录的最后修改时间 13 2.3.20 文件的链接 13 2.3.21 文件中字符串的查寻 14 2.3.22 查寻文件或命令的路径 14 2.3.23 ...
  • MYSQL网络数据库PDF学习资源

    热门讨论 2009-08-09 19:56:31
    6.1.2 编译和连接客户机程序 153 6.2 客户机程序1—连接到服务器 154 6.3 客户机程序2—增加错误检查 156 6.4 客户机程序3—产生连接代码模块 158 6.5 客户机程序4—在运行时获取连接参 数 163 6.5.1 访问选项文件...
  • ---选属性隐藏和只读----确定—选中考试—选中KS1.txt右键---选删除---单击“工具”菜单----文件夹选项----“查看”选项卡----选“显示所有文件”---确定---搜索----command.com----右键command.com----创建快捷图标...
  • 酷炫的爆栈网源码.zip

    2019-07-16 08:10:33
    爆栈 系统开发技术栈、Web前端开发技术栈、数据库技术栈、.NET技术栈!...  本地化 ... 编译工具 调试 基础工具 质量控制 包管理 测试 库 / 框架 ...
  • PDCurses:具有源代码和预编译库的公共域curses库。 replxx:支持UTF-8、语法高亮、提示的readline和libedit替换,可在Unix和Windows上工作。 tabulate:现代C++的表格制作工具。 TCLAP:用于在ANSI C++中定义和...
  • 精通ANDROID 3(中文版)1/2

    热门讨论 2012-08-31 14:17:45
    10.2 执行运行时安全检查  10.2.1 进程边界上的安全性  10.2.2 声明和使用权限  10.2.3 理解和使用自定义权限  10.2.4 理解和使用URI权限  10.3 参考资料  10.4 小结  第11章 构建和使用服务  ...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
热门标签
关键字:

安全编译选项检查工具