您可以看到它具有用于此功能的解密密码参数。
功能反汇编:
sub_401350 proc near ; CODE XREF: sub_4013F0+28Ep
; sub_4013F0+2D2p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = byte ptr 18h
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_401366
loc_40135D: ; CODE XREF: sub_401350+46j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_401366: ; CODE XREF: sub_401350+Bj
mov ecx, [ebp+var_4]
cmp ecx, [ebp+arg_4]
jnb short loc_401398
mov edx, [ebp+arg_0]
add edx, [ebp+var_4]
movsx ecx, byte ptr [edx]
mov eax, [ebp+var_4]
xor edx, edx
div [ebp+arg_C]
mov eax, [ebp+arg_8]
movsx edx, byte ptr [eax+edx]
movzx eax, [ebp+arg_10]
add edx, eax
xor ecx, edx
mov edx, [ebp+arg_0]
add edx, [ebp+var_4]
mov [edx], cl
jmp short loc_40135D
.text:00401398
loc_401398: ; CODE XREF: sub_401350+1Cj
mov esp, ebp
pop ebp
retn 14h
sub_401350 endp
此功能在其他地方也被调用。我的目标是使用其他一些参数调用此函数以解密其他内容并查看内容。
我该如何实现?如何使用python或任何其他方式使用其他一些参数调用此函数?谢谢。
#1 楼
有点不合常规,但是我个人倾向于使用Cheat Engine来处理诸如此类的“快速”操作。写入以将所需的数据移动到应传递给被调用方的任何寄存器/内存中,然后跟踪调用以查看结果。如果该函数是共享的,并且有时在您无法控制的范围内执行,则只需在代码注入中使用call
指令即可让代码仅在满足特定条件时才运行。您的注射可能如下所示://--Allocate memory page in address space of application
alloc(newmem,2048,"application.exe"+40167E)
//--Create labels for your code
label(returnhere)
label(originalcode)
label(exit)
//--This is where your custom code would go
newmem:
//Maybe pop unwanted values off stack
//Then push your custom values onto stack
//--This is the CALL you hooked which will now run
originalcode:
call sub_401350
//--Jump to exit code injection
exit:
jmp returnhere
//--This hooks the CALL and injects a jump to your allocated memory
"application.exe"+40167E:
jmp newmem
//--Exit label jumps here, returning you to normal execution
returnhere:
这里的视频大致演示了通过作弊引擎进行这种类型的注射的样子。
评论
请内嵌图片,甚至最好粘贴代码这是代码pastebin.com/yUt13qSL
我打算把它放在体内,看编辑。最好将内容保留在此站点上,因为外部链接可能会消失。
在[ebp + x]中,x应该是指针移到ebp以外的十六进制偏移量,除非包含它的整个(ebp + x),否则我不知道密码是怎么回事。