pydebugger

定义结构体
from ctypes import *WORD = c_ushort
DWORD = c_ulong
LPBYTE =  POINTER(c_ubyte)
LPTSTR = POINTER(c_char)
HANDLE = c_void_pDEBUG_PROCESS = 0x00000001
CREATE_NEW_CONSOLE = 0x00000010class STARTUPINFO(Structure):_fields_ = [("cb", DWORD),("lpReserved", LPTSTR),("lpDesktop", LPTSTR),("lpTitle", LPTSTR),("dwX", DWORD),("dwY", DWORD),("dwXSize", DWORD),("dwYSize", DWORD),("dwXCountChars", DWORD),("dwYCountChars", DWORD),("dwFillAttribute", DWORD),("dwFlags", DWORD),("wShowWindow", WORD),('cbReserved2', WORD),('lpReserved2', LPBYTE),('hStdInput', HANDLE),('hStdOutput', HANDLE),('hStdError', HANDLE),]class PROCESS_INFORMATION(Structure):_fields_ = [("hProcess", HANDLE),('hThread', HANDLE),('dwProcessId', DWORD),('dwThreadId', DWORD),]
debugger对象
from ctypes import *
from my_debugger_defines import *kernel32 = windll.kernel32class debugger():def __init__(self):passdef load(self, path_to_exe):creation_flags = DEBUG_PROCESSstartupinfo = STARTUPINFO()process_information = PROCESS_INFORMATION()startupinfo.dwFlags = 0x1startupinfo.wShowWindow = 0x0startupinfo.cb = sizeof(startupinfo)if kernel32.CreateProcessA(path_to_exe,None,None,None,None,creation_flags,None,None,byref(startupinfo),byref(process_information)):print "[*]we have successfully launched the process!"print "[*]PID:%d" % process_information.dwProcessIdelse:print "[*]Error: 0x%08x." % kernel32.GetLastError()
测试代码
import my_debuggerdebugger = my_debugger.debugger()
debugger.load("C:\Windows\WinSxS\wow64_microsoft-windows-calc_31bf3856ad364e35_10.0.10586.0_none_409843e5f973ed29\calc.exe")

 

转载于:https://www.cnblogs.com/hq2005001/p/5618003.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2 源码漫游(一)

Vue2 源码漫游(一) 描述: Vue框架中的基本原理可能大家都基本了解了,但是还没有漫游一下源码。 所以,觉得还是有必要跑一下。 由于是代码漫游,所以大部分为关键性代码,以主线路和主要分支的代码…

神经网络中的反向传播算法

神经网络中的方向传播算法讲得复杂难懂。简单地说明它的原理: 神经网络:输入层,隐藏层,输出层。根据线性关系,激活函数,并最终根据监督学习写出误差表达式。此时,误差函数可写成,那么…

有限元笔记02:第三章

1.局部坐标到全局坐标变换 2.

bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码

