c - 反转时我在循环和参数方面遇到了一些问题

标签 c reverse-engineering

首先是关于我在反向sub_804851C((int)aThepasswordise, &s1);时得到的变量.基本上函数将一个值与输入进行比较,但问题是aThepasswordise的值是一个类似 HeyIAmNoob 的字符串那么(int)aThepasswordise的值(value)是多少? ?

其次我得到了这样一个循环

for ( result = *(unsigned __int8 *)a1; (_BYTE)result; result = (unsigned __int8)*v2 )

我不明白这个循环的最后一个值和跳转是什么? 非常感谢,抱歉,因为我的英语不好

最佳答案

关于第一个问题。

C 中的字符串是 char\0 结尾的序列.
aThepasswordise可能是指向此类序列的指针,因此将其转换为 int将为您提供指针的值 int

在循环中,您首先获取第一个字节 a1指向。 然后 result如果 var 是 0,则进行比较在每次迭代中,result更改为 v2 的第一个字节.

跳转由where v2的变化决定是指向,它是如何在每次迭代中改变的。

关于c - 反转时我在循环和参数方面遇到了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53156968/

相关文章:

c++ - 在 C++ 中查找函数的地址

c++ - 使用 Cuda C 将大型二维数组导出到文件的更快方法

c - 在c中打印出数据文件是完全错误的

C 中的循环移位,意外行为

android - 检测 Apk 中的代码篡改

c - MIPS 到 C 的翻译

c - 为什么 mmap() 在 1TB 稀疏文件上因 ENOMEM 而失败?

检查 POSIX 共享内存对象大小

assembly - 炸弹实验室阶段_4