eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› vb6 - Как найти где инициализируется (глобальная) переменная/константа ?
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 42.9 (посетитель)
Статус: Участник

Создано: 10 марта 2018 09:47 New!
Цитата · Личное сообщение · #1

Другая проблема)

Есть прога на vb6, не напичкана ничем. Декомпилировал, теперь в Sub Main() нашел переменную (флаг) которая отвечает за версия (демо или полная). В остальных формах проверяется этот флаг, но вот где инициализируется не видно, видно только проверки, типа:

....
loc_00658A6A: If var_9C211A Then
loc_00658AE1: var_eax = %y 'Ignore this '__vbaChkstk
loc_00658B10: var_eax = %y 'Ignore this '__vbaChkstk
loc_00658B49: var_eax = frmDemo.Show 1, var_3D8
loc_00658B51: var_58C = frmDemo.Show 1, var_3D8
loc_00658B90: End If
....

Вопрос - как можно найти место инициализаций var_9C211A ?


Ранг: 1091.6 (!!!!)
Статус: Участник

Создано: 12 марта 2018 03:36 New!
Цитата · Личное сообщение · #2

ну, вероятно, затем, что есть больше одной программы на vb.
У GPcH прилично зашкваров, но в этом он прав: цена на декомпиль не неподъемная, если нужно регулярно копаться в таком коде.

Ранг: 39.4 (посетитель)
Статус: Участник

Создано: 12 марта 2018 04:52 New!
Цитата · Личное сообщение · #3

дайте и мне свои 2 копейки вставить:

difexacaw
когда ты сам разберешь N штук всяко разных vb, то поймешь о чем говорит DrVB_5_6,
конкретно тебе для понимая хватит несколько дней/недель, зависит от разнообразности этих N vb

cryptX
к тому что выдает декомпилятор еще надо писать оригинальный код - гадания и срача будет меньше, результат раньше и лучше

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


Ранг: 37.6 (посетитель)
Статус: Участник

Создано: 12 марта 2018 09:16 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #4

sen пишет:
еще надо писать оригинальный код - гадания и срача будет меньше

Да если бы этот "товарищ" ещё в 1, а не в 14 посте написал, что есть 2 переменные с одинаковым адресом, но с разными префиксами, то получил бы сразу нормальный ответ.
Хотя я ещё во 2 посте дал полный ответ, как надо действовать!
Если б ТС ещё предоставил исходник, то я вчера бы не поленился скачать и поставить последнюю версию VBDecompiler. И всё бы стало предельно ясно!

Специально для GPcH:
Ну не бывает в Visual Basic (5,6) глобальных переменных, есть только переменные модуля.
Возможно, что в последних версиях (пару последних не смотрел) уже всё нормально, тогда вопросов нет.


Ранг: 629.9 (!)
Статус: Участник
Автор VB Decompiler

Создано: 12 марта 2018 12:48 New!
Цитата · Личное сообщение · #5

rmn пишет:
Зачем покупать лицензию


А зачем монтажники покупают дорогой инструмент? Перфораторы, пневмоинструмент стоимостью по полсотни тысяч рублей? Они же сами мастера и руки золотые. По вопросу в топике кстати ни слова нет про взлом. И есть огромный процент вероятности что код исследуется на абсолютно легальной основе (малвара в антивирусной компании или пентест). К слову не раз говорил как получить лицензию бесплатно. Только вот желающих что-то делать - ноль.

DrVB_5_6 пишет:
Ну не бывает в Visual Basic (5,6) глобальных переменных


Переменная объявленная как global в любом модуле - доступна всей программе. Всем модулям, формам и классам. Модули разделены только в рамках исходника. В рамках скомпилированного кода, все модули являются общим доступным отовсюду кодом. Функции из любого модуля могут быть вызваны в любой форме или классе без какого то наследования. Это VB, он не такой как Delphi или C++.

По сути вопроса - ждем файл.

Ранг: 37.6 (посетитель)
Статус: Участник

Создано: 12 марта 2018 13:14 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #6

GPcH пишет:
Переменная объявленная как global в любом модуле - доступна всей программе.

Это верно, точнее, начиная с VB5 используют вместо этого ключевого слова "Public", хотя и с ним прокатит.

Довожу до Вашего сведения, что у модуля могут быть так же "Private" переменные, которые физически располагаются сразу же после Public переменных (это не зависит от того, найтив или р-код). И их не мешало бы различать, чего, похоже, VbDecompiler не умеет. Надеюсь, очевидно, что такие переменные доступны только в том модуле, где они объявлены.

Речь шла об этом. И я прекрасно знаю, что
GPcH пишет:
Функции из любого модуля могут быть вызваны в любой форме или классе без какого то наследования.

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

Кстати, все эти вопросы можем обсудить в личку вечерком, к примеру...


Ранг: 629.9 (!)
Статус: Участник
Автор VB Decompiler

Создано: 12 марта 2018 13:48 New!
Цитата · Личное сообщение · #7

DrVB_5_6

Писать что VB Decompiler что-то определяет или не определяет лучше на конкретном примере а не в общем, основываясь на той или иной старой версии. И если что-то работает не так, как хотелось бы - об этом лучше писать мне напрямую.

