句柄

恶意代码分析实战 Lab10

匿名 (未验证) 提交于 2019-12-03 00:18:01
lab10-01 1简单的静态分析少不了,注意到恶意程序把自身伪装成GUI程序,可以用resource hacker看看资源,然后用depends看看函数导入两个库kernel32.dll和ADVAPI32.dll这是服务相关库,发现还有一个start的导出函数,然后还有一个需要关注字符串 再看看.sys文件,这是很明显会操作注册表的相关操作,不管从函数还是字符串都能看出这一点,而且函数防火墙相关的注册表操作 我们依照题意先用promon看看lab10-01.exe都做了什么操作,发现只有一个对注册表的写操作,还只是写了一个随机种子 2先分析.exe发现程序很简单把,sys注册为名为Lab10-01服务(并且他的类型为3),然后启动这个服务,最后调用ControlService,停止服务,注意第二个参数为1,是通知服务应该停止 现在要内核调试才能看到我们想要了解的信息了,配置的话一般照着课本是不会有问题的,有问题的话(一个是管理员身份运行windbg,然后注意vm中右下角那个串行接口显示的和boot.ini是一致的) 成功后查看Lab10-01的对象信息 然后在他的driverunload处下断点,然后运行,回到虚拟机中继续运行.exe程序发现马上命中断点,虚拟机停止运行 每次都可以看一下他们的参数是什么就知道具体创建了什么注册表项和对什么项写了什么什么值

Win32汇编笔记――一些窗口的API函数

匿名 (未验证) 提交于 2019-12-03 00:06:01
1.模块的概念 一个模块代表的是一个 运行中 的exe文件或dll文件,用来代表这个文件中所有的代码和资源,用来代表这个文件中所有的代码和资源,磁盘上的文件不是模块,装入内存后运行时就叫做模块。一个应用程序调用其他DLL中的API时,这些DLL文件被装入内存,就产生了不同的模块,为了区分地址空间中的不同模块,每个模块都有惟一的模块句柄来标识。 2.句柄 句柄只是一个数值,它的值对程序来说是没有意义的,它只是Windows用来表示各种资源的编号而已。 由于很多API函数中都要用到程序的模块句柄,以便利用程序中的各种资源, 所以在程序的一开始就先取得模块句柄并存放到一个全局变量中可以省去很多的麻烦,在Win32中,模块句柄在数值上等于程序在内存中装入的起始地址。 注意:模块和句柄的概念。 3.API函数 取模块句柄函数:GetMoudleHandle 使用方法:invoke GetMoudleHandle,pMoudleName lpMoudleName参数是一个指向含有模块名称字符串的指针,可以用这个函数取得程序地址空间中各个模块的句柄,如 szUserDll db 'User32.dll' , 0 ... invoke GetMoudleHandle , addr szUserDll . if eax mov hUserDllHandle , eax . endif ...

vue 可拖拽可缩放 vue-draggable-resizable 组件常用总结

匿名 (未验证) 提交于 2019-12-02 23:52:01
特征 没有依赖 使用可拖动,可调整大小或两者兼备 定义用于调整大小的句柄 限制大小和移动到父元素或自定义选择器 将元素捕捉到自定义网格 将拖动限制为垂直或水平轴 保持纵横比 启用触控功能 使用自己的样式 为句柄提供自己的样式 安装和基本用法 npm install --save vue-draggable-resizable 全局注册组件main.js中写入: import Vue from 'vue' import VueDraggableResizable from 'vue-draggable-resizable' // 可选择导入默认样式 import 'vue-draggable-resizable/dist/VueDraggableResizable.css' Vue.component('vue-draggable-resizable', VueDraggableResizable) 局部注册:在使用的组件里引用 import VueDraggableResizable from 'vue-draggable-resizable' import 'vue-draggable-resizable/dist/VueDraggableResizable.css' 常用属性总结 :w 默认宽度 :h 默认高度 :x="50" 默认水平坐标 注意相对元素是谁 :y="50"

CAD改变图形对象属性

匿名 (未验证) 提交于 2019-12-02 23:47:01
所有对象都一个唯一的标识id和句柄,都是用来标识对象,知道对象的Id或句柄,就能找到对象并修改属性。id是只在当前内存中唯一,下次再打开id就会发生变化,句柄会随图纸保存,并会一直不变。 对象Id,指针,句柄三者之前的转换关系: 从句柄到 ID:使用McDbDatabase::getAcDbObjectId 函数。 从 ID 到句柄:使用McDbObjectId::handle 函数。 从指针到句柄:使用 McDbObject::getAcDbHandle 函数。 修改对象颜色 上一节中:函数McDbObjectId CreateLine1(McGePoint3d pt1,McGePoint3d pt2)会返回新绘制的对象id。 // ------------------------------------------------------------------------- // Summary: // 改变实体颜色 // Parameters: // id - 实体的id // color - 实体的新颜色 // Returns: // 成功返回true // ------------------------------------------------------------------------- bool ChangeColor(McDbObjectId id

Selenium----多窗口切换

