cmd.exe 逆向分析

恶意代码分析实战:从Lab5-1看IDA Pro在CTF逆向与实战中的核心技巧 本文通过Lab5-1恶意代码样本,详细解析了IDA Pro在CTF逆向与实战分析中的核心技巧。从关键API追踪、函数结构解析到反虚拟机检测与数据解密,全面展示了如何利用IDA Pro进行高效逆向工程,帮助安全研究人员快速掌握恶意代码分析的关键方法。 阅读详情
1. cmd.exe 是怎样加载其它进程的。
2. 其它进程的命令行参数是怎样被传递的。
分析完毕,有了四个小小的收获,与大家分享。
菜鸟文章,一目了然,高手飘过。

好,现在开始。
1. ollydbg 加载cmd.exe
  后面一个空的控制台窗口已经创建了。这说明windows 发现cmd.exe 是一个控制台程序。
  就提前为它准备好了一个控制台窗口。
2. f9 运行。
  控制台窗口出现如下提示:
  Microsoft Windows XP [Version 5.1.2600]
  (C) Copyright 1985-2001 Microsoft Corp.
  
  C:/WINDOWS/system32>  
   正等待我们输入命令。
   
3. f12 中断程序运行。我们想看看cmd 会中断在什么地方。
    按ALT-K 查看堆栈。如下:
    调用堆栈:    主线程
地址       堆栈       函数过程 / 参数                       调用来自                      结构
0013FC4C   7C92E3ED   包含ntdll.KiFastSystemCallRet           ntdll.7C92E3EB                0013FC6C
0013FC50   7C9332F8   ntdll.ZwRequestWaitReplyPort          ntdll.7C9332F3                0013FC6C
0013FC70   7C871921   ntdll.CsrClientCallServer             kernel32.7C87191B             0013FC6C
0013FD6C   7C871ABE   ? kernel32.7C871759                   kernel32.7C871AB9             0013FD68
0013FDF8   4AD0BA71   kernel32.ReadConsoleW                 cmd.4AD0BA6B                  0013FDF4
0013FDFC   00000003     hConsole = 00000003
0013FE00   4AD2FAE0     Buffer = cmd.4AD2FAE0
0013FE04   00002000     ToRead = 2000 (8192.)
0013FE08   0013FE84     pRead = 0013FE84
0013FE0C   0013FE34     pReserved = 0013FE34
0013FE60   4AD0BB55   cmd.4AD0B9C4                          cmd.4AD0BB50                  0013FE5C
0013FE8C   4AD021DE   cmd.4AD021EB                          cmd.4AD021D9                  0013FE88
0013FE90   4AD020FA   cmd.4AD021AA                          cmd.4AD020F5                  0013FEA8
0013FEAC   4AD02073   cmd.4AD020B7                          cmd.4AD0206E                  0013FEA8
0013FEBC   4AD02021   cmd.4AD02053                          cmd.4AD0201C                  0013FEB8
0013FECC   4AD01FAC   cmd.4AD01FED                          cmd.4AD01FA7                  0013FEC8
0013FEE0   4AD0BB7E   cmd.4AD01F66                          cmd.4AD0BB79                  0013FEDC
0013FF48   4AD05164   ? cmd.4AD03FF1                        cmd.4AD0515F                  0013FF44
   
  注意用户领空cmd.4ad0ba6b. 
  
