郁金香初级班 5/18 20-24

目录:+内容

021- C,C++循环语句与控制语句

continue;//只中断本次循环,并进入下一轮的循环

22.   汇编条件转移指令与循环.

{

条件转移指令 jge jne je/jz 
分析while循环对应的汇编指令

 


分析for循环对应的汇编指令
条件转移指令与标志位关系

循环在汇编中其实就是条件判断后进行跳转
test 指令 是逻辑与 and  &&
cmp  指令 是减法  sub  -

023- C,C++用代码注入器调用CALL

 

纯C
void c1()
{
    printf("call 1");

}

void call2(int a)
{
    printf("call 2");

}
void call3(int v,int m)
{
    printf("call 3");

}
int main()
{
    printf("call00=%p call01=%p,call02=%p \n", c1, call2, call3);
    getchar();

    return 0;
}


汇编
push 0x3
push 0x5
call 00e714b0
add esp,8
只有call 3的
代码实现

024- C,C++用代码,跨进程调用CALL

#include<stdio.h>
#include<Windows.h>


HANDLE 进程句柄()
{
    char 窗口标题[] = "选择 C:\\Users\\nixg\\source\\repos\\test\\Debug\\test.exe";
    HWND 窗口句柄 = FindWindowA(0, 窗口标题);
    DWORD pid = 0, tid = 0;
    tid = GetWindowThreadProcessId(窗口句柄, &pid);
    printf("pid=%d \r\n", pid);
    return OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
}

void call1()
{
    CreateRemoteThread(

        进程句柄(),//1
        0, //2
        0, //3
        (LPTHREAD_START_ROUTINE)0x00E714A1,//4 CALL地址
        NULL,//5 CALL的参数
        0,
        0



    );


}
void call2()
{
    CreateRemoteThread(

        进程句柄(),//1
        0, //2
        0, //3
        (LPTHREAD_START_ROUTINE)0x00E714AB,//4 CALL地址
        (LPVOID)0x1,//5 CALL的参数
        0,
        0



    );


}

int main()
{
    call1();
    call2();
    return 0;
}
代码实现

 

posted @ 2023-05-18 21:18  大橘|博客  阅读(17)  评论(0)    收藏  举报