Области видимости функций и процедур декомпилятор берет из структуры, описывающей функцию или процедуру. Именно поэтому декомпилятор работает быстро. Для модулей определить Private/Public у функции в большинстве случаев не предоставляется возможным. Вообще поиск функций, входящих в Native модули это целый квест сигнатурного анализа, разделения принадлежности того или иного кода к тому или иному модулю. Область видимости модульных функций в Native Code можно определить только анализом референсов на каждую функцию по всей программе. Я думаю не стоит говорить как быстро это будет работать для сколь нибудь больших проектов и как "часто" это бывает нужно.

К слову референсы декомпилятор уже ищет начиная с версии 10.8.

Ранг: 37.6 (посетитель)
Статус: Участник

Создано: 12 марта 2018 14:13 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #8

GPcH пишет:
Области видимости функций и процедур декомпилятор берет из структуры,

Да вообще тема не об этом. Что ты уезжаешь в сторону.

Речь об области видимости переменных.

Более того, переменных модулей и только!

У ТС были заморочки с тем, что был адрес одинаковый, а префикс разный (var и global).
Я раньше писал, что это было в старых версиях, новые я не смотрел. Я не знаю, что он там мучает.

Я у себя определял префиксы след. видов (как они есть):
1). var_ - локальная переменная процедуры (находится во фрейме этой процедуры).
2). mod_address - переменная уровня модуля, в котором она определяется. Она как раз может быть как "Public" так и "Private". Располагается всегда по тому адресу.

Всё! Других просто нет! Ну можешь обзывать "Public" переменные "global_....", но это должно быть одинаково во всех контекстах.
Проверить я на работе всё равно никак не смогу, так что если и есть что-то, только вечером...


Ранг: 629.9 (!)
Статус: Участник
Автор VB Decompiler

Создано: 12 марта 2018 14:22 New!
Цитата · Личное сообщение · #9

DrVB_5_6 пишет:
У ТС были заморочки с тем, что был адрес одинаковый, а префикс разный (var и global).


Я и говорю - нужен файл. Без него непонятно на чьей стороне ошибка. А с файлом уже будет что всем обсуждать. Я на прошлой странице предположение сделал что это за адрес и откуда.


Ранг: 646.0 (!)
Статус: Участник
ALIEN Hack Team

Создано: 12 марта 2018 19:58 New!
Цитата · Личное сообщение · #10

rmn
А зачем вы тогда взяли ломанный декомпиль? Тогда уже как Клерк говорит - дебаггером пользуйтесь и всё, больше ничё не надо.

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



Ранг: 264.9 (наставник)
Статус: Участник

Создано: 12 марта 2018 20:41 New!
Цитата · Личное сообщение · #11

ARCHANGEL

В обсуждение вроде же элементарного вопроса втянули кучу людей. И лишь из за одного по факту вопроса - какого типа область памяти - R/W.

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

Ранг: 73.2 (постоянный)
Статус: Участник

Создано: 12 марта 2018 21:04 New!
Цитата · Личное сообщение · #12

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

Чувак, да у тебя паранойя..
Может, ТС читает, изучает, анализирует, не плодя не нужных вопросов и пустых анализов..

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



Ранг: 264.9 (наставник)
Статус: Участник

Создано: 12 марта 2018 21:16 · Поправил: difexacaw New!
Цитата · Личное сообщение · #13

sefkrd

Пустой и даже глупый анализ был бы лучше чем его отсутствие. А так весьма похоже на намеренное поднятие анализа. Данная тема основана на отсутствии инфы, при этом она прямая задача при отсутствии исходных данных, я вижу это как какой то сомнительный тест или что такое. И это не паранойя. Сами посмотрите. Просто невозможно такое обсуждать столь долго, без чётких вещёй, семплов или подобного, лишь в случае каких то тестов. Возможно что тс по какой то причине не доступен всё это время, но думаю это даже нет смысла проверять.

Ранг: 73.2 (постоянный)
Статус: Участник

Создано: 12 марта 2018 21:22 New!
Цитата · Личное сообщение · #14

difexacaw пишет:
Пустой и даже глупый анализ был бы лучше чем его отсутствие

Не соглашусь..

Ранг: 37.6 (посетитель)
Статус: Участник

Создано: 12 марта 2018 22:04 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #15

ARCHANGEL пишет:
Тогда уже как Клерк говорит - дебаггером пользуйтесь и всё, больше ничё не надо.


