- 注册时间
- 2021-4-16
- 最后登录
- 2023-11-9
- 在线时间
- 4 小时
编程入门
- 龙马币
- 108
|
这里是其中一小部分。
- byte * push_rsp() //64位编码
- {
- byte code[1] = { 0x54 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * push_rbp() //64位编码
- {
- byte code[1] = { 0x55 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * push_rsi() //64位编码
- {
- byte code[1] = { 0x56 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * push_rdi() //64位编码
- {
- byte code[1] = { 0x57 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rax_value(__int64 value) //qword
- {
- byte code[2] = { 0x48,0xb8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + sizeof(__int64);
- return ShellCode;
- }
- byte * mov_rcx_value(__int64 value) //qword
- {
- byte code[2] = { 0x48,0xb9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_rdx_value(__int64 value) //qword
- {
- byte code[2] = { 0x48,0xba };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_rbx_value(__int64 value) //qword
- {
- byte code[2] = { 0x48,0xbb };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r8_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xb8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r9_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xb9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r10_value(__int64 value) //mov r10, 6FFFFFFFFFFFFFFF
- {
- byte code[2] = { 0x49,0xba };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r11_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xbb };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r12_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xbc };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r13_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xbd };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r14_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xbe };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_r15_value(__int64 value) //qword
- {
- byte code[2] = { 0x49,0xbf };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_rcx_rax() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0xc8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rax_rcx() //64位编码
- {
- byte code[3] = { 0x49,0x89,0xc8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rax_rdx() //64位编码
- {
- byte code[3] = { 0x48,0x89,0xd0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rdx_rax() //64位编码
- {
- byte code[3] = { 0x48,0x89,0xc2 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r8_r9() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xc8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r9_r8() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xc1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rcx_ptr_rcx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x09 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rcx_ptr_rax() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x08 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rcx_ptr_rdx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x0a };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rcx_ptr_rbx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x0b };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rdx_ptr_rdx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x12 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rdx_ptr_rcx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x11 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rdx_ptr_rbx() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x13 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_rdx_ptr_rax() //64位编码
- {
- byte code[3] = { 0x48,0x8b,0x10 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r8_ptr_r8() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r8_ptr_r9() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x01 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r8_ptr_r10() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x02 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r9_ptr_r8() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x08 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r9_ptr_r9() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x09 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r9_ptr_r10() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x0a };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r8() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xc7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r9() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xcf };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r10() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xd7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r11() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xdf };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r12() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xe7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r13() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xef };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r14() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xf7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_r15() //64位编码
- {
- byte code[3] = { 0x4d,0x89,0xff };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r8() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x38 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r9() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x39 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r10() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x3a };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r11() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x3b };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r12() //64位编码
- {
- byte code[4] = { 0x4d,0x8b,0x3c,0x24 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r13() //64位编码
- {
- byte code[4] = { 0x4d,0x8b,0x7d,0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r14() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x3e };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_r15_ptr_r15() //64位编码
- {
- byte code[3] = { 0x4d,0x8b,0x3f };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mov_qword_ptr_rax(__int64 value) //qword这里是个内存地址
- {
- byte code[2] = { 0x48,0xa3 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(__int64));
- CodeLen = CodeLen + 8;
- return ShellCode;
- }
- byte * mov_rax_qword_ptr_rbp_add(int value) //qword这里是个内存地址,mov rax, qword ptr ss:[rbp+FFFFFFF]
- {
- byte code[3] = { 0x48,0x8b,0x85 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(int));
- CodeLen = CodeLen + 4;
- return ShellCode;
- }
- byte * mov_rcx_qword_ptr_rbp_add(int value) //qword这里是个内存地址,mov rax, qword ptr ss:[rbp+FFFFFFF]
- {
- byte code[3] = { 0x48,0x8b,0x8d };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(int));
- CodeLen = CodeLen + 4;
- return ShellCode;
- }
- byte * lea_rcx_rcx() //64位编码 [rcx]
- {
- byte code[3] = { 0x48,0x8d,0x09 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * lea_rax_rcx() //64位编码 [eax]
- {
- byte code[3] = { 0x48,0x8d,0x08 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * lea_rax_rax() //64位编码 [eax]
- {
- byte code[3] = { 0x48,0x8d,0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * lea_rcx_rax() //64位编码 [eax]
- {
- byte code[3] = { 0x48,0x8d,0x01 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * add_rax_rcx() //64位编码 [eax]
- {
- byte code[3] = { 0x48,0x01,0xc8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * add_rcx_rax() //64位编码 [eax]
- {
- byte code[3] = { 0x48,0x01,0xc1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * add_rsp_value(int value) //减法最大值是0xffffffff,这个是32位
- {
- byte code[3] = { 0x48,0x81,0xc4 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(int));
- CodeLen = CodeLen + 4;
- return ShellCode;
- }
- byte * sub_rsp_value(int value) //减法最大值是0xffffffff,这个是32位
- {
- byte code[3] = { 0x48,0x81,0xec };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(int));
- CodeLen = CodeLen + 4;
- return ShellCode;
- }
- byte * sub_rax_rcx() //减法
- {
- byte code[3] = { 0x48,0x29,0xc3 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * sub_rcx_rax() //减法
- {
- byte code[3] = { 0x48,0x29,0xc1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * ret() //
- {
- byte code[1] = { 0xc3 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * retn(short value) //减法
- {
- byte code[1] = { 0xc2 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(short));
- CodeLen = CodeLen + sizeof(short);
- return ShellCode;
- }
- byte * idiv_rax() //除法 ,首先要讲值传到rax,最后的值传给rax 0x48,0x99 =cpo
- {
- byte code[5] = { 0x48,0x99,0x48,0xf7,0xf8 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * idiv_rcx() //除法 ,首先要讲值传到rax,最后的值传给rax 0x48,0x99 =cpo
- {
- byte code[5] = { 0x48,0x99,0x48,0xf7,0xf9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * div_rax() //除法 ,首先要讲值传到rax,最后的值传给rax 0x48,0x99 =cpo
- {
- byte code[5] = { 0x48,0x99,0x48,0xf7,0xf0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * div_rcx() //除法 ,首先要讲值传到rax,最后的值传给rax 0x48,0x99 =cpo
- {
- byte code[5] = { 0x48,0x99,0x48,0xf7,0xf1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * imul_rax_rcx() //乘法
- {
- byte code[4] = { 0x48,0x0f,0xaf,0xc1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * imul_r8_r9() //乘法
- {
- byte code[4] = { 0x4d,0x0f,0xaf,0xc1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_rax() //易变
- {
- byte code[2] = { 0xff,0xd0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_rcx() //易变
- {
- byte code[2] = { 0xff,0xd1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r8() //易变
- {
- byte code[3] = { 0x41,0xff,0xd0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r9() //易变
- {
- byte code[3] = { 0x41,0xff,0xd1 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r10() //易变
- {
- byte code[3] = { 0x41,0xff,0xd2 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r11() //易变
- {
- byte code[3] = { 0x41,0xff,0xd3 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r12() //易变
- {
- byte code[3] = { 0x41,0xff,0xd4 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r13() //易变
- {
- byte code[3] = { 0x41,0xff,0xd5 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r14() //易变
- {
- byte code[3] = { 0x41,0xff,0xd6 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_r15() //易变
- {
- byte code[3] = { 0x41,0xff,0xd7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * jmp_r15() //易变
- {
- byte code[3] = { 0x41,0xff,0xe7 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * call_ptr(int value) //减法最大值是0xffffffff,这个是32位//这个函数x64有问题的,不建议用
- {
- byte code[2] = { 0xff,0x14};
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- RtlMoveMemory(ShellCode + CodeLen, &value, sizeof(int));
- CodeLen = CodeLen + 4;
- return ShellCode;
- }
- byte * movss_xmm0_dword_ptr_rcx() //浮点数地址传值 movss xmm0, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x01 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm0_dword_ptr_rax() //浮点数地址传值 movss xmm0, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm1_dword_ptr_rax() //浮点数地址传值 movss xmm1, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x08 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm2_dword_ptr_rax() //浮点数地址传值 movss xmm2, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x10 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm3_dword_ptr_rax() //浮点数地址传值 movss xmm3, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x18 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm4_dword_ptr_rax() //浮点数地址传值 movss xmm4, dword ptr ds:[rax]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x20 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm1_dword_ptr_rcx() //浮点数地址传值 movss xmm0, dword ptr ds:[rcx]
- {
- byte code[4] = { 0xF3, 0x0F, 0x10, 0x09 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm0_dword_ptr_r8() //浮点数地址传值 movss xmm0, dword ptr ds:[r8]
- {
- byte code[5] = { 0xF3, 0x41, 0x0f, 0x10,0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_xmm0_dword_ptr_r9() //浮点数地址传值 movss xmm0, dword ptr ds:[r9]
- {
- byte code[5] = { 0xF3, 0x41, 0x0f, 0x10,0x01 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * movss_dword_ptr_xmm0() // movss dword ptr ds : [rax], xmm0 |
- {
- byte code[5] = { 0xF3, 0x67, 0x0F, 0x11, 0x01 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * addss_xmm0_dword_ptr_rax() // addss xmm0, dword ptr ds : [rax] 浮点加法
- {
- byte code[4] = { 0xF3, 0x0f, 0x58, 0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * subss_xmm0_dword_ptr_rax() // addss xmm0, dword ptr ds : [rax] 浮点减法
- {
- byte code[4] = { 0xF3, 0x0f, 0x5c, 0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * mulss_xmm0_dword_ptr_rax() // addss xmm0, dword ptr ds : [rax] 浮点乘法
- {
- byte code[4] = { 0xF3, 0x0f, 0x59, 0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * divss_xmm0_dword_ptr_rax() // addss xmm0, dword ptr ds : [rax] 浮点除法
- {
- byte code[4] = { 0xF3, 0x0f, 0x5e, 0x00 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_r9d_r9d() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x45, 0x31, 0xc9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_r8d_r8d() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x45, 0x31, 0xc0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_eax_eax() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[2] = { 0x31, 0xc0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_ecx_ecx() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[2] = { 0x31, 0xc9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_edx_edx() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[2] = { 0x31, 0xd2 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_rax_rax() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x48, 0x31,0xc0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_rcx_rcx() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x48, 0x31,0xc9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_r8_r8() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x4d, 0x31,0xc0 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * xor_r9_r9() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[3] = { 0x4d, 0x31,0xc9 };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- byte * int3() // addss xmm0, dword ptr ds : [rax] 清空
- {
- byte code[1] = { 0xcc };
- RtlMoveMemory(ShellCode + CodeLen, &code, sizeof(code));
- CodeLen = CodeLen + sizeof(code);
- return ShellCode;
- }
- short WordToByteArray(short Value) //2字节整数转byte数组,网络转换
- {
- return htons(Value);
- }
- int intToByteArray(int Value) //4字节整数转byte数组,网络转换 ntohl应该也可以
- {
- return htonl(Value);
- }
- void ByteToHexStr(const unsigned char* source, char* dest, int sourceLen)//char*字符串转编码 备份函数
- {
- short i;
- unsigned char highByte, lowByte;
- for (i = 0; i < sourceLen; i++)
- {
- highByte = source[i] >> 4;
- lowByte = source[i] & 0x0f;
- highByte += 0x30;
- if (highByte > 0x39)
- dest[i * 2] = highByte + 0x07;
- else
- dest[i * 2] = highByte;
- lowByte += 0x30;
- if (lowByte > 0x39)
- dest[i * 2 + 1] = lowByte + 0x07;
- else
- dest[i * 2 + 1] = lowByte;
- }
- return;
- }
- bool HexToString(unsigned char *pSrc, std::string &dest, int nL) //char[]字节数组转->字符串
- {
- char buf[256];
- memset((char *)buf, 0, sizeof(buf));
- unsigned char hb;
- unsigned char lb;
- for (int i = 0; i < nL; i++)
- {
- hb = (pSrc[i] & 0xf0) >> 4;
- if (hb >= 0 && hb <= 9)
- hb += 0x30;
- else if (hb >= 10 && hb <= 15)
- hb = hb - 10 + 'A';
- else
- return false;
- lb = pSrc[i] & 0x0f;
- if (lb >= 0 && lb <= 9)
- lb += 0x30;
- else if (lb >= 10 && lb <= 15)
- lb = lb - 10 + 'A';
- else
- return false;
- buf[i * 2] = hb;
- buf[i * 2 + 1] = lb;
- }
- dest = buf;
- return true;
- }
- bool StringToHex(std::string &src, unsigned char *dest)////字符串====字节数组
- {
- unsigned char hb;
- unsigned char lb;
- if (src.size() % 2 != 0)
- return false;
- transform(src.begin(), src.end(), src.begin(), toupper);
- for (int i = 0, j = 0; i < (int)src.size(); i++)
- {
- hb = src[i];
- if (hb >= 'A' && hb <= 'F')
- hb = hb - 'A' + 10;
- else if (hb >= '0' && hb <= '9')
- hb = hb - '0';
- else
- return false;
- i++;
- lb = src[i];
- if (lb >= 'A' && lb <= 'F')
- lb = lb - 'A' + 10;
- else if (lb >= '0' && lb <= '9')
- lb = lb - '0';
- else
- return false;
- dest[j++] = (hb << 4) | (lb);
- }
- return true;
- }
复制代码
|
|