1,点击布局文件,出现 Cannot find declaration to go to ? 且 点击代码不能跟踪代码? 把 项目的build.gradle 中的 compileSdkVersion 23 版本设置最高。 apply plugin: com.android.applicationandroid { compileSdkVersion 23 b…

Mysql:This version of MySQL doesn’t yet support ‘LIMIT IN/ALL/ANY/SOME 错误解决

This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决 这次国庆节回来后的测试中,在一个Mysql表达式中使用嵌套查询,出现了这个错误。原因是内层select语句带有limit子句。 在网上查了下,有文章指出&#xff…

Segmentation fault (core dumped) -llinux系统内存错误报错信息

目录 1 问题原因 (1)内存访问越界(2)多线程程序使用了线程不安全的函数。(3)多线程读写的数据未加锁保护。(5)堆栈溢出。2 使用GDB查看core文件3 使用GDB调试程序 返回目录 1 问题…

Android 抽屉布局

目前部分APP使用一种类似抽屉式的布局,像QQ那种,感觉很炫,自己也一直想做一个像那样的布局,(ps网上很多这样的例子,我下面做的就是参考网上的改变的) 废话不就不说了,直接上代码 1、…

学习笔记(35):Python网络编程并发编程-协程(yield,greenlet,gevent模块)

立即学习:https://edu.csdn.net/course/play/24458/296457?utm_sourceblogtoedu 协程(yield,greenlet,gevent) 1.协程:在单线程中通过不断地在多个任务之间进行切换执行,来达到并发的效果的线程,可以提高效率 2.yiel…

双目标定算法

坐标系基础知识: > 1.1. 从像素坐标系(u,v) 到 世界坐标系(Xw,Yw,Yw) 这里直接拿上篇博文的结果,中间省去了其它坐标系直接的关系,直接给出,如下所示: 公式如下: > 1.2. 符号规定( Notation ) 为了…

Spring bean三种创建方式

spring共提供了三种实例化bean的方式:构造器实例化(全类名,反射)、工厂方法(静态工厂实例化 动态工厂实例化)和FactoryBean ,下面一一详解: 1、构造器实例化 City.java 1 package com.proc.bean;2 3 publ…

Excel使用控件创建动态地图图表

[本文软件Excel 2010] 效果图: 首先我们看一下数据源 数据源中第二列是对应图形的名称。首先创建图形,我们可能在网络中找到各个地图的矢量图形。不过不是每个地图图形都适合我们,或许企业划分非按照行政区划分。因此可以尝试自己绘制&#x…

Windows 10 常用的快捷键及常用指令

系统快捷键 快捷键功能说明备注CtrlShiftEsc打开任务管理器macbook: fnshiftF11普通键盘: PrintScreen截屏幕图macbook: fnshiftoptionF11普通键盘: altPrintScreen截取当前窗口图片macbook: WinfnEsc普通键盘: WinPause/Break打开系统属性WinctrlD新建虚拟桌面Windows 10Winct…

学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯

1.基于线程池实现并发套接字通讯:因为套接字涉及地是I/O密集模型,因此使用多线程会有高效率 服务器 #基于线程池完成并发的套接字通讯 from socket import * from threading import Thread from concurrent.futures import ThreadPoolExecutordef commun…

使用Configuration Manager部署及管理软件更新(2)

承接上一篇文章:http://ericxuting.blog.51cto.com/8995534/1543835 一、 确定软件更新符合性 1. 打开Configuration Manager管理控制台,点击软件库,展开软件更新,点击所有软件更新 2. 点击主页中的运行摘要,等待对话框…

NULL、nil、Nil、NSNull的区别

标志值含义NULL(void *)0C指针的字面零值nil(id)0Objecve-C对象的字面零值Nil(Class)0Objecve-C类的字面零值NSNull[NSNull null]用来表示零值的单独的对象转载于:https://www.cnblogs.com/wlsxmhz/p/56250…

Fiddler 域名过滤

原来一直没意识到Fiddler过滤,导致每次抓包都要自己判断、搜索好多东西,真是呵呵! 过滤设置很简单,看懂一张图就解决问题了。 箭头 那两处设置下,圆圈处保存再进行抓包即可 转载于:https://www.cnblogs.com/eejron/p/4…

windows中VS卸载opencv配置,重新安装其他版本

1、找到工程的属性管理器,电机Debug64和Release64下面的 包含目录和库目录,删掉其原由配置的oepncv路径; 找到链接器中的附加依赖项,删掉原有的配置;

学习笔记(36):Python网络编程并发编程-IO模型介绍

立即学习:https://edu.csdn.net/course/play/24458/296460?utm_sourceblogtoedu I/O模型介绍:I/O模型表示处于等待状态的模型,如套接字通讯的accept和recv函数一样 1.同步I/O 2.异步I/O 3.阻塞I/O 4.非阻塞I/O

AD9 如何画4层pcb板

新建的PCB文件默认的是2层板,教你怎么设置4层甚至更多层板。在工具栏点击Design-->Layer Stack Manager.进入之后显示的是两层板,添加为4层板,一般是先点top layer, 再点Add Layer,再点Add Layer,这样就成了4层板。见下图。 有…

gulp 流处理

包含的内容: 穿插流流合并流队列流筛选1. 穿插流// passthrough stream 把流传递给其他的// usegulp.src(glob,{passthrough:true})// function 进行流的合并处理,避免多余配置以及冗余代码 2. 合并流// 使用merge2// install yarn add merge2 or …