4. 在4ad0ba6b 设置断点,CTRL-F2 重新加载程序,F9 执行,程序中断与此处。
注意以下内容:
4AD0BA62   .  50            PUSH EAX                                 ; /pReserved
4AD0BA63   .  53            PUSH EBX                                 ; |pRead
4AD0BA64   .  FF75 10       PUSH DWORD PTR SS:[EBP+10]               ; |ToRead
4AD0BA67   .  56            PUSH ESI                                 ; |Buffer
4AD0BA68   .  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hConsole
4AD0BA6B   .  FF15 9412D04A CALL DWORD PTR DS:[<&KERNEL32.ReadConsol>; /ReadConsoleW
及传来的参数
0013FDFC   00000003  |hConsole = 00000003
0013FE00   4AD2FAE0  |Buffer = cmd.4AD2FAE0
0013FE04   00002000  |ToRead = 2000 (8192.)
0013FE08   0013FE84  |pRead = 0013FE84
0013FE0C   0013FE34  /pReserved = 0013FE34

我们遇到了第一个关键函数,名称为ReadConsoleW. 参数意图很明显,hConsole 为句柄。
Buffer 用来存储我们控制台输入。 ToRead 最多8K 字节(已经足够大了,平时用不了)。
pRead 应为指向实际输入的字符个数。好,验证一下:

5. 按f8 让程序单步运行,在控制台中输入notepad.exe 1.txt <CR>
查buffer 内容,如下:
4AD2FAE0  6E 00 6F 00 74 00 65 00 70 00 61 00 64 00 2E 00  n.o.t.e.p.a.d...
4AD2FAF0  65 00 78 00 65 00 20 00 31 00 2E 00 74 00 78 00  e.x.e. .1...t.x.
4AD2FB00  74 00 0D 00 0A 00 00 00 00 00 00 00 00 00 00 00  t...............
呵,还是双字节形式。
pRead 处内容为。
0013FE08  84 FE 13 00                                      匎.4
再查0013FE84
0013FE84  13 00 00 00                                      ...
看来pRead 还是一个指针的指针。其所指的长度是unicode 字符的长度。并且包含末尾
的回车0d 00, 换行符0a 00.

到这里,也算没有白来,
这是我们的第一个收获,搞清楚了 ReadConsoleW 函数。继续

6. 观堆栈没有什么有意思的东西,按ctrl-f9一路路返回,突然,在下面地址处
4AD0BBB5   .  E8 BB57FFFF   CALL cmd.4AD01375
跳出notepad.exe 程序,并有一个提示框。
  找不到 1.txt
  要创建吗?

7. 在 4AD0BBB5   处按f2 下断点,重新执行程序,被该处断下,按f7 跟进。
呦! 有没有发现,notepad.exe 还活着呢! 而我们的olldby 已经复位,原来的cmd.exe也已经消亡。
这是我们的第二个收获: cmd.exe 一旦启动完进程,该进程就可以独立运行了
它并不会因为父进程cmd.exe 的消亡而消亡。现在让我们关闭这个旧的notepad.exe
言归正转,还是f7 跟进。我们要找cmd 怎样启动的notepad.
这里我们是逆向,并不知道后面要调什么函数,所以F8,配合F7 再配合f2,ctrl-f2,f9,一步步跟将下来。
我们有失败了再重来的机会,这就是我们的胜算,也是crack 的乐趣。
经过无数次回溯,跟进,终于来到了关键的地方。

4AD03080   .  FF15 F812D04A CALL DWORD PTR DS:[<&USER32.GetProcessWi>; [GetProcessWindowStation
4AD03086   .  8985 7CFFFFFF MOV DWORD PTR SS:[EBP-84],EAX
4AD0308C   .  8D4D 98       LEA ECX,DWORD PTR SS:[EBP-68]
4AD0308F   .  51            PUSH ECX                                 ; /pSizeNeeded
4AD03090   .  53            PUSH EBX                                 ; |BufSize => 0
4AD03091   .  53            PUSH EBX                                 ; |Buffer => NULL
4AD03092   .  6A 02         PUSH 2                                   ; |InfoType = UOI_NAME
4AD03094   .  50            PUSH EAX                                 ; |hObject
4AD03095   .  8B35 EC12D04A MOV ESI,DWORD PTR DS:[<&USER32.GetUserOb>; |USER32.GetUserObjectInformationW
4AD0309B   .  FFD6          CALL ESI                                 ; /GetUserObjectInformationW
4AD0309D   .  FF15 1012D04A CALL DWORD PTR DS:[<&KERNEL32.GetCurrent>; [GetCurrentThreadId
4AD030A3   .  50            PUSH EAX                                 ; /ThreadID
4AD030A4   .  FF15 F012D04A CALL DWORD PTR DS:[<&USER32.GetThreadDes>; /GetThreadDesktop
4AD030AA   .  8985 78FFFFFF MOV DWORD PTR SS:[EBP-88],EAX
4AD030B0   .  8D4D 94       LEA ECX,DWORD PTR SS:[EBP-6C]
4AD030B3   .  51            PUSH ECX                                 ; /pSizeNeeded
4AD030B4   .  53            PUSH EBX                                 ; |BufSize => 0
4AD030B5   .  53            PUSH EBX                                 ; |Buffer => NULL
4AD030B6   .  6A 02         PUSH 2                                   ; |InfoType = UOI_NAME
4AD030B8   .  50            PUSH EAX                                 ; |hObject
4AD030B9   .  FFD6          CALL ESI                                 ; /GetUserObjectInformationW
4AD030BB   .  8B45 98       MOV EAX,DWORD PTR SS:[EBP-68]
4AD030BE   .  8B4D 94       MOV ECX,DWORD PTR SS:[EBP-6C]
4AD030C1   .  8D4408 20     LEA EAX,DWORD PTR DS:[EAX+ECX+20]
4AD030C5   .  50            PUSH EAX                                 ; /HeapSize
4AD030C6   .  6A 08         PUSH 8                                   ; |Flags = HEAP_ZERO_MEMORY
4AD030C8   .  FF15 7812D04A CALL DWORD PTR DS:[<&KERNEL32.GetProcess>; |[GetProcessHeap
4AD030CE   .  50            PUSH EAX                                 ; |hHeap
4AD030CF   .  FF15 7412D04A CALL DWORD PTR DS:[<&KERNEL32.HeapAlloc>>; /HeapAlloc
4AD030D5   .  8945 8C       MOV DWORD PTR SS:[EBP-74],EAX
4AD030D8   .  3BC3          CMP EAX,EBX
4AD030DA   .  74 4D         JE SHORT cmd.4AD03129
4AD030DC   .  8BF8          MOV EDI,EAX
4AD030DE   .  8D4D 98       LEA ECX,DWORD PTR SS:[EBP-68]
4AD030E1   .  51            PUSH ECX                                 ; /pSizeNeeded
4AD030E2   .  FF75 98       PUSH DWORD PTR SS:[EBP-68]               ; |BufSize
4AD030E5   .  50            PUSH EAX                                 ; |Buffer
4AD030E6   .  6A 02         PUSH 2                                   ; |InfoType = UOI_NAME
4AD030E8   .  FFB5 7CFFFFFF PUSH DWORD PTR SS:[EBP-84]               ; |hObject
4AD030EE   .  FFD6          CALL ESI                                 ; /GetUserObjectInformationW


感谢ollydbg 给我们这么好的注释,观其含义,取得顶级线程,堆分配,取得用户对象信息。具体含义我也不
清楚,反正是有用也不算特别有用,继续f8走吧!

不远处,我们的关键对象出现: CreateProcessW, 具体如下:
4AD031BD   .  50            PUSH EAX                                 ; /pProcessInfo = 0013FB80
4AD031BE   .  8D85 18FFFFFF LEA EAX,DWORD PTR SS:[EBP-E8]            ; |
4AD031C4   .  50            PUSH EAX                                 ; |pStartupInfo
4AD031C5   .  BE 0044D34A   MOV ESI,cmd.4AD34400                     ; |UNICODE "C:/WINDOWS/system32"
4AD031CA   .  56            PUSH ESI                                 ; |CurrentDir => "C:/WINDOWS/system32"
4AD031CB   .  53            PUSH EBX                                 ; |pEnvironment
4AD031CC   .  53            PUSH EBX                                 ; |CreationFlags
4AD031CD   .  6A 01         PUSH 1                                   ; |InheritHandles = TRUE
4AD031CF   .  53            PUSH EBX                                 ; |pThreadSecurity
4AD031D0   .  53            PUSH EBX                                 ; |pProcessSecurity
4AD031D1   .  FF75 80       PUSH DWORD PTR SS:[EBP-80]               ; |CommandLine
4AD031D4   .  FF75 9C       PUSH DWORD PTR SS:[EBP-64]               ; |ModuleFileName
4AD031D7   .  FF15 1412D04A CALL DWORD PTR DS:[<&KERNEL32.CreateProc>; /CreateProcessW

堆栈内容:
0013FAC8   00158328  |ModuleFileName = "C:/WINDOWS/system32/notepad.exe"
0013FACC   00157328  |CommandLine = "notepad.exe 1.txt"
0013FAD0   00000000  |pProcessSecurity = NULL
0013FAD4   00000000  |pThreadSecurity = NULL
0013FAD8   00000001  |InheritHandles = TRUE
0013FADC   00000000  |CreationFlags = 0
0013FAE0   00000000  |pEnvironment = NULL
0013FAE4   4AD34400  |CurrentDir = "C:/WINDOWS/system32"
0013FAE8   0013FB38  |pStartupInfo = 0013FB38
0013FAEC   0013FB80  /pProcessInfo = 0013FB80

注释的太好了,都不用我解释了。
在4AD031D7处按一下F8, notepad 被立即启动,并给出了一个找不到1.txt 的提示。
这是我们的第三个收获:
cmd.exe 用CreateProcessW 来创建新进程。
还有第四个收获。
notepad.exe 的1.txt 命令行参数不是cmd.exe 解释的,而是传给CreateProcess 来处理。
Python EXE逆向分析实战:从PyInstaller打包文件还原源码 Python字节码是Python源代码编译后的中间表示形式,它包含了程序执行的指令序列。通过理解Python解释器执行字节码的原理,我们可以实现代码的逆向分析与重构。这项技术的核心价值在于解决无源码环境下的调试、遗留系统维护和安全审计等实际问题。在软件逆向工程领域,针对PyInstaller打包的EXE文件进行逆向分析是一个典型应用场景。PyInstaller将Python脚本、依赖库和解释器打包成独立可执行文件,其中关键步骤包括提取PYZ存档中的.pyc字节码文件,并通过反编译工具将其还原为可读的Pyth 阅读详情

相关推荐

Python EXE逆向实战:三步从PyInstaller打包文件还原源码

Python作为一门解释型语言,其代码在执行前会被编译为字节码,这种中间表示形式为代码分析和逆向工程提供了可能。PyInstaller等打包工具将Python解释器、依赖库和字节码文件封装成独立的可执行文件,其核心原理在于将.pyc文件嵌入EXE中。理解这一打包机制对于软件安全分析、代码审计和遗留项目维护具有重要价值。在安全研究、竞品分析和代码恢复等应用场景中,掌握逆向技术能有效打开程序黑盒。本文聚焦于PyInstaller打包的EXE文件,通过解包提取、头部修复和反编译三个核心步骤,详细演示如何从缺少标准

489

逆向分析 工具、加壳、安全防护篇

逆向分析 工具、加壳、安全防护篇

有勇气的牛排博客 1万+

CMD2EXE批处理转EXE工具实战应用详解

CMD2EXE是一款专用于将Windows批处理脚本(.BAT或.CMD文件)封装为可执行程序(.EXE文件)的实用工具。其核心价值不仅在于格式转换,更体现在提升脚本的可用性、隐蔽性与部署便捷性。通过生成独立的二进制可执行文件,开发者可避免源码直接暴露,有效防止非授权修改。在批处理中,变量本质上是字符串替换机制的体现。所有变量都以符号包围进行引用,赋值则使用set命令完成。例如:@echo off上述代码中,定义了一个名为name的局部变量,随后通过%name%

weixin_34162851的博客 837

域名反向解析查看命令

如果自己做邮件服务器,一般的情况下是需要做域名反向解析的,可以让IP提供商帮忙做. 域名反向解析查看命令 查看反向解析是否成功,可用如下命令:nslookup –qt=ptr yourIP,从返回的信息中您可以看到反向解析的结果。 nslookup –qt=ptr yourIP 比如我的域名是diyway.net 我的邮件服务器地址是: mail.kerry.net 邮箱用户名称格...

weixin_34112900的博客 625

TURET-CMD:终极逆向工程工具 - CMD

TURET-CMD 终极逆向工程工具 - CMD 此工具用于批量处理各种逆向工程功能。 此版本包括: -> 一个过程中的汇编/反汇编指令(未完成)。 -> 在内存中读/写。 -> 转储过程。 -> 指针扫描(未完成)。 -> 导入重建器(未完成)。 将来:-> 检测包。 -> 原始入口点查找器。 -> 脚本系统。

PCB线路板的制作工艺流程分享!2021-08-21

Pcb板制作工艺流程:开料-钻孔-沉铜-压膜-曝光-显影-电铜-电锡-退膜-蚀刻-退锡-光学检测-印阻焊油-阻焊曝光、显影-字符-表面处理-成型-电测-终检-抽测-包装。具体如下:1、开料(CUT) 将原始的覆铜板切割成可以用在生产线上制作的板子过程2、钻孔 使PCB板层间产生通孔,以达到连通层间的目的。 3、沉铜 经过钻孔后的线路板在沉铜缸内会发生氧化还原反应,形成铜层对孔进行孔金属化,使原来绝缘的基材表面沉积上铜,达到层间电性相通。 4、压膜 压膜后的PCB板上面压了一层蓝色的干膜, 干膜是一个载体

jdbpcb88的博客 3251

配置DNS服务的正反向解析

/不推荐直接对模板文件进行修改,要是管理的区域多,模板全都用了就没有参考了,所以可以把模板文件拷贝一份,拷贝的新文件名就是刚刚在“vim /etc/named.rfc1912.zones”操作中的“file "openlab.com.zone";第二步:服务端操作,编辑 openlab.com 区域的配置文件,可以选择一个模版修改局部(推荐),也可以全部清空重启写入数据。//rname.invalid.是管理员邮箱,邮箱本来是xxx@openlab.com.,但是’@‘不能用,所以只能用点‘.’。

cycyzh的博客 2102

MagicDraw-需求图

MagicDraw学习笔记

木头征的博客 4138

反向解析

PS: 什么叫反向解析呢。比如你用 xxx@31896.net 这个邮箱给我的邮箱 123@163.com 发了一封信。 163邮件服务器接到这封信会查看这封信的信头文件,这封信的信头文件会显示这封信是由哪个IP地址发出来的。然后根据这个IP地址进行反向解析,如果反 向解析到这个IP所对应的域名是31896.net。那么就接受这封邮件。如果反向解析发现这个IP没有对应到31...

weixin_34409357的博客 349

SAP前台处理:业务伙伴维护(客户主数据和供应商主数据)之基础视图 <BP>

这里主要讲解BP业务伙伴主数据中和财务相关的一些内容,包括基础视图数据,采购视图数据,销售视图数据,公司代码视图数据; S4统一了供应商和客户,从事务代码上:不再使用FD01和FK01进行维护,而使用事务代码BP统一维护;

SAP.David.Gao的博客 3462

audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等

有音素之间的间隙,也有静音和语音本身的间隙,为了对数据从时间上进行相对的校准,语音端点检测技术就应运而生了,因此端点检测技术可以决定这种校准的相对精度,使得同一内容的特征更趋于相同,当然,一般情况下是不可能完全相同的。盲源分离的目的是求得源信号的最佳估计,盲辨识的目的是求得传输通道的。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。呈现出与会者清晰的声音。

u013250861的博客 1035

Windows 命令行cmd.exe简单介绍

Windows命令行的一些简单介绍

search7的博客 4048

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6071

CTF-07逆向 soearyre

【代码】CTF-07逆向 soearyre。

2601_95512532的博客 516

PowerPMAC配置EtherCAT设备

本文详细介绍了在PowerPMAC IDE环境下配置EtherCAT伺服电机的完整流程。主要内容包括:准备工作(连接硬件和获取ESI文件)、通过ESI管理器加载配置文件、网络扫描识别从站设备、变量映射(定义输入输出位置参数)、激活EtherCAT通讯(验证状态字和实际位置)以及相关参数说明。文章还概述了主站配置的8个方面和从站配置的7个选项,重点说明了PDO映射和变量分配机制,为伺服电机的EtherCAT通信配置提供了系统指导。

mahuliang321的博客 980

【异常】Error loading ASGI app. Could not import module ‘main‘

出现或。

奶爸的编程之路,也就一周冷个三天 1857

2025第二届“平航杯”电子数据取证竞赛团队赛-剩余部分(流量分析、exe部分)

2025第二届“平航杯"电子数据取证竞赛团队赛涉及流量分析和exe分析两部分。流量分析部分包含9道题目,主要考察蓝牙数据包捕获、设备信息获取、命令执行分析等内容,其中涉及MAC地址修改、UTC时间计算、影子账户识别等关键点。exe分析部分包含9道题目,重点分析GIFT.exe病毒程序,包括MD5值、编程语言、编译时间、网络连接、文件加密特征等,特别关注了病毒修改的壁纸文件及其隐形水印中的Flag信息。竞赛内容全面覆盖电子数据取证的关键技术点,包括网络流量解析、恶意代码分析等专业技能。

Aluxian_的博客 1712

一.镜头知识之焦点,焦距,有效焦距,前焦距,后焦距

由光学系统中镜片的最后一面到像面的距离。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 5589

IDA静态分析学习

切换到界面视图,call表示调用函数,call gethostbyname即调用getbyhostname函数,push eax表示把什么给eax赋值,再往上mov eax,off_10019040表示把全局变量复制到到eax(off_或dword_后面带地址一般是全局变量)通过创建进程的方式来运行“cmd /c.xxx”命令,xxx是远程shell命令,如cmd /c ipconfig。同样复制地址跳转,绿框内即为局部变量和参数,其中带“-”的都是局部变量,共有23个,最后一个不是局部变量。

m0_74375834的博客 330

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDA Pro 7.7 实战:Lab05-01.dll 恶意代码 5 大关键行为逆向剖析

本文通过 IDA Pro 7.7 对 Lab05-01.dll 恶意代码进行深度逆向分析,揭示了其五大关键行为:隐蔽网络通信、远程Shell后门、主机信息收集、反虚拟机检测及数据混淆。文章详细解析了恶意代码的运作机制,并提供了实用的逆向工程技巧和防御建议,帮助安全研究人员有效应对类似威胁。

angzhan5306的博客 357

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

查看打包成exe程序的批处理并提取代码

今天找批处理(.bat)打包成exe的更好地工具,结果误打误撞找到了查看打包成exe程序的批处理并提取代码教程,测试后发现确实可以查看到打包成exe的批处理代码。本文就给大家分享一下该教程。 首先我们先运行一下exe程序,判断一下是否是类批处理程序,基本看窗口是不是批处理窗口即可,黑乎乎的DOS界面框基本可以确定了。 打包成exe程序的批处理脚本,通常在运行的时候会在临时目录释放bat批处理文件。我们只需要找到释放时候的对应文件即可。 下面教程开始: 1、打开CMD,输入cd %temp% 切换到临时文件

Yang的博客 5788

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ilasm.exe与ildasm.exe的使用(编译与反编译)

首先打开cmd命令。cd 到 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin 看看你有没这2个工具,没的话自己百度找下 然后把要查看的 dll文件或者exe文件拉进来这里面(因为我们是要用命令,你直接打开ildasm.exe也可以找到各目录打开) 比如 text.dll  (里面有console.writeline("hello...

weixin_34185512的博客 401

备赛日常!!!

运行后得到data的值,再设置请求头打通远程控制,就得到flag,我复现的时候,少了/read,饶了浪费了不少时间,路径可以随便,但是不能不写。这道题目给了一个jar文件,jar文件是java文件编译后打包的产物,可以用在线网站进行反汇编,得到我们常见的java语言代码。密码在刚才目录下,访问下载得到一个加密压缩包,暴力破解一下,得到密码0606。通过分析,发现我们可以利用用户传入的data,实现java反序列化漏洞的利用。这样我们有了一个字典,就可以进行爆破密码了。打开点击提示,发现是一首藏头诗。

2503_90854266的博客 243

Python EXE逆向分析实战:从打包原理到源码提取完整指南

在软件开发和交付过程中,将Python脚本打包成独立的可执行文件(EXE)是常见的操作,这涉及到代码封装和分发技术。其核心原理是利用打包工具将Python解释器、依赖库和源代码字节码整合,生成用户无需安装Python环境即可运行的程序。理解这一过程对于软件安全审计、代码维护和知识传承具有重要价值,尤其是在源码丢失或需要分析第三方工具时。通过掌握逆向工程技术,可以深入解析EXE文件结构,提取并还原字节码为可读源码,这在应急响应、遗留系统维护和安全分析等场景中尤为关键。本文将聚焦于PyInstaller打包文件

weixin_34238633的博客 494

Python EXE逆向分析:三步高效提取源代码实战指南

Python打包技术是软件分发与部署中的关键环节,其核心原理在于将解释器、依赖库及源代码字节码封装为独立可执行文件。这一机制虽然解决了环境依赖问题,但也为代码逆向分析提供了可能。从技术价值角度看,掌握逆向分析能力不仅能帮助开发者恢复丢失的源代码,更能深入理解Python程序的打包机制与安全边界,提升软件工程实践中的问题诊断能力。在应用场景上,逆向技术常用于安全审计、遗留系统分析以及学习研究等合规领域。本文聚焦PyInstaller打包的EXE文件,通过解包提取、字节码反编译、源代码修复三个核心步骤,结合py

weixin_30307921的博客 315

Python EXE 逆向分析实战:解密PyInstaller与py2exe打包程序的完整指南

在当今网络安全与恶意软件分析领域,Python打包程序逆向工程已成为研究人员必备的核心技能。Python EXE Unpacker项目正是为解决这一痛点而生,它提供了一个强大的工具链,专门用于解包和反编译由PyInstaller和py2exe生成的可执行文件。无论你是安全研究员、逆向工程师还是Python开发者,掌握这个工具都能让你在恶意软件分析、代码审计和程序调试中事半功倍。 ## 为什么Py

gitblog_00752的博客 361
上一篇: My Root Kit Note
下一篇: 首页巡警v1.2及以下版本 本地权限提升漏洞(任意内核地址写入)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值