大家帮忙看看这一段汇编怎么转成C++内联汇编,或者有什么更好的写法
![图片描述](upload/tmp/959994_A2VPGA4YA958KYG.png)这是一段加密的代码,我想在C++通过内联汇编的方式运行这段代码。
其中函数头部的参数有点不知道怎么写。
![图片描述](upload/tmp/959994_U9BEN98G7P9VWET.png)
这是加密函数的第一层,此时eax来源于一个基地址+偏移,在内联汇编中可以通过调用call的方式正常加密。
![图片描述](upload/tmp/959994_N6999VFAVRSJDWF.png)
这是下一层,此时密钥被赋值给一个堆栈地址了,从这个位置开始我已经不知道该如何调用了。这里mov,ecx的值是上一层1939ADC0地址的值。
![图片描述](upload/tmp/959994_NCZXTHPBNVRFVRQ.png)
最内层的值是上一层的堆栈地址,堆栈地址的值也就是1939ADC0地址的值D4A09F8C。
__declspec(naked) void jiami(DWORD 密钥,DWORD 加密长度,DWORD 加密地址){
__asm{
push ebx
push ebp
mov ebp, dword ptr ss : //密钥之类的
mov ecx, dword ptr ss :
push esi
mov esi, dword ptr ss : //加密长度
mov ebx, esi
shr esi, 0x2
and ebx, 0x3
test esi, esi
push edi
mov edi, dword ptr ss : //加密地址
jbe Label1
Label2:
dec esi
lea eax, dword ptr ds :
xor edx, edx
mov eax,0xA95EDC
div dword ptr ds :
mov eax, dword ptr ds :
add edi, 0x4
mov eax, 0xA90620
mov ecx, dword ptr ds :
add ecx, 0x2E6D23C1
xor eax, ecx
test esi, esi
mov dword ptr ds : , eax
ja Label2
Label1:
xor edx, edx
mov eax, ebx
mov eax, 0xA95EDC
div dword ptr ds :
mov eax, 0xA90620
mov ecx, dword ptr ds :
test ebx, ebx
jbe Label3
lea esp, dword ptr ss :
Label4:
xor byte ptr ds : , cl
inc edi
shr ecx, 0x8
dec ebx
jnz Label4
Label3:
mov eax, dword ptr ss :
imul eax, eax, 0x1F
pop edi
add eax, 0x8088405
pop esi
mov dword ptr ss : , eax
pop ebp
mov eax, 0x1
pop ebx
retn
}
}
这是我用C++写的代码,各位帮忙看一下这里该如何赋值。
我现在一运行这一段注入的程序就崩溃了。可能后边代码也有写的不对的地方
__asm {
push eax
push 加密地址
push 加密长度
mov eax, 0x009bc710
call eax
add esp, 0xC
}
第一层CALL这样调用是可以的,后边的现在想直接运行代码不调用call了,不知道该怎么写。 本帖最后由 kantou 于 2022-8-3 23:27 编辑
剔除掉一些无关代码测试了几个加密数据暂时测试是可以使用的。
并且加入了取密钥和加密地址 加密长度的代码。暂时算是解决了这个问题。
mov eax, 0xc36b40
mov eax,
mov eax,
add eax, 0x1d8 //取密钥
mov ecx, dword ptr ds :
push ebx
push esi
mov esi, 包长
sub esi,0x4 //取加密 长度
mov ebx, esi
shr esi, 0x2
and ebx, 0x3
test esi, esi
push edi
mov edi, 包地址
add edi,0x4 //取加密地址
jbe Label1
Label2 :
dec esi
lea eax, dword ptr ds :
xor edx, edx
div dword ptr ds :
mov eax, dword ptr ds :
add edi, 0x4
mov ecx, dword ptr ds :
add ecx, 0x2E6D23C1
xor eax, ecx
test esi, esi
mov dword ptr ds : , eax
ja Label2
Label1 :
xor edx, edx
mov eax, ebx
div dword ptr ds :
mov ecx, dword ptr ds :
test ebx, ebx
jbe Label3
Label4 :
xor byte ptr ds : , cl
inc edi
shr ecx, 0x8
dec ebx
jnz Label4
Label3 :
pop edi
pop esi
pop ebx
页:
[1]