郁金香初级班 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; }

浙公网安备 33010602011771号