Download Pelles C here: http://www.pellesc.se
include SaveRegs.inc
SaveRegs MACRO
mov QWORD PTR [rbx],rcx
mov QWORD PTR [rbx+8],rdx
mov QWORD PTR [rbx+16],r8
mov QWORD PTR [rbx+24],r9
ENDM
.data
msg db 'Hello!',0
msg2 db 'rcx,rdx,r8 and r9 are saved.',0
title db 'MsgBox',0
title2 db 'Macro test',0
.data?
mainRsp dq ?
.code
start:
sub rsp,8+4*8
push rsp
pop mainRsp
invoke main,ADDR msg2,ADDR title2,10,20
invoke ExitProcess,0
main PROC uses rsi rdi rbx x:QWORD,y:QWORD,w:QWORD,z:QWORD PARMAREA=4*SIZEOF QWORD
LOCAL temp1:QWORD
mov rbx,mainRsp
SaveRegs
xor rsi,rsi
mov rdi,1
invoke MessageBox,0,ADDR msg,ADDR title,0
; The first call to MessageBox destroys rcx,rdx,r8 and r9
invoke MessageBox,0,[rbx],[rbx+8],0
ret
main ENDP
END start
load powercfg.cpl
#1
#2
#3
#4
#5
#6
#7
#8
#9
#10podump.exe /RESOURCES:HEADERS C:\Windows\System32\powercfg.cpl | findstr "type"
File type: DLL
type: "MUI", name: 1, language: 1033
type: "WEVT_TEMPLATE", name: 1, language: 1033
type: ICON, name: 1, language: 1033
type: ICON, name: 2, language: 1033
type: ICON, name: 3, language: 1033
type: ICON, name: 4, language: 1033
type: ICON, name: 5, language: 1033
type: ICON, name: 6, language: 1033
type: ICON, name: 7, language: 1033
type: ICON, name: 8, language: 1033
type: ICON, name: 9, language: 1033
type: ICON, name: 10, language: 1033
type: GROUP ICON, name: 202, language: 1033
type: VERSION, name: 1, language: 1033
type: MANIFEST, name: 124, language: 10338#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")
int WINAPI EnumResNameProc(HMODULE hModule, LPCSTR lpType, LPSTR lpName,LONG_PTR lParam);
int main(void)
//void __cdecl mainCRTStartup(void)
{
HMODULE hMod = LoadLibraryEx(TEXT("powercfg.cpl"), NULL, LOAD_LIBRARY_AS_DATAFILE);
if (hMod) {
puts("load powercfg.cpl");
EnumResourceNames(hMod, MAKEINTRESOURCE(RT_ICON), (ENUMRESNAMEPROC)EnumResNameProc, 0);
FreeLibrary(hMod);
}
return 0;
// ExitProcess(0);
}
int WINAPI EnumResNameProc(HMODULE hModule, LPCSTR lpType, LPSTR lpName,LONG_PTR lParam)
{
TCHAR szTmp[100];
if (IS_INTRESOURCE (lpName)) {
wsprintf(szTmp, TEXT("#%u"), lpName);
puts(szTmp);
} else
puts(lpName);
return 1;
}
<io.h>_O_BINARYetc.,<io.h>but, instead, are located in<fcntl.h>#include <fcntl.h>Page created in 0.063 seconds with 15 queries.