Сейчас на форуме: vsv1 (+3 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Вывод пароля в сообщении методом замены |
Посл.ответ | Сообщение |
|
Создано: 29 февраля 2008 19:33 · Личное сообщение · #1 Начну сначала чтобы было понятно всем... Как то сидел на работе и делать было нечего решил сыграть в 1000, но забыл пароль новый профиль создавать не хотелось и решил ламануть пароль оллей... Все прошло нормально я пароль узнал и после этого у меня появилась идея чтобы изменить игру так чтобы при вводе неправильного пароля, вместо сообщения "Неверный пароль" выскакивал правильный пароль... Значит ситуация такова ecx - там храниться правильный пароль edx - введеный пароль после этого вызывается функция сравнения, если пароли равны то eax = 0, если нет то eax = 1 потом идет сравнения cmp eax,1 И если пароли равны идет переход, если нет выполнения продолжается, и идет вывод сообщения код следующий pop -1 pop 30 pop 3B call ; вызов MessageBox я заменил след образом: pop -1 pop ecx pop 3B call ; вызов MessageBox nop так как pop ecx 1 байт а pop 30 2 байта я в конце добавил ноп... но в том месте где должно бюыть сообщение программа выходит я так понимаю потому что я поместил значения регистра? как можно сделать по другому или обойти это? или проблема в другом? ![]() |
|
Создано: 29 февраля 2008 19:48 · Личное сообщение · #2 |
|
Создано: 29 февраля 2008 20:12 · Поправил: HiEndsoft · Личное сообщение · #3 asmdk пишет: cmp eax,1 И если пароли равны идет переход, если нет выполнения продолжается, и идет вывод сообщения код следующий pop -1 Ну и сделай в этом месте безусловный переход по EB. Тебе зачем параметры MessageBox'a менять-то в стеке, тем более хз на что, тем более что ты pop с push путаешь? А если тебе неймется перемести код мессаджбокса вверх после него воткни безусловный переход, найди в ресурсах строку и отредактируй ее. ----- продавец резиновых утёнков ![]() |
|
Создано: 29 февраля 2008 20:52 · Поправил: asmdk · Личное сообщение · #4 бля ошибся вместа push pop Написал, мне надо отредактировать строку не просто а тчобы выводила то что на тот момент в ecx, т е пароль.......... а не просто заменить ваня на петя! Было так push -1 push 30 push 3B call ; вызов MessageBox я заменил след образом: push -1 push ecx ; тут выводило сообщения я заменил чтобы выводило пароль так как он в ecx push 3B call ; вызов MessageBox nop и мне не надо ее убирать я хочу если я вожу правильный пароль программа работала дальше как и должна, если ввожу неправильны писала не "Неверный пароль" а сам пароль например "qwert" ![]() |
|
Создано: 29 февраля 2008 21:01 · Поправил: Archer · Личное сообщение · #5 |
|
Создано: 29 февраля 2008 21:10 · Личное сообщение · #6 |
|
Создано: 01 марта 2008 09:34 · Личное сообщение · #7 asmdk пишет: push -1 push ecx ; тут выводило сообщения я заменил чтобы выводило пароль так как он в ecx push 3B call ; вызов MessageBox Что это за фигня такая. Вызов MessageBoxA? Он вообще-то должен выглядеть иначе: push Флаги (MB_OK и т.п.)
Хендл окна (он же дескриптор) система присваивает динамично (каждый запуск новый хендл). Если ты зафигачишь туда 0, то работать это всё будет только если породившее окно не пойдёт обрабатывать сообщения. То есть достаточно мышкой на родителя щёлкнуть и всё улетит в даун. ----- Всем привет, я вернулся ![]() |
|
Создано: 01 марта 2008 12:29 · Личное сообщение · #8 |
|
Создано: 01 марта 2008 13:15 · Личное сообщение · #9 Когда стоишь на call'е, зыркни в стек, там все должно быть, как Bitfry написал. И это вызов не самого месажа, а какой-то функи, которая показывает уже сообщение, может она там не MessageBoxA юзоет, а? Может это вообще дельфя? з.ы. 1. удали гавновисту ![]() ----- invoke OpenFire ![]() |
|
Создано: 01 марта 2008 14:30 · Поправил: asmdk · Личное сообщение · #10 |
|
Создано: 01 марта 2008 15:03 · Личное сообщение · #11 зашел ва ту функцию порывшись там нашел вызов этого сообщения но проблема в том что реальный пароль уже удаляется из регистра, и помоему все регистры используется куда я его могу записать, вот скрин выхова функцыи......... 1 скрин вызова функции MessageBox, второй вход в функцію і там дальше ідет выхов MessageBoxEx после которого и выскакивает сообщение...... ![]() ![]() |
|
Создано: 01 марта 2008 15:50 · Личное сообщение · #12 asmdk Как вариант, можешь попробовать сделать снифер. Если ты знаешь регистр, и место в программе, где осуществляется передача сгенерированного серийника, то это будет вполне логичным решением. Ниже линк на закачку тутора, где приводится пример такого снифера filesurf.ru/30384 ----- Программист SkyNet ![]() |
|
Создано: 01 марта 2008 16:06 · Личное сообщение · #13 |
|
Создано: 01 марта 2008 18:44 · Личное сообщение · #14 |
|
Создано: 03 марта 2008 10:43 · Личное сообщение · #15 |
|
Создано: 04 марта 2008 19:04 · Личное сообщение · #16 |
|
Создано: 04 марта 2008 22:04 · Личное сообщение · #17 |
|
Создано: 05 марта 2008 20:57 · Личное сообщение · #18 |
|
Создано: 05 марта 2008 22:34 · Личное сообщение · #19 Ну а что именно подробней то? Мона юзать функу АПИ sprintf, читай мсдн, как её юзать. Сложность будет в том, что эту функу придёццо добавлять руками в таблицу импорта, если её там нету. Вариант второй-дёрнуть алго перевода из гексов в представление гексов в АСКИИ, это на асме вполне можно нагуглить или написать самому, благо, там мало. Сложность будет вставить это где-то в свободном месте, а потом соединить джампами. Если прога твоя, то все эти сложности отпадают. ![]() Я бы на твоём месте взялся за второй метод лучше. Потыкай сам чо-нить, погугли и задавай конкретный вопрос. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Вывод пароля в сообщении методом замены |