技术标签: c/c++
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#define ProcessBasicInformation 0
typedef struct
{
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
typedef struct
{
ULONG AllocationSize;
ULONG ActualSize;
ULONG Flags;
ULONG Unknown1;
UNICODE_STRING Unknown2;
HANDLE InputHandle;
HANDLE OutputHandle;
HANDLE ErrorHandle;
UNICODE_STRING CurrentDirectory;
HANDLE CurrentDirectoryHandle;
UNICODE_STRING SearchPaths;
UNICODE_STRING ApplicationName;
UNICODE_STRING CommandLine;
PVOID EnvironmentBlock;
ULONG Unknown[9];
UNICODE_STRING Unknown3;
UNICODE_STRING Unknown4;
UNICODE_STRING Unknown5;
UNICODE_STRING Unknown6;
} PROCESS_PARAMETERS, *PPROCESS_PARAMETERS;
typedef struct
{
ULONG AllocationSize;
ULONG Unknown1;
HINSTANCE ProcessHinstance;
PVOID ListDlls;
PPROCESS_PARAMETERS ProcessParameters;
ULONG Unknown2;
HANDLE Heap;
} PEB, *PPEB;
typedef struct
{
DWORD ExitStatus;
PPEB PebBaseAddress;
DWORD AffinityMask;
DWORD BasePriority;
ULONG UniqueProcessId;
ULONG InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
typedef LONG (WINAPI *PROCNTQSIP)(HANDLE,UINT,PVOID,ULONG,PULONG);
PROCNTQSIP NtQueryInformationProcess;
BOOL GetProcessCmdLine(DWORD dwPId,__out LPTSTR lpString)
{
HANDLE hProcess;
PROCESS_BASIC_INFORMATION pbi;
PEB Peb;
PROCESS_PARAMETERS ProcParam;
DWORD dwDummy;
DWORD dwSize;
LPVOID lpAddress;
BOOL RetValue = FALSE;
//得到进程句柄
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,dwPId);
if (!hProcess)
goto Ret;
//获取信息
if (0!=NtQueryInformationProcess(hProcess,0,(PVOID)&pbi,sizeof(PROCESS_BASIC_INFORMATION),NULL))
goto Ret;
if (!ReadProcessMemory(hProcess,pbi.PebBaseAddress,&Peb,sizeof(PEB),&dwDummy))
goto Ret;
if (!ReadProcessMemory(hProcess,Peb.ProcessParameters,&ProcParam,sizeof(PROCESS_PARAMETERS),&dwDummy))
goto Ret;
lpAddress = ProcParam.CommandLine.Buffer;
dwSize = ProcParam.CommandLine.Length;
RetValue = ReadProcessMemory( hProcess,lpAddress,(LPVOID)lpString,dwSize,&dwDummy );
Ret:
if(hProcess)
CloseHandle (hProcess);
return RetValue;
}
int _tmain(int argc, _TCHAR* argv[])
{
NtQueryInformationProcess = (PROCNTQSIP)GetProcAddress(GetModuleHandle(_T("ntdll")),
"NtQueryInformationProcess");
if (!NtQueryInformationProcess)
{
//MessageBox(0,"无法定位NtQueryInformationProcess,程序退出","启动错误",MB_ICONERROR);
return -1;
}
TCHAR str[255] = {0};
GetProcessCmdLine(2816, str);
return 0;
}
EfficientNet的基本结构和B0至B7的整体结构图示
**一、系统概述**基于RFID的图书仓储管理系统的设计以物联网的三层架构思想为理念,实现了图书仓储的入库、盘点、出库、查询等功能,从图书信息采集到数据传输处理再到数据应用,有效的提高了图书仓储的管理效率,为现代化图书仓储提供了便捷化的管理平台。本系统的设计包括应用层Web端管理软件、传输层C#数据采集中间软件以及感知层RFID硬件阅读器,通过这三个主要的部分,系统完成了数据从感知到应用的有...
http://www.objccn.io/issue-17-2/"用户会感激代码签名带来的好处" – Apple Developer Library: Code Signing Guide在 iOS 或 OS X 平台上进行应用开发时,你所需要使用的 API 大多设计得简洁明了。你可以轻易地实现酷炫的动画效果,便捷地进行应用发布前测试,或是用Core Data 将数
Tips1:【别坑同事】每个重要、循环、需要人管的脚本开头必写: set -euo pipefail如果不去 set -euo pipefail,脚本中可能有指令失败了,然而脚本运行完毕之后仍然显示成功。调试bash脚本用set -x,这样每个指令开跑之前都会print出来再跑。 Tips2:【相对路径】cd "$(dirname "$0")"这个命令写在脚本文件...
在透传测试时,遇到了数据转换的问题,在此处总结:一、对于字节:一字节(byte)为8bit,数据范围:2^7~-2^7;单精度浮点型为4个字节,双精度浮点型为8个字节;二、单精度浮点型计算4字节(32位)浮点型数据在计算机中表示为:符数(1位表示正负)+阶码(8位)+尾数(23位)1、 符数:0正1负;2.、阶码:8位以2为底,阶码=127+阶码真值(实际的二进制科学计数法指数);3、尾数:23位,隐含1为最高位的后续数值表示,如1.1101,其尾数为1101;(可以直接
一个问题:每次从服务器取到数据后,都是调用adapter.notifyDataSetChanged();进行刷新。那局部刷新(adapter.notifyItemChanged();)的这些东西不是白瞎了吗?对性能也不好,还没有动画。怎么办:用DiffUtil吧!号称可以进行局部刷新神器,让你的item 该刷新的地方就刷新,数据没有改变的地方不刷新(DiffUtil 内部调用了的局部刷...
if_seq_no 和 if_primary_term 使用
接着看代码块3,在这段很长的代码里,首先一个if中判断了该事件是否满足没有被拦截和被取消,之后第二个if判断了事件类型是否为DOWN,满足了没有被拦截和取消的DOWN事件,接下来ViewGroup才会循环其子View找到点击事件在其内部并且能够接受该事件的子View,再通过调用dispatchTransformedTouchEvent方法将事件分发给该子View处理,返回tr...
0. 前言工具箱里有块闲置的Led点阵板,于是便想折腾起来让其绽放色彩。HUB75是全彩LED显示屏最常见的接口,但很难找到标准通信协议。经历一番探索调试,将其记录于此文。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgkO15WY-1638079861032)(如何制作一个HUB75接口的Led Matrix点阵控制器.assets/Tiny Matrix.png)]1. 硬件篇1.1. HUB75接口定义Led点阵板的HUB75接口,一般以DC3-16P牛
移位运算移位运算包括左移和右移左移运算:x&amp;lt;&amp;lt;k:x左移k位,并在右端补零。右移运算:逻辑右移:x&amp;gt;&amp;gt;k:x右移k位,并在左端补零。算术右移:x&amp;gt;&amp;gt;k:x右移k位,并在左端补最高有效位的值。下表为对一个8位参数x的两个不同的值做不同的一位操作得到的结果:操作值参数x[01100011] [10010101]x&amp;l
导语本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都是面试中几乎常问的知识点,也是加分的点。关于这部分内容,可能需要有一些具体的项目实践。在面试的过程中,结合具体自身实践经历,才能更加深入透彻的描绘出来。面试官思路:绝大多数的面试官都经历过你现在的这个阶段,所以他们对于应聘者的心理和准备都有所了解。“知己知彼,百战百胜”。这也是为什么会被面试官虐的体无完肤的原因。每个面试官都有自己的面试思路,但大体的面试思路大部分分为以下三点:**1、区分度高:**通过回答,可以很