【问题标题】:I have some problem with loop and argument when reversing倒车时循环和参数有一些问题
【发布时间】:2019-04-08 23:09:05
【问题描述】:

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

第二次我得到了这样的循环

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

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

【问题讨论】:

标签: c reverse-engineering


【解决方案1】:

关于第一个问题。

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

在循环中,首先获取a1 指向的第一个字节。 然后比较result var 是否为0,并在每次迭代时将result 更改为v2 的第一个字节。

跳转将取决于v2 指向的位置的变化以及每次迭代时如何变化。

【讨论】:

  • 所以在我的第一个问题中,值将是字符串的偏移地址对吗?
  • @DŨNGĐỖ 好吧,如果字符串定义为char* aThepasswordise = "Some Str";,那么(int) aThepasswordise 将为您提供int 的地址。通常,地址是具有处理器字大小的整数。所以你应该得到这个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多