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

访客5年前关于黑客接单1173
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]黑客接单网

相关文章

TA505在最新攻击活动中使用HTML, RAT和其他技术-黑客接单平台

TA505以运用歹意垃圾邮件和不同的歹意软件来进犯金融安排和零售企业而臭名远扬。研究人员在曩昔2个月检测到与TA505相关的进犯活动。在该安排的最近活动中,运用了HTML附件来传达歹意XLS文件,XL...

代码审计之Fiyo CMS事例共享

Fiyo CMS是小型的商务电话服务及移动协作东西,由一名前职业学校学生初次开发和创立的,后者其时在RPL的SMK 10三宝垄学习。 那时他的姓名不是Fiyo CMS,而是Sirion,它是Site...

Anomali团队捕获了一个针对中国政府部门的网站钓鱼攻击行动-黑客接单平台

Anomali要挟研讨小组最近发现了一个网络垂钓网站假充中华人民共和国外交部电子邮件服务的登录页面。假如访问者测验登录这个垂钓页面,网站就会向他们弹出一条验证音讯,要求用户封闭窗口并持续阅读。研讨人员...

探究根据.NET下完成一句话木马之Asmx篇

0×01 前语 上篇介绍了一般处理程序(ashx)的作业原理以及完成一句话木马的进程,今日接着介绍Web Service程序(asmx)下的作业原理和怎么完成一句话木马,当然介绍之前笔者找到了一款as...

议题解读《我的Web使用安全含糊测验之路》

我的Web运用安全含糊测验之路 什么是Web运用中的含糊测验? Web运用是根据什么进行传输的?HTTP协议。 含糊测验是什么?Payload随机。 Payload放哪里?HTTP恳求报文格局是什么?...

MySQL联合注入之绕过安全狗到GetShell

发现网上公开过安全狗的办法少之又少,并且根本都是给个大约点就完毕,本文章是将整个进程记录了一遍,因为一开始我也没想到我能成功的绕过去,大约进程是这样:Mysql根底有必要要有–>定位—>f...