减少Rust开发的闭源项目中的调试信息-黑客接单平台

访客6年前关于黑客接单1191
Rust是一门体系编程言语,专心于安全,尤其是并发安全,支撑函数式和指令式以及泛型等编程范式的多范式言语。Rust在语法上和C++类似,可是设计者想要在确保功用的一起供给更好的内存安全。 由于Rust有几千行代码,所以我无论怎么都不能自称是Rust专家,但这并不阻碍我对Rust的了解。我十分喜爱Rust的语法,与其他许多言语比较,Rust的详细语法和C,C++类似,都是由花括号限制代码块,还有相同的操控流关键字,例如if,else,while,和for。可是也并非一切的C或许C++关键字被完成了。某些Rust函数(比方关键字match用于形式匹配)关于那些通晓这些言语的人就没那么了解了。尽管与C/C++极端类似,Rust在深层语法上跟元言语宗族的言语像是Haskell更挨近。根本上一个函数体的每个部分都是表达式,乃至是操控流操作符。 大约两个月前,我开端开发一个指令行项目,需求一个像样的规范库。终究成果有必要是一个本地的、静态链接的可履行文件。实际上,我有C / C ++,Rust或Go几种挑选。关于C++来说,STL是不或许的,由于我以为它很糟糕,并且短少许多必需的功用。Qt是一个美丽的C++库,我本来想运用它,可是静态链接需求一个商业Qt答应。最重要的是,在多个操作体系上进行编译需求在每个操作体系上重建静态Qt库,因而需求进行许多额定的作业。 但除此之外,还有一个事实是这个项目开发起来很无聊,我想让它变得风趣。所以当我简略地比较了一下Go和Rust时,就不再考虑它了。出于简化的意图,Go短少了其他言语中存在的许多重要结构。尽管Go的简洁性令人耳目一新并且有其魅力,但我仍是觉得杂乱的Rust包括许多重要的功用。 需求阐明的是,我不喜爱不必要的杂乱性,这便是为什么我没有运用C ++中的大多数新功用。我的意思,功用有必要要完全,可是运用进程要简略。 Rust为自己设定了许多方针,其间一些方针很杂乱,没有垃圾收集器。Rust不像Go,Java以及.NET Framework那样运用主动垃圾收回体系,不同的是Rust经过RAII来办理内存和资源,还可选引证计数。 说了这么多,Rust在许多方面还不是一种老练的言语,不能用于任何像C / C ++这样的项目。别的,它的库没有Go的那么丰厚,在我看来,它的一些规范库的确十分古怪,编译也或许十分慢。 尽管Rust是一种牢靠且安全的言语,运用起来很风趣。但能够确认地说,我现在还没有看到过Rust的详细用例。相反,我能够看到Go的许多用例,而不是Rust的用例。 以下是以我创立的一个样本: fn foo() { panic!("this is an error"); } fn main() { println!("Hello, world!"); foo(); } 它会打印出来许多元数据: Hello, world! thread 'main' panicked at 'this is an error', srcmain.rs:2:2 note: Run with 'RUST_BACKTRACE=1' environment variable to display a backtrace. 假如将RUST_BACKTRACE设置为1,状况会更糟: Hello, world! thread 'main' panicked at 'this is an error', srcmain.rs:2:2 stack backtrace: 0: std::sys_common::backtrace::print at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdsys_commonbacktrace.rs:58 1: std::panicking::default_hook::{{closure}} at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdpanicking.rs:200 2: std::panicking::default_hook at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdpanicking.rs:215 3: std::panicking::rust_panic_with_hook at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdpanicking.rs:478 4: std::panicking::begin_panic 5: std::panicking::try at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdpanicking.rs:276 6: std::panic::catch_unwind at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdpanic.rs:388 7: std::rt::lang_start_internal at /rustc/2aa4c46cfdd726e97360c2734835aa3515e8c858/srclibstdrt.r s:48 8: main 9: BaseThreadInitThunk 10: RtlInitializeExceptionChain 11: RtlInitializeExceptionChain 我在GitHub的这个线程中发现了这些与闭源项目相关的隐私问题,可是我没有找到任何现成的解决方案。 因而,清楚明了的仅有解决方案是修正Rust编译器,这正是我以下要做的。尽管我在Windows上描述了怎么履行此操作,可是与构建进程无关的部分在Unix上也是有用的。 为了防止这种费事,我简要地研讨了Go,以检查在Go二进制文件中能够找到多少元数据。没想到,Go会打印出比Rust更多的元数据。并且它乃至比Rust更糟糕,连修正编译器也会杯水车薪。 值得一提的另一个原因是,至少在Windows上,Go经过CGo调用c代码的功用时,需求运用mingw编译器,这会导致一系列新的问题。 构建Rust编译器的之一步是下载源代码,你能够从Rust官网或GitHub来下载。然后,你需求Visual Studio 2019或更高版别。文档说的是,Visual Studio版别要在2013年或以上,但我发现有的当地却提到了版别要在2019年或以上。不过,我在运用Visual Studio 2013构建时遇到了困难。所以,我仍是主张运用Visual Studio 2019。[1][2][3][4][5]黑客接单网

相关文章

保证你网页的安全

 从技能到安全, 这是一个趋势. 曾经寻求的是比较炫酷的技能, 等完成往后发现, 自己还能做什么. 炫技完了之后,差不多就该到悟道的时分了. 用户安全, 便是一个很大的禅. 苹果回绝 FBI, goo...

2FA双要素认证之Authy

现如今网络环境越来越杂乱,黑客的进犯手法多样化,发作了越来越多的账号暗码走漏事情,然后要挟到用户信息乃至产业安全。在如此杂乱的安全形势下,咱们需求考虑更多的是用户信息的安全问题,而用户的账户暗码作为信...

你的PoC和EXP可能得改改了-黑客接单平台

一、前语 在MySQL 5.7.5之前的所有主版别存在一个BUG,该或许导致影响POC/EXP需求从头编写或批改的问题。 BUG信息链接: https://bugs.mysql.com/bug.ph...

针对非Webapp测验的Burp技巧(二):扫描、重放

在本系列连载的第一节中,笔者谈到了关于burp对非webapp的功用测验。原本我只想写点东西共享出来,并没想到会扯出那么多。现在嘛,我还会持续写下去。 在这一节中,我会讲一讲: Target >...

代码共享:运用Python和Tesseract来辨认图形验证码

 各位在企业中做Web缝隙扫描或许浸透测验的朋友,或许会常常遇到需求对图形验证码进行程序辨认的需求。许多时分验证码分明很简略(关于非互联网企业,或许企业界网中的运用来说特别如此),但由于没有趁手的辨认...

HTTP 的内容安全策略(CSP)

 本文介绍的是W3C的Content Security Policy,简称CSP。望文生义,这个规范与内容安全有关,首要是用来界说页面能够加载哪些资源,削减XSS的发作。 Chrome扩展现已引进了...