TryAgain

Ghidra逆向工具入门与应用

核能气质少年 提交于 2020-09-30 02:46:19
逆向工程中涉及到多种多样的工具(例如IDA Pro,Angr等),熟练使用这些工具可以化繁为简,使得程序分析工作得以顺利开展。本文介绍众多逆向工具中的一种——Ghidra,它是由美国国家安全局(NSA,National Security Agency)的研究理事会为 NSA 的网络安全任务开发的软件逆向工程(SRE)框架,它有助于分析恶意代码和病毒等恶意软件,并可以让网络安全专业人员更好地了解其网络和系统中的潜在漏洞。Ghidra跟IDA Pro用起来很像,但Ghidra是免费的,而且是开源的! Ghidra支持多种操作系统,例如Windows, Linux,或者MacOS。本文中的示例主要在Windows下完成(其他平台上也是类似的,因为本文不是一蹴而就的,后面某些截图是在Ubuntu上做的,但这没有多大影响)。你可以从【1】中下载Ghidra,它是一个压缩包,解压到你指定的目录后,即可开始使用了。 注意:Ghidra的运行需要有Java环境作为支持,所以请确保电脑上已经正确安装并配置好了JRE和JDK 。 现在打开Windows的命令行程序,切换到Ghidra的安装目录,并输入ghidraRun,程序就被启动了,如下图所示: 开始使用Ghidra 在File菜单中选择新建一个项目(如下图所示),然后在弹出的对话框中选择“Non-Shared Project”,并按【Next>>

BUUCTF--SimpleRev

旧街凉风 提交于 2020-08-20 05:06:47
测试文件: https://buuoj.cn/files/7458c5c0ce999ac491df13cf7a7ed9f1/SimpleRev?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoyNDN9.XXnIgg.L-8ifBkOTka-7o-QXZDkKNm77x4 1.准备 获取信息 64位文件 2.IDA打开 将main函数反编译为C代码 1 int __cdecl __noreturn main( int argc, const char **argv, const char ** envp) 2 { 3 int v3; // eax 4 char v4; // [rsp+Fh] [rbp-1h] 5 6 while ( 1 ) 7 { 8 while ( 1 ) 9 { 10 printf( " Welcome to CTF game!\nPlease input d/D to start or input q/Q to quit this program: " , argv, envp); 11 v4 = getchar(); 12 if ( v4 != ' d ' && v4 != ' D ' ) 13 break ; 14 Decry(); 15 } 16 if ( v4 == ' q '

websocket 初步认识

﹥>﹥吖頭↗ 提交于 2020-08-17 18:32:46
什么是websocket WebSocket是web浏览器和服务器之间的一种全双工通信协议,其中WebSocket协议由IETF定位标准,WebSocket API由W3C定位标准。一旦Web客户端与服务器建立起连接,之后的全部数据通信都通过这个连接进行。通信过程中,支持发送JSON、XML、HTML或图片等任意格式的数据。 WS(WebSocket)与HTTP协议相比 相同点主要有: 都是基于TCP的应用层协议; 都使用Request/Response模型进行连接的建立; 在连接的建立过程中对错误的处理方式相关,在这阶段WS可能返回和HTTP相同的返回码 都可以在网络中传输数据 不同之处在于: WS使用HTTP来建立连接,但是定义了一系列新的header域,这些域在HTTP中并不会使用; WS的连接不能通过中间人来转发,它必须是一个直接连接——那网关如何转发?分别建立 client-网关、网关-upstream的连接? WS连接建立之后,通信双方都可以在任何时刻向另一方发送数据; WS连接建立之后,数据的传输使用帧来传递,不再需要Request消息 WS的数据帧有序 主要特点 推送功能:服务器可以直接向客户端推送消息。 减少通信量:只要第一次建立连接,就可以一直进行通信,不像HTTP协议,需要频繁的建立请求,一问一答的模式。此外,WebSocket的头部数据也比较少。 握手协议

exec函数族

