Сейчас на форуме: asfa, _MBK_, Adler (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Результат декомпилирования Hex-Ray
Посл.ответ Сообщение

Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 22 декабря 2011 16:05
· Личное сообщение · #1

Декомпилировал процедуру, в результате получил такой код:
Code:
  1.         v15 = System::__linkproc____llushr(v167, v168, 63 - v14 - 8 * v13);
  2.         v166 |= (v15 & 1) << v12++;

помогите перевести на delphi, можно настроить Hex-Ray чтобы генерировался код не оптимизированный, а развернутый????




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 22 декабря 2011 16:48 · Поправил: PE_Kill
· Личное сообщение · #2

Прога на делфи/си билдере.

llushr - расшифровывается как long long unsigned shift right, т.е. на делфи это
var
v167_v168: UInt64;
v15 : Cardinal;
v166 : Cardinal;
begin
v15 := v167_v168 shr (63 - v14 - 8 * v13);
v166 := v166 or (v15 and 1) shl v12;
v12 := v12 + 1;
end;

Дальше уже оптимизировать некуда, только если знать досконально алгоритм. Так что Hex-Ray тут сработал на 5+, оптимизировать нечего.

-----
Yann Tiersen best and do not fuck


| Сообщение посчитали полезным: yanus0

Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 22 декабря 2011 20:55
· Личное сообщение · #3

PE_Kill
Спасибо большое, вот еще с таким столкнулся, как перевести:
Code:
  1.     LOWORD(v45) = HIWORD(v73);
  2.     LOWORD(v43) = v73;




Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 22 декабря 2011 21:04
· Личное сообщение · #4

WORD v45 = (v73 >> 16) & 0xFFFF;
WORD v43 = v73 & 0xFFFF;

из dword делается два word

-----
...или ты работаешь хорошо, или ты работаешь много...


| Сообщение посчитали полезным: yanus0

Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 23 декабря 2011 09:17
· Личное сообщение · #5

очень похоже не QuickSales ;)



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 23 декабря 2011 11:21
· Личное сообщение · #6

drone
я кейгенил последний квиксэйлс летом, нет там такого. Хотя, может новая версия...

-----
SaNX




Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 23 декабря 2011 12:26
· Личное сообщение · #7

drone пишет:
очень похоже не QuickSales ;)

Близко, но нет




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 декабря 2011 17:56 · Поправил: PE_Kill
· Личное сообщение · #8

BfoX пишет:
WORD v45 = (v73 >> 16) & 0xFFFF;

При сдвиге вправо, слева и так будут нули, & 0xFFFF тут лишнее.

BfoX пишет:
WORD v43 = v73 & 0xFFFF;

Здесь тоже лишнее, при присвоении 2 байтовой переменной 4 байтовой, компилятор сам срежет левую часть.

yanus0 пишет:
LOWORD(v45) = HIWORD(v73);
LOWORD(v43) = v73;

Если в Delphi то будет так:
var
v43, v45, v73 : Cardinal;

begin
v73 := $12345678;
PWord(@v45)^ := v73 shr 16;
PWord(@v43)^ := v73;
end;

-----
Yann Tiersen best and do not fuck




Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 26 декабря 2011 11:51
· Личное сообщение · #9

yanus0, ну простите, SalesExpert


 eXeL@B —› Вопросы новичков —› Результат декомпилирования Hex-Ray
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати