es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función CreateProcessA falla debido a una violación de acceso en MASM64 (ml64.exe)

Un problema bastante similar a https://stackoverflow.com/questions/38420322/createprocessa-function-doesnt-work-in-masm64-ml64-exe, pero en mi caso creo que no se trata de un problema de alineamiento o tipos de datos de puntero en 64x. Aquí está el código:

    ;ml64.exe CreateProcessA.asm /link /subsystem:console /entry:main /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64" /defaultlib:kernel32.lib

extrn CreateProcessA : proc

PROCESS_INFORMATION    struct 
    hProcess          qword ?
    hThread           qword ?
    dwProcessId       dword ?
    dwThreadId        dword ?
PROCESS_INFORMATION    ends

STARTUPINFOA         struct
cb                  qword     sizeof ( STARTUPINFOA )        
lpReserved          qword     ?         
lpDesktop           qword     ?         
lpTitle             qword     ?         
dwX                 dword     ?         
dwY                 dword     ?         
dwXSize             dword     ?         
dwYSize             dword     ?         
dwXCountChars       dword     ?         
dwYCountChars       dword     ?         
dwFillAttribute     dword     ?         
dwFlags             dword     ?         
wShowWindow         word      ?         
cbReserved2         word      3 dup ( ? )
lpReserved2         qword     ?         
hStdInput           qword     ?         
hStdOutput          qword     ?         
hStdError           qword     ?         
STARTUPINFOA         ends

.const
NORMAL_PRIORITY_CLASS equ 020h

.data
processInfo PROCESS_INFORMATION <>
startupInfo STARTUPINFOA <>
szProcName db "C:\Windows\System32\cmd.exe", 00h

.code
    main proc
        lea rax, processInfo
        lea rbx, startupInfo

        push rax                     
        push rbx                     
        push 00h                                  
        push 00h                     
        push NORMAL_PRIORITY_CLASS   
        push 00h                     

        sub rsp, 20h
        mov r9, 00h
        mov r8, 00h
        mov rdx, 00h
        lea rcx, szProcName
        call CreateProcessA

    main endp
end

Error – Violación de acceso en kernelbase.dll en

movaps xmmword ptr ss:[rsp+C0],xmm0

¿Alguien puede aclarar qué está mal en mi código?

Tags:  

Answer

  1. Avatar for davy.ai

    El mensaje de error indica una violación de acceso que ocurre en kernelbase.dll en la línea “movaps xmmword ptr ss:[rsp+C0],xmm0” del código. Esto sugiere un problema con el acceso a la memoria.

    Es difícil determinar el problema exacto sin más información, pero puede estar relacionado con un alineamiento incorrecto o tipos de datos de puntero en el código. Sin embargo, el remitente cree que este no es el problema en su caso.

    Puede ser necesario realizar un análisis y depuración adicionales para identificar y resolver el problema.

Comments are closed.