不羁岁月 提交于 2020-08-17 11:04:07
exec函数族 fork()函数创建子进程后,子进程往往要调用一种e x e c函数以执行另一个程序。当进程调用一种exec函数时,该进程完全由新程序代换,而新程序则从其 ma i n函数开始执行。 因为调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用另一个新程序替换了当前进程的正文、数据、堆和栈段。 有六种不同的e x e c函数可供使用,它们常常被统称为exec函数。 #include<unistd.h> int execl( const char *pathname, const char * arg0,... /* (char*)0 */ ); int execv( const char *pathname, char * const argv[]); int execle( const char *pathname, const char * arg0,... /* (char*)0,char *const envp[] */ ); int execve( const char *pathname, char * const argv[], char * const envp[]); int execlp( const char *filename, const char * arg0,... /* (char*)0 */ ); int execvp

jenkins添加git源失败

感情迁移 提交于 2020-08-17 04:10:29
Failed to connect to repository : Command "git ls-remote -h git@192.168.91.11:test/dzp.git HEAD" returned status code 128: stdout: stderr: Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 1.卸载自带的git,因为版本太低 本地服务器版本: [root@vm_001034_op-test git-2.0.5]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@vm_001034_op-test git-2.0.5]# 笔者从网上找了很多资料,最终参考几份资料才安装成功的。 原因很简单

Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 问题分析

二次信任 提交于 2020-08-15 21:54:07
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again Loaded plugins: fastestmirror One of the configured repositories failed (Unknown), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. 2. Reconfigure the baseurl/etc. for the repository, to point to a working upstream. This is most often useful if you are using a newer distribution release than is supported by the repository (and the

[安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断 (6)

梦想与她 提交于 2020-08-11 08:25:41
前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱。这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希望对您有所帮助。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了, 从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵! 接下来我将开启新的安全系列,叫“安全攻防进阶篇”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~ 推荐前文: 网络安全自学篇系列-100篇 话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者目的是与安全人共同进步,也强烈推荐大家去看看钱老师的视频,加油~ 文章目录 一.OllyDbg基础用法 二.CrackMe01 1.题目描述 2.逆向分析 3.原理分享及序列号提取 三.CrackMe02 1

C++(标准库):50---并发之(条件变量:condition_variable、condition_variable_any)

泄露秘密 提交于 2020-08-09 20:35:27
一、Condition Variable(条件变量)的意图 在前文的文章中(详情见“八”: https://blog.csdn.net/qq_41453285/article/details/105602105 ), 我们有一个演示案例,让某线程等待另一线程,其使用的办法是使用ready flag的方法 。代码如下: bool readyFlag; std::mutex readyFlagMutex; void thread1() { //做一些thread2需要的准备工作 //... std::lock_guard<std::mutex> lg(readyFlagMutex); readyFlag = true; } void thread2() { //等待readyFlag变为true { std::unique_lock<std::mutex> ul(readyFlagMutex); //如果readyFlag仍未false,说明thread1还没有锁定,那么持续等待 while (!readyFlag) { ul.unlock(); std::this_thread::yield(); std:this_thread::sleep_for(std::chrono::milliseconds(100)); ul.lock(); } }//释放lock /

[安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断 (6)

余生长醉 提交于 2020-08-08 03:58:13
前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱。这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希望对您有所帮助。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了, 从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵! 接下来我将开启新的安全系列,叫“安全攻防进阶篇”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~ 推荐前文: 网络安全自学篇系列-100篇 话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者目的是与安全人共同进步,也强烈推荐大家去看看钱老师的视频,加油~ 文章目录 一.OllyDbg基础用法 二.CrackMe01 1.题目描述 2.逆向分析 3.原理分享及序列号提取 三.CrackMe02 1

BUUCTF--SimpleRev

不羁岁月 提交于 2020-08-06 21:10:54
测试文件: https://buuoj.cn/files/7458c5c0ce999ac491df13cf7a7ed9f1/SimpleRev?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoyNDN9.XXnIgg.L-8ifBkOTka-7o-QXZDkKNm77x4 1.准备 获取信息 64位文件 2.IDA打开 将main函数反编译为C代码 1 int __cdecl __noreturn main( int argc, const char **argv, const char ** envp) 2 { 3 int v3; // eax 4 char v4; // [rsp+Fh] [rbp-1h] 5 6 while ( 1 ) 7 { 8 while ( 1 ) 9 { 10 printf( " Welcome to CTF game!\nPlease input d/D to start or input q/Q to quit this program: " , argv, envp); 11 v4 = getchar(); 12 if ( v4 != ' d ' && v4 != ' D ' ) 13 break ; 14 Decry(); 15 } 16 if ( v4 == ' q '