匿名 (未验证) 提交于 2019-12-02 23:43:01
   有时候我们在测试一个web应用时会出现多个浏览器窗口的情况,这时候可以用webdriver提供的相关方法来在 多个窗口之间切换并操作不同窗口的元素。要想在多个窗口之间切换,首先要获得每一个窗口唯一的标识符号(也就是句柄), 通过获得的句柄来区分不同的窗口,从而对不同窗口的元素进行操作。 #coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() driver.get("http://www.baidu.com/") #获得当前窗口句柄 nowhandle=driver.current_window_handle #打开注册新窗口 driver.find_element_by_name("tj_reg").click() #获得所有窗口句柄 allhandles=driver.window_handles #循环判断窗口是否为当前窗口 for handle in allhandles:   if handle != nowhandle:   driver.switch_to_window(handle) #用于处理多窗口之间的切换   print 'now register window!' #切换到邮箱注册标签 driver.find_element_by_id(

多窗口下的批量操作脚本 - 利用win32gui和WindowSpy++简单实现目标窗口前置

匿名 (未验证) 提交于 2019-12-02 22:51:08
环境:python 3.7.x 使用的模块:pyautogui, win32gui 使用的工具:WindowSpy++ 1. 鼠标键盘动作模拟的模块(包)选择 百度到的键鼠模拟包主要有 PyUserInput 和 pyautogui 两个包可选,具体如下:   pyautogui:  windows下可直接pip install pyautogui 两者都可以实现丰富的键鼠操作,但我在尝试UserInput的时候遇到了一些问题:不同系统的键盘名称有区别,但不太好找到windows对应的键盘名称表。 * 在使用pyautogui的过程中,我遇到了一些问题,如反复使用pyautogui.hotkey('ctrl','v')来模拟Ctrl+V热键的时候,有一定的概率出错。我的解决方式是十分笨拙的手动模拟: 1 import pyautogui as pg 2 3 pg.keyDown('ctrl') 4 pg.press('v') 5 pg.keyUp('ctrl') 2.多窗口下切换前置窗口 本着少做调查研究的原则,我本来是打算用模拟键盘alt+tab的方法直接实现切换窗口的,甚至计算了多个窗口下置换前置的排列组合方法。但是……天若OCR是一个联网才能使用的工具,在 [识别 - 跳出结果窗口] 的时间里,窗口的排列顺序是不确定的,所以多次反复的tab下结果总是不稳定…

php中连接tcp服务的三种方式

匿名 (未验证) 提交于 2019-12-02 22:11:45
首先需要现有一个 tcp 服务,我们使用 php中的 socket 系列函数实现 <?php //创建socket套接字 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //设置阻塞模式 socket_set_block($socket); //为套接字绑定ip和端口 socket_bind($socket,'127.0.0.1',3046); //监听socket socket_listen($socket,4); while(true) { //接收客户端请求 if(($msgsocket = socket_accept($socket)) !== false) { //读取请求内容 $buf = socket_read($msgsocket, 8192); echo "Received msg: $buf \n"; $str = "this is a service message"; //向连接的客户端发送数据 socket_write($msgsocket, $str,strlen($str)); //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成 socket_close($msgsocket); } } 连接 tcp 服务: 使用 socket 系列函数连接 <?php

C#֮Invokeѧϰ

匿名 (未验证) 提交于 2019-12-02 22:10:10
invoke的含义是:在拥有此控件的基础窗口 句柄 的现呈上 同步 执行指定的委托(同步) beginInvoke的含义是:在创建控件的基础 句柄 所在线程上 异步 执行的委托(异步) 句柄(Handle): 编号 就是句柄。句柄的作用就是将对象的真实地址隐藏起来,同时提供一种对该对象的映射地址方便调用。这样既能保证对象的安全性,也能保证调用的便利。 //this.invoke的使用方法 //第一步:定义修改UI的方法 private void ModifyButton( bool _b ) { this.Button1.Enabled = _b; } //第二步:声明第一步方法的委托 private delegate void ModifyButton_dg( bool _b ); //第三步:调用委托 private void Calldelgate( ) { /*在Windows窗体应用程序中使用this.Invoke 在WPF应用程序中使用this.Dispatcher.Invoke*/ this.Invoke( new ModifyButton_dg( ModifyButton ) ,new object[]{false}); } //第四步:在非UI的线程中调用 //创建线程 Thread _t = new Thread( new ThreadStart(

句柄表(私有句柄表)

人盡茶涼 提交于 2019-12-02 22:00:55
Windows内核分析索引目录 :https://www.cnblogs.com/onetrainee/p/11675224.html 句柄表(私有句柄表)    我们在R3环编程中,会接触到句柄HANDLE的概念。   比如OPENPROCESS,打开进程获取其进程句柄,这些被称为“ 内核句柄 ”。   注意,与GUI图形界面不同,那些 画刷句柄 被称为“ 用户句柄 ”,不在我们讨论范围之列。 一、 句柄表的基本概念   句柄表分为私有私有句柄表和全局句柄表,我们这一节只讨论私有句柄表。   每一个进程都有自己的私有句柄表,在一个进程中使用OpenProcess打开另一个进程时,则会将被打开进程在内核对象的 _EPROCESS 结构体完整的映射到打开进程的私有句柄表中。   注意:是映射,不是创建,被打开进程的_EPROCESS在创建时就已经存储到全局句柄表中了,其他进程打开时直接从这里映射一份即可。 二、句柄表有关的结构 1. 获取_HANDLE_TABLE结构体   私有句柄表存储在_EPROCESS+0x0c4 这个位置,其指针指向一个 _HANDLE_TABLE结构体      2. _HANDLE_TABLE 结构体   我们使用 dt _HANDLE_TABLE 0xe26cc488,该结构的第一个成员 TableCode就是句柄表存储的位置。    kd> dt