灰帽子python 读书笔记 2

本文记录了一次使用ctypes库中的CreateProcess函数启动64位程序遇到的问题及解决过程。作者尝试运行calc.exe时遇到了错误代码0x00000002和0x00000032,最终通过调整为32位版本成功启动程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天的学习点是调用ctypes的createProcess函数来启动程序。


主要包括数据类型的映射和结构的映射等。


按书中的代码边抄边理解了之后,调用calc.exe,出现结果:


[*] Error: 0x00000002.


查了错误表,说是没找到文件。


机智的我把path_to_exe打出来:

C:\Windows\WinSxS\amd64_microsoft-windows-calc_31bf3856ad364e35_10.0.10586.0_none_36439993c5132b2e\calc.exe
[*] Error: 0x00000002.

发现有的反斜杠转义了,有的没有呢。


突然想到上一篇的宽字符问题,于是把my_debugger里的CreateProcessA改成CreateProcessW,来来来,给你宽宽宽。


这下路径倒是对了,但是又出了新的错误:

C:\Windows\WinSxS\amd64_microsoft-windows-calc_31bf3856ad364e35_10.0.10586.0_none_36439993c5132b2e\calc.exe
[*] Error: 0x00000032.


楞尼玛。。查这个32错误说是不支持的网络之类的。但是这个计算器程序根本不需要网络啊。


后来在stackoverflow上发现,说这个调64位程序就会异常,要调32位的,也就是在syswow64里面的那个计算器。


果然调那个就返回正确的样子了:

[*] We have successfully launched the process!
[*] PID: 8888


然而该怎么调64位的程序呢?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值