Сейчас на форуме: vsv1 (+3 невидимых)

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

Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 байта я в конце добавил ноп...
но в том месте где должно бюыть сообщение программа выходит
я так понимаю потому что я поместил значения регистра? как можно сделать по другому или обойти это?
или проблема в другом?



Ранг: 110.7 (ветеран)
Активность: 0.070
Статус: Участник
~ tPORt ~

Создано: 29 февраля 2008 19:48
· Личное сообщение · #2

asmdk пишет:
pop -1
pop 30
pop 3B
call ; вызов MessageBox

если вы так и делали то прийдет капут стэку т.к. push!=pop



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 29 февраля 2008 20:12 · Поправил: HiEndsoft
· Личное сообщение · #3

asmdk пишет:
cmp eax,1
И если пароли равны идет переход, если нет выполнения продолжается, и идет вывод сообщения
код следующий
pop -1

Ну и сделай в этом месте безусловный переход по EB. Тебе зачем параметры MessageBox'a менять-то в стеке, тем более хз на что, тем более что ты pop с push путаешь?
А если тебе неймется перемести код мессаджбокса вверх после него воткни безусловный переход, найди в ресурсах строку и отредактируй ее.

-----
продавец резиновых утёнков




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 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"




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 февраля 2008 21:01 · Поправил: Archer
· Личное сообщение · #5

Возьми погоняй в ольке да посмотри, почему падает. НОП у тебя как-то странно лежит после колла, должен по идее сразу после короткого пуша лежать, т.е. надо заменить было 2 байта и всё. Топик поехал в новички.



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 февраля 2008 21:10
· Личное сообщение · #6

нет сразу я просто заменил, и ноп был послу пуша, но она не работало потом я ноп переместил после колла думал что мб из за этого но все равно не помогло.......



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 01 марта 2008 09:34
· Личное сообщение · #7

asmdk пишет:
push -1
push ecx ; тут выводило сообщения я заменил чтобы выводило пароль так как он в ecx
push 3B
call ; вызов MessageBox

Что это за фигня такая.
Вызов MessageBoxA?
Он вообще-то должен выглядеть иначе:
push Флаги (MB_OK и т.п.)
push Заголовок (допустим, указатель на строку "Password:",0)
push Текст (указатель на строку с паролем)
push дескриптор окна, которое порождает бокс
call MessageBoxA

Хендл окна (он же дескриптор) система присваивает динамично (каждый запуск новый хендл). Если ты зафигачишь туда 0, то работать это всё будет только если породившее окно не пойдёт обрабатывать сообщения. То есть достаточно мышкой на родителя щёлкнуть и всё улетит в даун.

-----
Всем привет, я вернулся




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2008 12:29
· Личное сообщение · #8

чтобы все было понятно посмотрите скрин.......

33fc_01.03.2008_CRACKLAB.rU.tgz - 1000.JPG




Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 01 марта 2008 13:15
· Личное сообщение · #9

Когда стоишь на call'е, зыркни в стек, там все должно быть, как Bitfry написал. И это вызов не самого месажа, а какой-то функи, которая показывает уже сообщение, может она там не MessageBoxA юзоет, а? Может это вообще дельфя?

з.ы. 1. удали гавновисту 2. включи подсветку кода в ольке

-----
invoke OpenFire




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2008 14:30 · Поправил: asmdk
· Личное сообщение · #10

не это 100% месайдж бокс, это видно из другого кода, попробую в колл зайти и посмотреть что там...
Просто как я читал при вызове процедуры коллам данные берутся из стека в обратном порядке, поэтому я и подумал что они к этому месейджу........
з.ы. Это не виста а XPize v4.6



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2008 15:03
· Личное сообщение · #11

зашел ва ту функцию порывшись там нашел вызов этого сообщения но проблема в том что реальный пароль уже удаляется из регистра, и помоему все регистры используется куда я его могу записать, вот скрин выхова функцыи......... 1 скрин вызова функции MessageBox, второй вход в функцію і там дальше ідет выхов MessageBoxEx после которого и выскакивает сообщение......

3ed8_01.03.2008_CRACKLAB.rU.tgz - 1000.rar




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 01 марта 2008 15:50
· Личное сообщение · #12

asmdk
Как вариант, можешь попробовать сделать снифер. Если ты знаешь регистр, и место в программе, где осуществляется передача сгенерированного серийника, то это будет вполне логичным решением. Ниже линк на закачку тутора, где приводится пример такого снифера filesurf.ru/30384

-----
Программист SkyNet





Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 01 марта 2008 16:06
· Личное сообщение · #13

Ну так смотри по какому адресу хранится праильный пасс и заменяй push %)

-----
invoke OpenFire




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2008 18:44
· Личное сообщение · #14

снифер попробую, а храниться он в регистре но до вызова сообщения там происходит еще пару функций в процесе которых он удаляется




Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 03 марта 2008 10:43
· Личное сообщение · #15

asmdk пишет:
а храниться он в регистре

Пароль в стеке хранится, а не в регистре. По адресу 0x0012EFFC.

-----
invoke OpenFire




Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 марта 2008 19:04
· Личное сообщение · #16

сенкс сейчас будук разбираться со всем...
И вот еще тогда 1 вопрос...
делал программу на масме значит там происходят какие то вычисления в регистрах и потом мне надо вывести значение регистра в меседже боксе, тока в шеснадцатиричном виде, а то получается просто в аски какой то бред.............




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 04 марта 2008 22:04
· Личное сообщение · #17

asmdk пишет:
вывести значение регистра ... в шеснадцатиричном виде

Можешь заюзать АПИ sprintf, можешь написать сам процедурку по преобразованию, в любом случае понадобиццо место свободное, чтоб вставлять свой код.



Ранг: 1.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 марта 2008 20:57
· Личное сообщение · #18

а поподробнее это я уже говорю про совсем другую прогу, т е там я сам могу делать что хочу.........




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 05 марта 2008 22:34
· Личное сообщение · #19

Ну а что именно подробней то? Мона юзать функу АПИ sprintf, читай мсдн, как её юзать. Сложность будет в том, что эту функу придёццо добавлять руками в таблицу импорта, если её там нету.
Вариант второй-дёрнуть алго перевода из гексов в представление гексов в АСКИИ, это на асме вполне можно нагуглить или написать самому, благо, там мало.
Сложность будет вставить это где-то в свободном месте, а потом соединить джампами. Если прога твоя, то все эти сложности отпадают.
Я бы на твоём месте взялся за второй метод лучше. Потыкай сам чо-нить, погугли и задавай конкретный вопрос.


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


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