Tetstack
236 subscribers
1.07K photos
32 videos
36 files
150 links
Download Telegram
so still this only computes number from whatever string I typed
undefined8 FUN_001011f0(void) {
int iVar1;
ostream *poVar2;
long in_FS_OFFSET;
int local_7c;
undefined1 *local_78;
long local_70;
undefined1 local_68 [16];
string local_58 [40];
long local_30;

local_30 = *(long *)(in_FS_OFFSET + 0x28);
local_78 = local_68;
local_68[0] = 0;
local_70 = 0;
poVar2 = std::operator<<((ostream *)std::cout,"Enter a string of characters (no spaces): ");
FUN_00101430(poVar2);
std::operator>>((istream *)std::cin,(string *)&local_78);
if (5 < local_70 - 5U) {
std::operator<<((ostream *)std::cout,"Bro, what are you trying to do?");
FUN_00101430();
/* WARNING: Subroutine does not return */
exit(0);
}
poVar2 = std::operator<<((ostream *)std::cout,"Enter correct number (no spaces): ");
FUN_00101430(poVar2);
std::istream::operator>>((istream *)std::cin,&local_7c);
std::__cxx11::string::string(local_58,(string *)&local_78);
iVar1 = FUN_001014b0(local_58);
std::__cxx11::string::_M_dispose();
if (local_7c == iVar1) {
poVar2 = std::operator<<((ostream *)std::cout,"OMG! You did it! :3");
}
else {
poVar2 = std::operator<<((ostream *)std::cout,"Send help pls.");
}
FUN_00101430(poVar2);
std::__cxx11::string::_M_dispose();
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
return 0;
}
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}

so which means I missed smthing here
so I finalized it to this code that's the logic I suppose if you enter any character longer than 5 it exits with that message and then the next one is the number you type must be equal to the checksum of your string..
Tetstack
Photo
the check sum is this the comments for simplification ...
time to try it
so wait
ghidra did unsigned substraction so .... local_70 is the string length, the expression length_70 - 5U is unsigned
this underflows to a huge number, which is >5, so the real condition is local_70 <5
so wait
the range is 5 to 10
as 6 or 7, 8, 9, 10 -5 are in range and true on the 5 < (local_70 -5U)
Give me a bit of time I am done with a and to go for the rest ....
Had to use a calculator
So for the string "abcde" the number is "734". Try it and it works
This media is not supported in your browser
VIEW IN TELEGRAM
the value to find table[i] from 15 address
So this is the whole logic of the code revision engineered I will post the full writeup maybe tmrw.
Good night
I am happy today