slzslz 发表于 前天 07:31

fasm x64 汇编专治TOTALCMD64 11.51不加载msimg32.dll

本帖最后由 slzslz 于 2025-7-30 17:42 编辑

需要怎么一字节TOTALCOMMAND 各位大侠在msimg32,dll中继续发挥吧
format PE64 GUI 5.0
entry start

include 'win64a.inc'

; 常量定义
INFINITE             = 0xFFFFFFFF
MEM_COMMIT         = 0x1000
MEM_RESERVE          = 0x2000
PAGE_READWRITE       = 0x04
CREATE_SUSPENDED   = 0x00000004

section '.data' data readable writeable

    my_dll_path      db 'msimg32.dll',0
    my_dll_path_len    = $ - my_dll_path; 字符串长度(含NULL)
    process_info       PROCESS_INFORMATION
    startup_info       STARTUPINFO
    process_handle   dq ?
    process_id         dd ?
    thread_handle      dq ?
    kernel32_dll       db 'kernel32.dll',0
    load_library_namedb 'LoadLibraryA',0
    load_library_addrdq ?
    remote_mem         dq ?
    thread_ret         dq ?; 远程线程句柄

section '.code' code readable executable

start:
   sub   rsp, 8      ; 对齐栈

    ; 初始化 STARTUPINFO 结构
    lea   rdi,
    mov   rcx, sizeof.STARTUPINFO
    xor   eax, eax
    rep stosb
    mov   , sizeof.STARTUPINFO

    ; 创建挂起的 Notecase.exe 进程
    invokeCreateProcessA, 0, "TOTALCMD64.EXE", 0, 0, 0, \
            CREATE_SUSPENDED, 0, 0, startup_info, process_info

    test    rax, rax
    jz exit_program

    ; 保存进程句柄和 PID
    mov rax,
    mov , rax
    mov eax,
    mov , eax

    ; 保存线程句柄
    mov rax,
    mov , rax

    ; 获取 LoadLibraryA 地址
    invoke GetModuleHandleA, kernel32_dll
    test rax, rax
    jz exit_program_cleanup

    invoke GetProcAddress, rax, load_library_name
    test rax, rax
    jz exit_program_cleanup
    mov , rax

    ; 在目标进程中分配内存
    invoke VirtualAllocEx, , 0, my_dll_path_len, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE
    test rax, rax
    jz exit_program_cleanup
    mov , rax

    ; 写入 DLL 路径
    invoke WriteProcessMemory, , , my_dll_path, my_dll_path_len, 0
    test rax, rax
    jz exit_program_cleanup

    ; 创建远程线程调用 LoadLibraryA
    invoke CreateRemoteThread, , 0, 0, , , 0, 0
    test rax, rax
    jz exit_program_cleanup
    mov , rax; 保存远程线程句柄

    ; 等待 DLL 加载完成
    invoke WaitForSingleObject, , INFINITE

    ; 检查 DLL 是否加载成功(可选)
    invoke GetExitCodeThread, , remote_mem
    test rax, rax
    jz @f
    cmp , 0
    jnz @f
    ; 可在此处处理 DLL 加载失败的情况
@@:
    ; 关闭远程线程句柄
    invoke CloseHandle,

    ; 恢复 notecase.exe 的主线程(关键修复点!)
    invoke ResumeThread,

exit_program_cleanup:
    ; 释放分配的内存
    invoke VirtualFreeEx, , , 0, MEM_RELEASE

    ; 关闭句柄
    invoke CloseHandle,
    invoke CloseHandle,

exit_program:
    invoke ExitProcess, 0

section '.idata' import data readable writeable

library kernel32, 'kernel32.dll'

include 'api\kernel32.inc'

anablap 发表于 昨天 14:44

感谢发布原创作品,PYG有你更精彩!

ruanjian 发表于 昨天 11:20

谢谢分享

qinccckencn 发表于 前天 23:18

謝謝提供分享學習了

cxqdly 发表于 前天 22:28

多谢汇编大神

toneger 发表于 前天 18:26

膜拜大神~!
谢谢大佬~!

linxiansen 发表于 前天 11:48

PYG有你更精彩!

Paranioa 发表于 前天 11:08

感谢分享

lies2014 发表于 前天 10:57

谢谢分享!

zenix 发表于 前天 10:44

很不错。
谢谢分享源代码。
页: [1] 2
查看完整版本: fasm x64 汇编专治TOTALCMD64 11.51不加载msimg32.dll