i'm dissassembling an arm shared object and i'm seeing this line:
iVar1 = SecurityAccess(param_2,SeedEncrypt + 1,0x1);
the SecurityAccess SeedEncrypt is:
int SecurityAccess(int param_1,void *param_2,uint param_3)
and the SeedEncrypt function signature:
uint SeedEncrypt (uint param_1,uint param_2)
As you can see it is a pointer to a function (SeedEncrypt being a function), so my question is, what does the SeedEncrypt + 1 means?
I saw online that you increment the address by the size of the function's return type, and as the SeedEncrypt address is 000a1fd6 and the signature is uint, how should i interpret it?
This the SeedEncrypt function decompiled:
* FUNCTION *
**************************************************************
uint __stdcall SeedEncrypt (uint param_1, uint param_2)
assume LRset = 0x0
assume TMode = 0x1
uint r0:4 <RETURN>
uint r0:4 param_1
uint r1:4 param_2
SeedEncrypt
000a1fd6 83 08 lsrs r3,param_1,#0x2
000a1fd8 59 40 eors param_2,r3
000a1fda 43 08 lsrs r3,param_1,#0x1
000a1fdc 58 40 eors param_1,r3
000a1fde c3 00 lsls r3,param_1,#0x3
000a1fe0 08 1c adds param_1,param_2,#0x0
000a1fe2 58 40 eors param_1,r3
000a1fe4 70 47 bx lr
SeedEncrypt
has a type such asunsigned int*
then+1
means the same asSeedEncrypt[1]
. But the argument itself is passed asvoid*
, which doesn't allow for this sort of pointer arithmetic. So you need to give more context.