Тренер для игры. Работа с памятью.

Тема в разделе "WASM.BEGINNERS", создана пользователем Crazy_Byte, 11 май 2006.

  1. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Здравствуйте уважаемые программеры! Я совсем недавно начал изучать Ассемблер. В И-нете я нашел исходник так-называемого - трейнера для игр. Вот исходник :



    []



    то программа не изменяет значение адреса типа - 4 байта с точкой (например значение в адресе - 008АС123 = 123456.00), но работает когда адрес просто... например 4 байта, 2 байта...

    Вот такая проблема...

    Подскажите пожалуйстса как решить данную проблему.

    Спасибо!
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Ты числа с плавающей точкой хочешь использовать?
     
  3. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Вообщем да...

    Помогите пожалуйста! Очень нужно знать как это делается.
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    А так не пробовал?

    dd 12356.0
     
  5. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Возможно не правильно понял суть проблемы, но числа с плавающей точкой в масме лучше обозначать не DWORD, а REAL4, REAL8 и REAL10.

    P.S. И вообще для таких чисел лучше использовать fasm, т.к. там работа с дробными числами абсолютна прозрачна (mov eax, -0.6)
     
  6. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Спасибо всем за советы!

    Я попробовал сделать так как сказал Crypto, но все равно не получается, значение не изминяется.

    Я так понимаю dd - это dword??? А как обозначаются числа REAL4, REAL8 и REAL10???
     
  7. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    1. Да, dd = DWORD.

    2. Так и обозначаются:

    .data

    num1 dd 0

    num2 REAL4 0.4

    num3 REAL8 -0.3

    ...
     
  8. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Не... Чета не получается... Пробовал по разному но все равно значение в адресе не меняется. :dntknw:

    А подскажите пожалуйста, может нужно обозначать эти числа не как dword, real4, real8, real10 - а просто как байт, в том смысле что например как в Delphi -
    Код (Text):
    1.  
    2. num_1 : byte;
    3.  


    И как в masm'е обозначается byte?

    Спасибо?
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Что-то не врубаюсь. А может тебя работа с элементами структур в ассемблере интресует? Попробуй более четко сформулировать твой вопрос.
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    num_1 db ?



    А вообще, напиши внятнее.
     
  11. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15


    Короче мне нужно изменить в памяти процесса значение одного адреса. Тип этого значения - 4 байта с точкой. Надеюсь вы слышали о такой программе -ArtMoney называется, так вот там я нашол один адрес который мне нужен, и в этой же программе написан тип значения этого адреса, 4 байта с точкой (зн. 99999.00).

    Как изменить значение адреса в памяти, тип которого - 4 байта с точкой???

    Вот исходник программы которая изменяет значение в адресе. Но почему-то она не изменяет то значение которое мне нужно (4 байта с точкой), но прекрасно работает со значениями тип которых 4 байта, 2 байта (без этих еб**** точек :dntknw: ).



    []



    Спасибо.
     
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    А тебе надо изменить значение в статике (т.е. в самом коде, который будет выполняться) или в динамике (в процессе выполнения программы)?
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Crazy_Byte

    Второй раз постишь громадные куски кода, потрудись оформить сообщения. И ругаться здесь запрещено.





    Советую почитать основы по программированию ассемблера.

    Вообще, это не "4 байта с точкой", а просто 4 разрядное число с плавающей запятой.



    Для его записи достаточно будет написать num_1 dd 99999.00. В коде оно будет выглядеть как 47C34F80h, но это тебя пока не должно беспокоить (пока статьи/книги не прочтёшь).




    Код (Text):
    1. mov  eax,num_1       ; 99999.00
    2. mov  edx,[pMemAddr]  ; адрес, который нужно изменить
    3. mov  [edx],eax
     
  14. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Ok! Спасибо большое. Я попробую.
     
  15. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Извиняюсь конечно... но это снова я.

    IceStudent, мне нужно изменить зн. адреса в чужом процессе, а тот код который ты написал кажется изменяет его в своем собственном процессе. Спасибо конечно... но это не то.

    Наверно я уже задолбал здесь всех своими вопросами... но тем не менее, помогите пожалуйста начинающему, разобраться в исходнике, т.е. подправить там пару строк чтоб прога могла изменять зн. 4-х разрядное число с плавающей запятой, если вам не трудно конечно.

    Я всетаки рискну... и кину в 3-й раз исходник програппки...

    Извините еще раз...
     
  16. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
  17. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Чувак, это все конечно хорошо, но траффик тоже не резиновый.

    Чтобы твои сообщения не обрезались, учись делать аттачи.
     
  18. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Crazy_Byte

    Ну когда же некоторые товарищи научатся достаточно четко формулировать свои вопросы? Чем длиннее вопрос, тем меньше желающих в него вникать и, соответственно, отвечать.
     
  19. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Crazy_Byte



    Кто не рискует, тот не пьёт шампанское, но в нашем случае у тебя есть неплохие шансы заработать бан.







    masm:

    invoke WriteProcessMemory(hProcess, pMemAddr, addr num_1, 4, addr tmp
     
  20. Crazy_Byte

    Crazy_Byte New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    15
    Ok Спасибо! Я попробую.

    Еще раз извиняюсь...