如何使用x64汇编调用win32api
具体过程如下所示
一 用visual studio新建一个汇编语言程序项目
二 x64汇编语言调用windows弹窗函数 MessageBoxA的代码部分
具体过程如下所示一 用visual studio新建一个汇编语言程序项目二 x64汇编语言调用windows弹窗函数 MessageBoxA的代码部分x64_call_win32api.asm
12345678910111213141516171819202122;x64_call_win32api.asmincludelib ucrt.libincludelib legacy_stdio_definitions.libextern MessageBoxA:proc.dataString db 'how you doing',0Caption db 'Caption',0.codemain proc sub rsp,28h mov r9,0 lea r8,Caption lea rdx,String mov rcx,0 call MessageBoxA add rsp,28h ...
如何使用x64汇编调用c语言函数
具体过程如下所示:
一 用visual studio新建一个汇编语言程序项目
二 使用x64汇编调用c语言printf函数代码内容
三 使用x64汇编调用c语言printf函数循环打印代码内容
扩展:
具体过程如下所示:一 用visual studio新建一个汇编语言程序项目二 使用x64汇编调用c语言printf函数代码内容x64_call_function.asm
123456789101112131415161718192021;x64_call_functionincludelib ucrt.libincludelib legacy_stdio_definitions.libextern printf:proc.dataString db 'HelloWorld',0Format db '%s',0.codemain proc sub rsp,28h lea rdx,String lea rcx,Format call printf add rsp,28h retmain endpend
三 使用x64汇编调用c语言 ...
如何使用visualstudio写一个64位汇编程序
具体过程如下所示:
一 首先使用visual studio新建一个空项目.
二 勾选msam
三 给源文件新建一个后缀名位.asm文件,例如:first_assembly_x64.asm
鼠标右键源文件,点击添加新建文件改名为first_assembly_x64.asm,具体过程如图所示:
四 单独一个汇编程序需要将函数入口点设为main
右键项目属性,点击,选择链接器高级入口点~输入main,具体过程如图所示:
五 汇编程序的代码部分
补充零散知识点:
具体过程如下所示:一 首先使用visual studio新建一个空项目.
二 勾选msam 右键菜单,点击生成依赖项,生成自定义,勾选masm
三 给源文件新建一个后缀名位.asm文件,例如:first_assembly_x64.asm鼠标右键源文件,点击添加新建文件改名为first_assembly_x64.asm,具体过程如图所示:
四 单独一个汇编程序需要将函数入口点设为main右键项目属性,点击,选择链接器高级入口点~输入main,具体过程如图所示:
五 汇编程 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
c语言面向对象(使用结构体与函数指针)
[toc]
一、准备c语言结构体使用函数与继承main.c
12345678910111213141516171819202122232425262728293031//main.c#include "stdio.h"typedef int (*Operation)(int a, int b);void fun();typedef struct Animal { int a; Operation opt;}Animal;typedef struct Cat { Animal;}Cat;int main(){ Cat c; c.a = 2; printf("%d\n", c.a); Animal animal; animal.opt = fun; animal.opt(5, 3); animal.opt(5, 3); printf("sfas\n"); return 0;}void fun() ...
一些Nt函数的用法
[toc]
基本函数的用法1.NtOpenProcess123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#include <windows.h>#include <winternl.h>#include <stdio.h>#pragma comment(lib, "ntdll.lib")typedef NTSTATUS(NTAPI* NtOpenProcess_t)( PHANDLE ProcessHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, CLIENT_ID* ClientId );int main() { // 获取 ntdll.dll 模块句柄 HMODULE ntdll = GetModuleHandleA("n ...
HackingSomeInformation
[toc]
c++ 使用PID获取顶级窗口句柄和标题1234567891011121314151617181920212223242526#include <iostream>#include <Windows.h> using namespace std; int main(){ EnumWindows([](HWND hwnd, LPARAM lParam) { DWORD pid = 0; GetWindowThreadProcessId(hwnd, &pid); if (pid == GetCurrentProcessId()) // 判断pid { char text[1024]; GetWindowTextA(hwnd, (LPSTR)text, 1024); // 必须含有标题文字 if (strlen(text) != 0 && IsWindowVisible(hwnd)) { // printf("%s\n", text); targe ...
c/c++中用结构体作为参数传递给函数
[toc]
c语言中结构体的使用1定义结构体1234567struct Process{ wchar_t* name; int pid; int ppid; wchar_t* path;}_Process;
2使用结构体12345678910111213141516#include <stdio.h>struct Process{ wchar_t* name; int pid; int ppid; wchar_t* path;};int main(int argv, char* argc[]){ struct Process Info = {0}; Info.name = L"cmd.exe"; wprintf(L"name is %s\n", Info.name); return 0;}
3定义结构体的同时赋值123456789101112131415#include <s ...