Вообще-то это я ещё во 2 посте (https://exelab.ru/f/index.php?action=vthread&forum=5&topic=25091&page=0#2) написал, что надо просто посмотреть в любом отладчике!

difexacaw пишет:
А так весьма похоже на намеренное поднятие анализа.

Он чаще всего пишет подобный бред!.. Что бы это значило? Может кто-нибудь растолкует!

difexacaw пишет:
В обсуждение вроде же элементарного вопроса втянули кучу людей. И лишь из за одного по факту вопроса - какого типа область памяти - R/W.

Вообще-то надо хотя бы прочитать название темы, из которого следует, что вопрос всего навсего об результатах работы VbDecompiler. Ну надо же быть последним идиотом, чтоб так "перевернуть" вопрос, как это изобразил выше difexacaw. Если выкинуть все его бестолковые (как всегда) посты, останется всего пару постов, где всё уже полностью объяснено!
Не удивлюсь, если дальше начнётся базар про всякие "моторы", то ли "виксы", то ли "фиксики" и прочую хрень, абсолютно не относящуюся к теме.
Уже жалею, что вообще связался с этим "двоешником", надо было, как всегда не обращать на его бестолковые посты внимания, тем более, что он в этой теме примерно, как белый медведь в апельсинах, рассекает.
Думал человек разобраться хочет. Да куда там. Для него название темы-то похоже неподъёмное!!!
Аминь!
P.S. ответ был полностью дан ранее:
DrVB_5_6 пишет:
Если цифры (адрес) совпадают - то это одна и та же переменная уровня модуля, какой бы там префикс бы ни был. (var_9C211A это одно и то же, что global_9C211A).

ТС должен быть счастлив, а обсуждение просто ушло в сторону.
Может ТС объявится и просто закроет топик, пока до "фиксиков" не дошло!!!

Ранг: 73.2 (постоянный)
Статус: Участник

Создано: 12 марта 2018 22:34 · Поправил: sefkrd New!
Цитата · Личное сообщение · #16

DrVB_5_6 пишет:
Может кто-нибудь растолкует!

Хоть толкуй, хоть не толкуй - все равно..

Добавлено спустя 25 минут
cryptX пишет:
Вопрос - как можно найти место инициализаций var_9C211A ?
Ну блин, господа - давайте, примерно, че-нить как DrVB_5_6, и постараться не говнить(как Друзь, в лице difexacaw)


Ранг: 264.9 (наставник)
Статус: Участник

Создано: 13 марта 2018 01:36 New!
Цитата · Личное сообщение · #17

DrVB_5_6

> Он чаще всего пишет подобный бред!.. Что бы это значило? Может кто-нибудь растолкует!

Обьясняю. Есть большое количество всяких тролей, которые запускают такие обсуждения, желательно как можно с большим расскрытием инфы для них. Это позволяет выяснить скрытую инфу, проработать" человека. Учитывая контент подобных ресурсов это всегда должно настораживать.

Именно что использована не определённость, вброс инфы на обсуждение, которую проверить нельзя, а можно лишь с некоторой вероятностью теоретически обсудить как раз и вызывает эти подозрения. Тс в нормальной ситуации мог либо посмотреть отладчиком, либо что то ответить, а так получается что это эти самые тесты.

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

Так что нужно всегда смотреть на автора, а не только на вопрос, который он поднимает.

Добавлено спустя 20 минут
DrVB_5_6

> идиотом, чтоб так "перевернуть" вопрос, как это изобразил выше difexacaw.

На блэк площадках есть обьявки про разработку людей и всякие разные тесты, вы просто не знаете. Поэтому странное поведение вызывает подозрение. Они такое вбрасывают а потом наблюдают. И это не пранойя

Тс должен был ответить в самом начале, дав нужную инфу, он это не сделал и по мойму не просто так. Хотя может я ошибаюсь, тогда сорян, но мне кажется это подозрительным.

Ранг: 37.6 (посетитель)
Статус: Участник

Создано: 13 марта 2018 09:05 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #18

difexacaw пишет:
Поэтому странное поведение вызывает подозрение.

Да хрен с ним! Лично для меня техническая сторона понятна. С апреля 14 года уже не занимаюсь этими вопросами, повспоминал хоть немного...
Даже с GPcH пообщался и в том числе в личке, а не только здесь на форуме. А то всё какие-то другие дела.
Давненько мы с ним не пересекались.
Так что всё отлично! Удовлетворение получил, да и ладно!!!

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


Ранг: 42.9 (посетитель)
Статус: Участник

Создано: 18 марта 2018 21:48 · Поправил: cryptX New!
Цитата · Личное сообщение · #19

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

Code:
  1. text:00700D9F loc_700D9F:                             
  2. .text:00700D9F                                         
  3. .text:00700D9F mov     ecx, dword_9C20F0               
  4. .text:00700DA5 mov     edx, offset off_4A10C4
  5. .text:00700DAA mov     word_9C211A, bx
  6. .text:00700DB1 mov     word_9C212C, bx


окозалось там свитч с 41 кейсами...но vb декомпилер (v10) молчит про это все...буду копать дальше.
Пока что незнаю это результат от CreateObject() или нет....посмотрю и обновлю топик. И да при моем случае декомпилятор "более" нормально работает без опций "Procedure analyze and optimizer", но все равно свитч с кейсами потерен при декомпиляций.

Все разобрался.
9C211A брала свое значение из другой переменный...

Code:
  1. MOV DWORD PTR DS:[9C20D4], EDI


Декомпилятор не смог найти место присвоения (9C211A = 9C20D4)
Тема закрыта, спасибо всем.
<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› vb6 - Как найти где инициализируется (глобальная) переменная/константа ?
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS