наблюдайте объект класса в адресе памяти на Visual Studio

Чтобы изменить ваши биты, вы можете использовать следующий код.

static int rev(int v){
  // swap adjacent pairs of bits
  v = ((v >> 2) & 0x3333) | ((v & 0x3333) << 2);
  // swap nibbles
  v = ((v >> 4) & 0x0f0f) | ((v & 0x0f0f) << 4);
  // swap bytes
  v = ((v >> 8) & 0x00ff) | ((v & 0x00ff) << 8);
  return v;
}

Реализация MIPS состоит из 15 инструкций.

rev: # value to reverse in $01
     # uses $02 reg
   srli $02, $01, 2
   andi $02, $02, 0x3333
   andi $01, $01, 0x3333
   slli $01, $01, 2
   or   $01, $01, $02
   srli $02, $01, 4
   andi $02, $02, 0x0f0f
   andi $01, $01, 0x0f0f
   slli $01, $01, 4
   or   $01, $01, $02
   srli $02, $01, 8
   andi $02, $02, 0xff
   andi $01, $01, 0xff
   slli $01, $01, 8
   or   $01, $01, $02
   # result in $01

Обратите внимание, что вы можете одновременно обратить 2x16 бит, просто удвоив константы (и даже 4 на 64-битных машинах). Но я не уверен, что это полезно в вашем случае.

6
задан Cœur 16 December 2017 в 13:14
поделиться

2 ответа

просто слепое предположение: попробуйте (myDLL! MyClass *) (0x0012ECE0)

другой вопрос, как убедиться, что это адрес вашего объекта?

в качестве примечания, попробуйте windbg - так проще искать объекты вокруг вашей памяти / стека.

6
ответ дан 16 December 2019 в 21:45
поделиться

This might not help with the user dump you've got now, but for future user dumps, set the Optimisation setting "Omit frame pointers" to No. This helps with "this" pointers and local vars.

1
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: