dword

关于pe结构

左心房为你撑大大i 提交于 2019-12-01 08:31:08
每一种操作系统它最重要的格式就是它的可执行文件格式, 因为操作系统就是为了支持这些文件而生成的,内核里面有很多机制,也是配合这种文件格式设计的。 换句话说,这种文件格式也是适合操作系统设计的。 比如: PE 它是 windows 下的文件格式,是 MZ 打头的(4D5A)只有两个字节,后面很大一片就是对这个结构体的管理, 比如:声音在什么位置,图像在什么位置,文字在什么位置,在前面这一片都是有记录的, 也就是说,前面开头不只是标志而已,前面这一片是一个结构体。 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等 1.pe文件的两种状态 pe文件,例如.exe文件,在磁盘中和内存中的状态是不同的; 例如:用winhex打开一个测试程序crackme.exe; 直接打开,和在内存中打开,比较两种状态的区别; 1)直接打开 运行winhex ->file ->open ->选择crackme.exe 2)在内存中打开 运行winhex ->运行crackme.exe使程序加载到内存 ->tools-> open Memory ->找到crackme.exe 3)比较pe文件两种状态下的区别 1】开头部分 磁盘中: 内存中: 可以看到: 两种状态下开头部分都一样; 磁盘中的pe文件总是以00000000开头

串口通信

冷暖自知 提交于 2019-12-01 08:22:18
/////////////////////// ////这是头文件的代码,主要是定义了一个类 /////////////////////////////// #ifndef SERIALPORT_H_ #define SERIALPORT_H_ #include <process.h> #include "TChar.h" #include <string> #include <sstream> #include <iostream> #include <iomanip> #include <algorithm> #include <iterator> #include <cctype> #include <Windows.h> using namespace std; /** 串口通信类 * * 本类实现了对串口的基本操作 * 例如监听发到指定串口的数据、发送指定数据到串口 */ typedef enum AxisType { AXIS_XX = 2, AXIS_YY = 3, AXIS_ZZ = 1, AXIS_OO = 4, }AXIS_TYPE; class CSerialPort { public: CSerialPort(void); ~CSerialPort(void); public: /** 初始化串口函数 * * @param: UINT portNo 串口编号

APC (Asynchronous Procedure Call)

喜你入骨 提交于 2019-12-01 07:09:34
系统创建新线程时,会同时创建与这个线程相关联的队列,即异步过程调用(APC)的队列。 一些异步操作可以通过加入APC来实现,比如我现在学习的IO请求/完成。 BOOL ReadFileEx( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); IO完成时,系统向该线程的APC队列中加入一项,包含lpCompleteionRoutine和lpOverlapped。当线程处于非执行态且是可提醒的状态时,系统会取出APC中的项,并让线程执行其中的回调函数。这个动作会重复到队列空,我猜想可能还会被线程正常唤醒打断。 非执行态是线程调用了等待、休眠函数,像 DWORD SleepEx(DWORD dwMilliseconds, bool bAlertable );DWORD WaitForSigleObjectEx(HANDLE hObject,DWORD dwMilliseconds,bool bAlertable); bAlertable=true; 是可提醒状态! 另一段APC call的代码,是一个waitableTimer的例子。 #include

<转>遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程

自古美人都是妖i 提交于 2019-12-01 05:32:52
1.EPROCESS结构体 EPROCESS块来表示。EPROCESS块中不仅包含了进程相关了很多信息,还有很多指向其他相关结构数据结构的指针。例如每一个进程里面都至少有一个ETHREAD块表示的线程。进程的名字,和在用户空间的PEB(进程环境)块等等。EPROCESS中除了PEB成员块在是用户空间,其他都是在系统空间中的。 2.查看EPROCESS结构 kd> dt_eprocess ntdll!_EPROCESS +0×000 Pcb : _KPROCESS +0×098 ProcessLock : _EX_PUSH_LOCK +0x0a0 CreateTime : _LARGE_INTEGER //创建时间 +0x0a8 ExitTime : _LARGE_INTEGER //退出时间 +0x0b0 RundownProtect : _EX_RUNDOWN_REF +0x0b4 UniqueProcessId : Ptr32 Void //进程的pid +0x0b8 ActiveProcessLinks : _LIST_ENTRY //活动进程链表 +0x0c0 ProcessQuotaUsage : [2] Uint4B +0x0c8 ProcessQuotaPeak : [2] Uint4B +0x0d0 CommitCharge : Uint4B +0x0d4

