pythonstdcall(python生成shellcode库有哪些)

1.python 生成shellcode库有哪些

python中有个概念叫模块,模块中包含了定义的函数,方便重用。

使用模块的语句如下:

import 模块名

struct模块有个很方便的函数,pack,格式如下:

struct.pack(format,参数)

将参数内容转换成format中指定的格式。写shellcode时,需要将覆盖地址倒序(little-endian)排列,为了方便,可以使用这个函数。要用到的指定格式是"<L”,以无符号长整型的little-endian格式。

2.python怎么导入ctypes

1. 加载Windows系统自带的dll文件:

#加载cdecl调用约定的dll

msvcrt =cdll.msvcrt

#加载stdcall调用约定的dll

kernel32 =windll.kernel32

2. 加载自己dll文件,假如为addFuncDll,方式如下:

mydll =CDLL("addFuncDll.dll")

或者 mydll = cdll.addFuncDll

如果其中有函数add,计算两个整数的和,则使用方式如下:

result=mydll.add(4,5)

可以多一步指明add函数的参数类型(也可不指明):

mydll.add.argtypes= [c_int,c_int]

3. 结构体在python中定义为Structure的子类如下:

class POINT(Structure):

_fields_ = [("x", c_int),

("y",c_int)]

_fields中每一项为元组(成员名称,类型)

结构体还可以用于其他的结构体:

class RECT(Structure):

_fields_ = [("upperleft",POINT),

("lowerright",POINT)]

3.python怎么导入ctypes

1. 加载Windows系统自带的dll文件:

#加载cdecl调用约定的dll

msvcrt =cdll.msvcrt

#加载stdcall调用约定的dll

kernel32 =windll.kernel32

2. 加载自己dll文件,假如为addFuncDll,方式如下:

mydll =CDLL("addFuncDll.dll")

或者 mydll = cdll.addFuncDll

如果其中有函数add,计算两个整数的和,则使用方式如下:

result=mydll.add(4,5)

可以多一步指明add函数的参数类型(也可不指明):

mydll.add.argtypes= [c_int,c_int]

3. 结构体在python中定义为Structure的子类如下:

class POINT(Structure):

_fields_ = [("x", c_int),

("y",c_int)]

_fields中每一项为元组(成员名称,类型)

结构体还可以用于其他的结构体:

class RECT(Structure):

_fields_ = [("upperleft",POINT),

("lowerright",POINT)]

4.python isalpha包括哪些

描述

Python isalpha() 方法检测字符串是否只由字母组成。

语法

isalpha()方法语法:

str.isalpha()

参数

无。

返回值

如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False

实例

以下实例展示了isalpha()方法的实例:

#!/usr/bin/python

str = "this"; # No space & digit in this string

print str.isalpha();

str = "this is string example。.wow!!!";

print str.isalpha();

以上实例输出结果如下:

True

False

5.如何让python调用C和C++代码

要搞明白如何让python调用C/C++代码(也就是写python的extension),你需要征服手册中的<>厚厚的一章。

在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extension后,查阅了一些其他书籍,最终在<>书中找到了教程。1. 首先要明白的是,所谓的python扩展(也就是你提供给python的c/c++代码,不一定是c/c++代码,可以是其他语言写的代码)是一个dll,并且这个dll放在本机python安装目录下的DLLs目录下(譬如我机器上的路径是:F:/Program Files/Python25/DLLs),假如我们接下来要写的扩展module名为mb,python调用的代码为:import mbmb.showMsg("Python's really amazing, I kindda love it!")2. 搭建环境,我们要使用python提供的c头文件和lib库来进行扩展的开发。

