我正在尝试了解有关事物如何工作的一些算法。这是我用 Hey Rays 反编译我的可执行文件得到的函数。
我想运行这个函数来查看结果,然后了解它是如何工作的。
所以我首先想知道这个函数的所有签名是什么意思?
__usercall sub_401960<eax>(int a1<edi>)
__usercall
eax and diamond <>
edi and diamond <>
然后我想知道这些东西是什么意思:
*(_BYTE *)
和
__security_cookie
以及他们在以下代码中所做的事情:
#include <stdio.h>
#include <stdlib.h>
int __usercall sub_401960<eax>(int a1<edi>)
{
int result; // eax@1
signed int v2; // esi@1
char v3; // cl@2
char v4; // cl@3
char v5; // cl@8
char v6; // cl@9
char v7; // cl@14
char v8; // cl@15
char v9; // cl@20
char v10; // cl@21
result = 0;
v2 = 0;
do
{
v3 = *(_BYTE *)(v2 + a1);
if ( (unsigned __int8)(v3 - 48) > 9u )
{
if ( (unsigned __int8)(v3 - 97) > 5u )
{
if ( (unsigned __int8)(v3 - 65) > 5u )
return result;
v4 = v3 - 55;
}
else
{
v4 = v3 - 87;
}
}
...
return result;
}
对不起,如果我问过这样的新手问题
我想要的是运行的东西!