C++代码注入

我们两清 提交于 2019-12-01 02:38:05
一、C++代码注入原则: 在注入代码中不允许使用API。 在注入代码中不允许使用全局变量。 在注入代码中不允许使用字符串(编译时也被当做全局变量)。 在注入代码中不允许使用函数嵌套。 二、注入代码编写思路: 在本进程通过获取 LoadLibraryA 与 GetProcess 函数的地址。 涉及一组参数,里面包括 {函数地址、模块地址、函数名、传递参数}。 传入进去后,利用LoadLibraryA 与 GetProcess 函数,在注入代码中直接现场"加载模块-获取函数-调用",来达到调用API的目的。 三、编写过程的几个坑: 使用typedef定义函数指针,先在msdn搜索函数原型,复制过去,将名字定义成指针并大写。 申请内存时的权限,参数的内存使用 PAGE_READWRITE权限;代码的内存使用PAGE_EXECUTE_READWRITE权限,否则代码无法被执行。 一定要预先在msdn上搜索确定函数要加载的模块以及函数名,这一步很容易出错。如果出错只能调试被注入程序获取结果,比较麻烦。 四、olldbg调试思路: 在 "选项-调试设置-事件"中勾选“中断于新线程”。 注入后就可以在新线程上一步步进行调试。 五、源代码(练习了两套,一套是注入MessageBoxA,另一套是注入CreateFileA) 1 // 代码注入.cpp : 此文件包含 "main" 函数

_stdcallthunk

↘锁芯ラ 提交于 2019-12-01 00:02:08
// c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\atlmfc\include\atlstdthunk.h // This is a part of the Active Template Library. // Copyright (C) Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Active Template Library Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Active Template Library product. #ifndef __ATLSTDTHUNK_H__ #define __ATLSTDTHUNK_H__ #pragma once #pragma push_macro("new") #undef new

win10 向右键添加管理员级CMD

醉酒当歌 提交于 2019-11-30 22:03:15
新建txt文件,写入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\runas] "ShowBasedOnVelocityId"=dword:00639bc8 [HKEY_CLASSES_ROOT\Directory\Background\shell\runas\command] @="cmd.exe /s /k pushd "%V"" 另存,改后缀reg,双击加入注册表 来源: https://www.cnblogs.com/hello-bug/p/11642164.html

Set-ItemProperty sets Registry Value as String on some systems instead of DWord, why?

陌路散爱 提交于 2019-11-30 17:17:38
I try to create an item using Set-ItemProperty in PowerShell, which works on most systems: New-PSDrive -name HKCR -PSProvider Registry -root HKEY_CLASSES_ROOT Set-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue This creates a DWORD-value on most Windows 7 systems, but I have found one system where this creates a STRING-value instead, and I want to know: why? What could happen that the systems behave differently? All don't have that value already set, all use the same base image using the same Powershell version. Btw, I found that by using the

攻防世界--The_Maya_Society

萝らか妹 提交于 2019-11-30 13:33:20
测试文件: https://adworld.xctf.org.cn/media/task/attachments/17574fc423474b93a0e6e6a6e583e003.zip 我们直接将Linux当前日期设置为2012-12-21,运行文件就能得到flag,不过还是要分析一下。 1.准备 获取信息 64位文件 2.IDA打开 主函数main signed __int64 __fastcall main(__int64 a1, char **a2, char **a3) { size_t v3; // rbx size_t v4; // rax unsigned __int64 v6; // rax unsigned __int64 v7; // rax unsigned __int64 v8; // rsi char *v9; // rdi time_t timer; // [rsp+18h] [rbp-128h] char v11[8]; // [rsp+20h] [rbp-120h] char src; // [rsp+40h] [rbp-100h] char s; // [rsp+60h] [rbp-E0h] unsigned __int64 v14; // [rsp+C8h] [rbp-78h] char v15; // [rsp+D4h] [rbp-6Ch]

dword ptr usage confusion

 ̄綄美尐妖づ 提交于 2019-11-30 11:59:03
问题 In assembly language if we use mov eax, dword ptr[ebx] then it means copy the value pointed by ebx (ebx contains the address value, not the actual value, this instruction copies the actual value in the address)? If we use mov eax, dword ptr[some_variable] then it means copy the value of variable "some_variable" itself to eax, not copy the value pointed by variable "some_variable"? Is my understanding correct? If yes, I'm confused why the same assembly instruction has two different meansings -