在vs 2005下点击菜单 "工具"->"选项", 打开选项对话框,选择"项目和解决方案->VC++目录", 然后在右边"显示以下内容的目录"得comboBox上选择"包含文件”,添加python的include目录(我的机器上是"F:/Program Files/Python25/include"),然后选择库文件,添加python的libs目录(我的机器上是"F:/Program Files/Python25/libs")。既然扩展是一个dll,接下来我们要建立一个“动态链接库”工程,然后开始写代码:#include //python.h是包含python一些定义的头文件,在python的include目录下/*我的python版本是2.5, 因为安装python后它没提供debug下的lib库文件,因此你必须生成release版的dll,想要生成dll版本的,你要到python官网上自己去下载python源代码,当然你可以继续生成release版本的dll,但dll中包含调试信息*/#pragma comment(lib, "python25.lib")//先不管static PyObject* mb_showMsg(PyObject* self, PyObject *args);/*如果你的扩展是mb,那么必须实现一个initmb函数,并且从dll中导出这个函数,但我们在python中调用import mb时,python会去dll里去调用extern "C" __declspec(dllexport) void initmb(){/*当调用mb.showMsg("Python's really amazing, I kindda love it!")时, 相当于你告诉python我有一个showMsg函数,我们怎么告诉python去调用我们dll里的mb_showMsg函数呢?技巧就是下面的方式,定义一个字典数据结构,key => showMsg, value =>mb_showMsg,METH_VARARGS是函数调用方式,仔细查手册吧*/static PyMethodDef mbMethods[] = {{"showMsg", mb_showMsg, METH_VARARGS},{NULL, NULL, NULL} /*sentinel,哨兵,用来标识结束*/};//告诉python我们的模块名叫mb, 模块包含的函数都在mbMethods字典里PyObject *m = Py_InitModule("mb", mbMethods);}/*接下来实现核心功能showMsg*///第一个self参数我们用不着,具体查手册,第二个参数是python传给我们的参数,它是一个python的参数tuplestatic PyObject* mb_showMsg(PyObject* self, PyObject *args){//我们的showMsg函数需要的是一个字符串参数const char* msg = NULL;/*调用特殊参数解码python传递给我们的参数,s是string,我们传递接收参数的变量地址,如果你的功能函数需要两个参数,在PyArg_parseTuple后面继续添加接受参数的变量地址,这个函数的原型是类似printf的不定参数的形式PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, 。

);*/if (!PyArg_ParseTuple(args, "s", &msg))return NULL;//调用MBint r = ::MessageBox(NULL, "hello", "Caption:Form C module", MB_ICONINFORMATION | MB_OK);//返回值return Py_BuildValue("i", r);}将上面这段混杂着大量注释的代码拷贝到你的编辑器里,然后编译生成mb.dll,修改后缀成mb.pyd,然后拷贝到python的DLLs目录下,打开idle(python的交互程序),写入代码:import mbmb.showMsg("Python's really amazing, I kindda love it!")。

6.如何用 C++ 为 Python 写 dll

1. 先新建一个名为 hello.cpp 的 C++ 源文件:

Cpp代码

#include <stdio.h>

#define DLLEXPORT extern "C" __declspec(dllexport)

DLLEXPORT int __stdcall hello()

{

printf("Hello world!\n");

return 0;

}

2. 编译成 dll 文件:

Cpp代码

cl /LD hello.cpp

注意, 这里的参数是 /LD, 而不是 /DL。

3. 编写一个名为 hello.py 的 python 文件:

Python代码

# coding: utf-8

import os

import ctypes

CUR_PATH = os.path.dirname(__file__)

if __name__ == '__main__':

print 'starting。'

dll = ctypes.WinDLL(os.path.join(CUR_PATH, 'hello.dll'))

dll.hello()

4. 输出为:

Python代码

starting。

Hello world!

需要注意的地方:

1. C++ 的 dll 中的接口函数必须以 extern "C" __declspec(dllexport) 为前缀, C 的以 __declspec(dllexport) 为前缀。

否则会报错:

Python代码

Traceback (most recent call last):

File "hello.py", line 12, in <module>

dll.hello()

File "C:\Python25\lib\ctypes\__init__.py", line 361, in __getattr__

func = self.__getitem__(name)

File "C:\Python25\lib\ctypes\__init__.py", line 366, in __getitem__

func = self._FuncPtr((name_or_ordinal, self))

AttributeError: function 'hello' not found

pythonstdcall

转载请注明出处代码入门网 » pythonstdcall(python生成shellcode库有哪些)

资讯

python是否可迭代(python判断是否能够迭代)

阅读(46)

本文主要为您介绍python是否可迭代,内容包括python里哪些是可迭代对象,python判断是否能够迭代,python判断是否能够迭代。方法是通过collections模块的Iterable类型判断:>>> from collections import Iterable

资讯

python库知乎(python图像处理库哪个好知乎)

阅读(98)

本文主要为您介绍python库知乎,内容包括python图像处理库哪个好知乎,python图像处理库哪个好知乎,Python常用的标准库以及第三方库。#coding:utf-8#使用的库import csv,os,sysimport xlwt,xlrdfrom xlrd import

资讯

python动态实例化(python的类中怎么实现动态化函数)

阅读(58)

本文主要为您介绍python动态实例化,内容包括python的类中怎么实现动态化函数,python类实例化,Python中类是怎么实例化的为什么在创建实例之后还能添加属性。给你这样一个例子吧,这个例子里面有动态增加类的函数。声明一个类,类初始化的时候读

资讯

python开发游戏脚本(游戏开发中常用哪种脚本语言)

阅读(134)

本文主要为您介绍python开发游戏脚本,内容包括python怎么写游戏脚本,python怎么写游戏脚本,python可以做游戏吗。一般大型的商业游戏引擎有自己的脚本语言,比如Unreal3就有自己的一套Unreal Script ,Unity3d可以用C#、Java

资讯

python2.764位pil(win764位怎么安装python和nltk)

阅读(49)

本文主要为您介绍python2.764位pil,内容包括win764位系统安装了python2.7又安装了PIL第三方64位模块在使用时,win764位怎么安装python和nltk,python哪个版本可以加pil。你装的是什么版本的python。如果你是2.7版本,并且电脑是64位机器。建议

