This is probably something very easy that I'm missing.

I have this operation

length_of_userInput = (signed int)(unsigned __int8)userInput >> 1;

And length_of_userInput is currently reading '4LL', type is __int64.

I'm wondering what is the correct type to give IDA to display '4LL' into a readable int?

I've tried inputting int, long (becomes __int64), and all __ints (int8,16,32) with no success.

This is the assembly:

mov     rax, [rbp+var_6E8]
mov     [rbp+userInputBuffer], rax
mov     rax, [rbp+userInputBuffer]
mov     rcx, [rbp+auth_string_pointer]
mov     [rbp+var_528], rcx
mov     rcx, [rbp+var_528]
mov     [rbp+var_520], rcx
mov     rdx, [rbp+var_520]
mov     [rbp+var_518], rdx
mov     rdx, [rbp+var_518]
mov     [rbp+var_510], rdx
mov     rdx, [rbp+var_510]
movzx   esi, byte ptr [rdx]
and     esi, 1
cmp     esi, 0
mov     [rbp+length_of_userInput], rax
mov     [rbp+var_6F8], rcx

(disclaimer: naming might be wrong. I hope not but I'm not sure :/ )

  • I know I can edit the data type with y. I want to know what data type I should be using. – A. Dandelion Mar 2 at 18:06
  • The actual data type can be known from the corresponding assembly code. Please add that in your question. – Biswapriyo Mar 2 at 18:08
  • @Biswapriyo I added it – A. Dandelion Mar 2 at 18:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.