Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   GlobalMemoryStatus и ОЗУ 4 гб (https://forum.antichat.xyz/showthread.php?t=145174)

fire64 02.10.2009 17:39

GlobalMemoryStatus и ОЗУ 4 гб
 
при запуске программы на компьютере с 4 гигами памяти появлялось ошибка

"Available memory less than 15mb!!! -1310720"

декомпиляцуия позволила узнать причину

GlobalMemoryStatus возвращает отрицательное количество памяти

PHP код:

  struct _MEMORYSTATUS Buffer// [sp+18h] [bp-20h]@1

  
Buffer.dwLength 32;
  
GlobalMemoryStatus(&Buffer);
  
v0 Buffer.dwTotalPhys;
  
dword_2042D298 Buffer.dwTotalPhys;
  if ( (
signed int)Buffer.dwTotalPhys 15728640 )
  {
    
sub_20101560((int)"Available memory less than 15MB!!! %i\n"SLOBYTE(Buffer.dwTotalPhys));
    
v0 Buffer.dwTotalPhys;
  } 


[QwyZ] 02.10.2009 18:20

i?

fire64 02.10.2009 18:26

вопрос как сделать так что бы не было ошибки ?

Ra$cal 02.10.2009 18:35

вариант номер раз - пропатчить переход, чтобы управление никогда не попадало в этот блок
вариант два - изменить код проверки, сделав сравниваемые числа беззнаковыми.
еще можно вообще убить вызов GlobalMemoryStatus. Вообще все ограничивается только фантазией. Или не понятно как это сделать технически? Hiew и прочие hex редакторы с поддержкой дизассемблирования.

M_script_ 02.10.2009 19:03

вариант номер три - запостить тему вместе с линком на программу в разделе "Реверсинг"

fire64 02.10.2009 21:44

всем спасибо уже сам разобрался

заменил JGE на JMP и тем самым обошел проверку


Время: 22:48