资讯

pythondlib使用(dlib库,怎么在python中安装)

阅读(38)

本文主要为您介绍pythondlib使用,内容包括dlib库,怎么在python中安装,如何线上部署用python基于dlib写的人脸识别算法,如何使用dlib库。这几天刚好用到Python,其中用到了Dlib库的人脸对齐算法。python中需要用到import dlib.pyd文件,这个文件

资讯

python判断是否存在函数(python怎么判断文件是否存在)

阅读(51)

本文主要为您介绍python判断是否存在函数,内容包括Python中如何判断一个对象是否为函数,python怎么判断文件是否存在,[Python基础]如何判断一个变量是否存在。正文 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使

资讯

python秒数转时间(python将这个时间格式转化为秒数)

阅读(53)

本文主要为您介绍python秒数转时间,内容包括python将这个时间格式转化为秒数,Python函数将秒到分钟,小时,天问题,怎么解决,利用Python怎么得到现在时间的秒数并转换为整型。先把时间格式“1:23:20:27.00” 转化为字符串s1="1:23:20:27.00"#a=

资讯

python数据采集教程(如何用最简单的Python爬虫采集整个网站)

阅读(34)

本文主要为您介绍python数据采集教程,内容包括如何用最简单的Python爬虫采集整个网站,python做监控数据采集,怎么做.新手请教,如何学习爬虫技术抓取数据。在之前的文章中Python实现“维基百科六度分隔理论“之基础爬虫,我们实现了在一个网站

资讯

python小数点保留1位(如何在Python中保留小数)

阅读(39)

本文主要为您介绍python小数点保留1位,内容包括如何在Python中保留小数,Python中小数点的问题,怎么放弃后面位数,只保留前面两位搜狗,python中保留几位小数进行四舍五入的round函数自身的源代码是什么。f = lambda x, n: round(x, n - len(

资讯

python写入文件编码格式(python2.7.4怎么指定格式编码的文本)

阅读(24)

本文主要为您介绍python写入文件编码格式,内容包括python写文件怎么写gbk编码的文件,python2.7.4怎么指定格式编码的文本,python2.7.4怎么指定格式编码的文本。要写入的数据本身就是byte串(u中文是中文字符串,中文是byte串),用二进制方式打开就

资讯

python画仪表(如何使用Python在屏幕上作画)

阅读(24)

本文主要为您介绍python画仪表,内容包括如何用python绘制各种图形,如何用Python绘制Circos图,如何使用Python在屏幕上作画。from turtle import *def curvemove():for i in range(200):right(1)forw

资讯

python判定整数(怎样用python判断整数)

阅读(24)

本文主要为您介绍python判定整数,内容包括python怎么判断一个数是整数,python判断一个数是不是整数,python判断一个数是不是整数。import typesif type(var) in [types.IntType,types.LongType]: bodyelse

资讯

pythonsortedlist(什么是python内置函数sorted)

阅读(2)

本文主要为您介绍pythonsortedlist,内容包括什么是python内置函数sorted,hashtable和SortedList有何区别?,python3.0中sorted函数怎么用。Python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。sort函数和sorte

资讯

pythonjson编码(python如何解析json代码分析)

阅读(1)

本文主要为您介绍pythonjson编码,内容包括python如何解析json代码分析,pythonjson怎么修改json数据,如何在python代码中引用json格式。先import json导入json模块,然后加载json编码如f是读取网页得到的json结构加载:json_r=json.loads(

资讯

pythonsublime设置(如何用sublime运行python)

阅读(2)

本文主要为您介绍pythonsublime设置,内容包括如何用sublime运行python,如何用sublime设置python的开发环境,如何使用sublime编辑器运行python程序。工具/原料SublimeTextPython方法/步骤打开sublimeText,在菜单栏找到Tools>编译系统>新编译

资讯

padavan安装python(anaconda与python什么关系)

阅读(2)

本文主要为您介绍padavan安装python,内容包括老毛子固件在编译的时候怎样加入python,anaconda与python什么关系,padavan华硕怎么安装adbyby。Theano:一个深度学习的开源工具包。Python:一门面抄向对象的、解释型袭的计算机编程(程序设计)语言,由

资讯

win32processpython(怎样使用python查询系统某一进程是否存在)

阅读(2)

本文主要为您介绍win32processpython,内容包括pythonwin32是什么?pythoncom如何理解,怎样使用python查询系统某一进程是否存在,怎样使用python查询系统某一进程是否存在。只需要一小段python代码,就可以解决用python查询判断系统进程是否存

资讯

pythonsslurllib(python报错urllib.error.URLError:)

阅读(2)

本文主要为您介绍pythonsslurllib,内容包括pythonurllib怎么用,pythonurllib,pythonhttplib2urllib区别。jango站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown ur