Как в hex найти текст

The Find command is used to locate specific pattern in a file. The Find Window is used to specify the pattern to search for, as well as a number of additional options.

Complexity: linear-time.

Find Operations

When the pattern is found, the cursor is moved to the beginning of a match. To continue searching, execute the Find » Find Next or Find » Find Previous commands. The direction of find depends on whether the Search up or Search down option is selected in a Find Window:

Operation Search down Search up
Find Next Forward Backwards
Find Previous Backwards Forward

If pattern is not found in the remaining part of the document, the message box is displayed and find is terminated.

Regular Expressions

The Find command fully supports regular expressions. To search using regular expressions, select either “ASCII string (char[])” or “UNICODE string (wchar_t[])” pattern type, enter the regular expression, make sure the Regular expression checkbox is checked and enter the sub-expression number you want to search for. Sub-expression 0 represents the expression itself.

If the match is found, the cursor is moved to the beginning of the matched expression or sub-expression. When you use the Find Next command to find the next match, the search is started from the next cell, not the end of the matched expression.

Take the following limitations into account:

  • Searching with regular expressions backwards is not supported.
  • Searching with regular expressions within a selection (either single-range, or multiple) is not supported.

Scripting

Scripts are provided with the following methods to execute the find operations:

  • IDocumentView.findAsync
  • IDocumentView.findRegExpAsync
  • IDocumentView.findNextAsync
  • IDocumentView.findPrevAsync

  • 2 Фев 2006

Как найти нужную ячейку в NEX редакторе?
Нужно прочитать содержимое конкретного адреса.Для примера адрес 0025, и его содержимое в десятичном формате.Разжуйте пожалуйста… :cry:

  • 6 Фев 2006

Если в NEX редакторе, то зачем тебе десятичный формат — все цифры шеснадцатеричные (HEX), если надо переведи в десятичные в калькуляторе.
Твоя строка (если в HEX формате) будет выглядеть так:
…….
0020 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0030 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
…….
…….
0020 — адрес, значения в 16-ти ячейках произвольные, но я поставил в них адреса которым они соответствуют.
Твоя ячейка с адресом 0025 — имеет значение 05 .
Если еще непонятно то:
0020 00
0021 01
0022 02
0023 03
0024 04
0025 05 — она твоя
0026 06
0027 07
0028 08
0029 09
002A 0A
002B 0B
002C 0C
002D 0D
002E 0E
002F 0F
и т.д.
Всего доброго.

  • 6 Фев 2006

Более наглядно :)

1_154.jpg

  • 20 Фев 2006

Спасибо! Поковырялся,разобрался,нашел где » собака зарыта «.

  • 23 Окт 2006

:help: Где можно скачать nex редактор.

  • 23 Окт 2006

Bano, наверно не «nex редактор», а HEX-редактор …
Их в инете полно, найди через поисковик.

  • 29 Окт 2006

А может скажеш где скачать. Сижу 3 дня и не нашёл. :help:

  • 29 Окт 2006

Bano,  ссылка скрыта от публикации 

  • 29 Окт 2006

ИМХО, WinHex один из самых лучших. Или в гугле — «hex editor», к примеру :)

  • 29 Окт 2006

  • 29 Окт 2006

voldemar71, UltraEdit-32 лучше, и весит не очень много

  • 30 Окт 2006

Vasilij, каждому своё. я, вообще юзал windhex32 — простой, маленький, бесплатный и не требует инсталляции, при этом имеет много чего полезного (для своих размеров). В некоторых довольно УЗКИХ кругах он находит достаточно ШИРОКОЕ применение, например, при переводе приставочных игр…

  • 30 Окт 2006

voldemar71, я имел ввиду- больше функций, хотя и WinHex тоже присутствует, смотря для чего. Когда на верстакЕ лежит пара молотков, и они не мешают друг другу, то пусть будут ;)

  • 30 Окт 2006

Vasilij, хорошая штука :) . Пришлось, правда, сходить ссылка скрыта от публикации  (да простят меня модераторы) — платный, зараза :)

  • 30 Окт 2006

понятно :) , я его брал где то в более приличном месте…
Есть еще MultiEdit, проггеры хвалят, но он где то под 30 МВ, и я его на своем мопеде не разыскивал..

  • 31 Окт 2006

  • 31 Окт 2006

Aliaksandr, да дело не в инструкции, а в самой проге, качать модемом долго , да и указанных двух в принципе пока хватает.

  • 31 Окт 2006

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

  • 31 Окт 2006

Aliaksandr,
a) я знаю где он лежит(или лежал), и мог(у) взять прямо оттуда;
б) у него размер, если не изменяет память, около 26 МЕГАБАЙТ , это довольно приличный объем
как для обменника, так и для большинства пользователей, которые сидят на модемах.
в)тематика этого софтА не совсем отвечает тематике форума, к тому же, он платный см:
https://monitor.net.ru/forum/threads/44817/
так что спасибо, не нужно :) .

Find Strings, located under the Tools menu, allows the user to find
all of the text strings within a document or selection. While only strings
containing ASCII characters are reported, Find Strings optionally locates
ASCII strings stored as Unicode. Additionally, the user may restrict their
search to only contain strings greater then a certain length or strings
that end with a NULL character.

Parameters

Min Characters:

Defines the minimum number of characters (not bytes) required to be
considered a string. Users may specify between 3 and 128 min characters.
Strings are terminated at the first control character, carriage return,
or linefeed.

Requires trailing Null:

Restricts strings to those strings that end with a NULL (or zero) character.

ASCII, Uncode, Both:

Find Strings can report ASCII strings, ASCII strings stored as Unicode,
or both ASCII and Unicode. The default is «Both», however selecting
only ASCII or Unicode will quicken the search.

Apply On:

This operation can be performed on either the entire document or a selection
within a document. This option is disabled (grayed) if no data was selected
in the editor prior to starting the operation.

Find Results Window

Strings found by Hex Workshop are displayed under the «Find»
tab of the «Results Window» as shown below:

Selecting one of the lines in the Find Results Window, scrolls the string
into the hex editor’s window and selects the data. Right clicking on this
window allows the user to clear the list (Clear), place the select line’s
address onto the Window’s clipboard (Copy Address) , or copy all of the
data to the Windows Clipboard (Copy All). If a search is still in progress,
the user may also cancel the search by selecting «Cancel Find»
from the right click context menu or pressing the «X» located
in the upper right side of the Find Results Window.

Selecting «Copy All» from the right click context menu will
format the data in tabbed text as shown below:

0x000001E8
0x00000005 .text
0x0000020F 0x00000006 `.data
0x00000238 0x00000005 .rsrc
0x0000025F 0x00000007 @.reloc
0x00000DCC 0x0000000C __TESTCODE__
0x00000FA0 0x0000002B There was an error deleting your favorites.
0x00000FD0 0x00000009 Favorites
0x00000FDC 0x00000033 Are you sure that you want to delete all favorites?
0x00001014 0x0000000F Clear Favorites
0x00001028 0x0000003D There was an error adding this filter to your favorites
list.
0x00001068 0x0000000C Add Favorite

NOTE: The Find Results Window is limited to the first 128 bytes of each
string.

Посмотрев в бинарный файл, легко найти, что картинка начинается где то в районе 0x3488. Одна строка — 12 байт. Дальше дело техники

#include <stdio.h>


int main()
{
  FILE* f = fopen("Source.bin", "r");
  int p = 0x347E; // где начинается картинка. Возможно, она начинается на пару строк выше
  int counter = 1; // смещение в битах
  for (int i = 0; i < counter; i++) printf(" "); // напечатаем несколько пробелов, что бы компенсировать смещение в бите
  int line_size = 12*8; // размер строки
  fseek(f, p, SEEK_SET); // переедем сразу куда нужно
  for (int i = 0; i < 640; i++) { // опытным путем установлено, что там 640 байт на картинку
    int c = fgetc(f); // читаем по байту
    if (c == -1) break; // ой, конец неожиданный файла, выходим
    for (int j = 0; j<8;j++) {
      int z = c & (1<<(7-j)); // извлекаем бит
      if (z == 0) printf(" "); else printf("#"); // и печатаем его
      counter++; // счетчик точек в строке
      if (counter == line_size) {printf("n"); counter = 0;} // новая строка
    }
  }
  fclose(f);
}

Как увидеть картинку? очень просто. Распечатываем в консоль файл в виде битов — 1 и 0. А дальше смотрим на оригинальную картинку, выписываем последовательность нулей и единиц и ищем.

                   ##### #   # ##### #           #     ##### #   # ##### #
                   #     #   # #     #           #     #     #   # #     #
                   #     #   # #     #           #     #     #   # #     #
                   ####  #   # ####  #           #     ####  #   # ####  #
                   #     #   # #     #           #     #     #   # #     #
                   #     #   # #     #           #     #      # #  #     #
                   #      ###  ##### #####       ##### #####   #   ##### #####




                                        #      ###  #   #
                                        #     #   # #   #
                                        #     #   # # # #
                                        #     #   # # # #
                                        #     #   # # # #
                                        #     #   # # # #
                                        #####  ###   # #






                                        ##############    #
                                       ################   ##
                                       ##            ##    ##
                                       ##            ##     ###
                                       ##            ##      ###
                                       ##            ##       ##
                                       ##            ##       ###
                                       ##            ##       ###
                                       ##            ##       ###
                                       ##            ##       ##
                                       ##            ##       ##
                                       #################      ##
                                       ##################     ##
                                       ################ ##    ##
                                       ################  ##   ##
                                       ################  ##   ##
                                       ################  ##    ##
                                       ################  ##    ##
                                       ################  ##    ##
                                       ################  ##     ##
                                       ################  ##     ##
                                       ################  ##     ##
                                       ################  ##     ##
                                       ################  ##     ##
                                       ################   ##   ##
                                       ################    #####
                                       ################     ###
                                       ################
                                       ################
                                      ##################

  • solfi

    Junior Member

    • Регистрация: 09 2011
    • Сообщений: 3

    Здравствуйте, в иде имеем адрес фикции 00411D57 которую нужно занопить. В hex редакторе открываем экзешник, ищем 00411D57 но его нет, как найти функцию в экзешнике по адресу 00411D57. Спасибо.

  • reversecode

    Junior Member

    • Регистрация: 02 2008
    • Сообщений: 4815

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

    Комментарий

  • VodoleY

    Junior Member

    • Регистрация: 07 2008
    • Сообщений: 1519

    solfi от твоего адреса надо отнять имедж бейз, думаю что это 40 0000 в целом reversecode прав. хотябы азы прочтите

    Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме….

    Комментарий

  • rmn

    Junior Member

    • Регистрация: 04 2005
    • Сообщений: 760

    Сообщение от VodoleY

    от твоего адреса надо отнять имедж бейз, думаю что это 40 0000

    чтобы перевести VA в File Offset, недостаточно только отнять ImageBase

    Код:

    DWORD CPEFile::RVA2FileOffset(DWORD RVA)
    {
    ...
            for (i=0; iFileHeader.NumberOfSections; i++)
            {
                    if ((RVA >= m_pSectionHeaders[i].VirtualAddress) && 
                            (RVA < m_pSectionHeaders[i].VirtualAddress + m_pSectionHeaders[i].SizeOfRawData))
                    {
                            return m_pSectionHeaders[i].PointerToRawData + (RVA - m_pSectionHeaders[i].VirtualAddress);
                    }
            }
    ...
            return (DWORD)-1;
    }
    
    //------------------------------------------------------------------------
    
    DWORD CPEFile::VA2FileOffset(DWORD VA)
    {
            return RVA2FileOffset(VA2RVA(VA));
    }

    Комментарий

  • solfi

    Junior Member

    • Регистрация: 09 2011
    • Сообщений: 3

    reversecode
    А хьюв это какой редактор?
    Использую скачанный с этого сайта http://www.cracklab.ru/thumb.php?src=/_dl1/i/ODQ1.png

    VodoleY
    Что то с ImageBase’ом не получается, он вроде как 4000000, а не 400.000 http://stackoverflow.com/questions/3740976/about-imagebase-of-exe-in-windows но если отнять 4000000 от 00411D57 получается минусовое число, что-то не то…

    Комментарий

  • Veliant

    Junior Member

    • Регистрация: 11 2005
    • Сообщений: 931

    Для перевода отнимается ImageBase, вычитается виртуальны адрес начала секции, прибавляется физический.
    Reversecode правильно посоветовал, в hiew можно сразу по виртуальным переходить по F5 с точкой вначале адреса.

    Но проще на мой взгляд скопировать hex-данные по этому адресу и вбить в поиск в редакторе

    Сообщение от solfi

    но если отнять 4000000 от 00411D57 получается минусовое число

    а ты посчитай количество нулей у тебя, и сколько посоветовали

    Комментарий

  • DimitarSerg

    radical

    • Регистрация: 04 2010
    • Сообщений: 978

    А еще проще (лично для меня) — пропатчить в Оле(адрес будет тот же).

    Кому нужно — найдете меня в телеграме Всем спасибо за эти 10 лет.

    Комментарий

  • PE_Kill

    Шаман

    • Регистрация: 12 2005
    • Сообщений: 3919

    Для этих целей есть FLC в PE Tools.

    А по большому счету ТС не шаред.

    Yann Tiersen best and do not fuck

    Комментарий

  • solfi

    Junior Member

    • Регистрация: 09 2011
    • Сообщений: 3

    Парни, может есть прога какая, или что самописное, высчитывающее офсет в файле из виртуального… заморачиваться формулами высчитывания не хочется…

    Комментарий

  • PE_Kill

    Шаман

    • Регистрация: 12 2005
    • Сообщений: 3919

    solfi для особо тупых повторю:

    Сообщение от PE_Kill

    Для этих целей есть FLC в PE Tools.

    Yann Tiersen best and do not fuck

    Комментарий

  • vden

    Junior Member

    • Регистрация: 04 2011
    • Сообщений: 317

    Сообщение от solfi

    в иде имеем адрес

    фикции

    00411D57

    Поставь курсор на 411D57 и посмотри в статусбаре смещение.

    Комментарий

  • BoRoV

    retired

    • Регистрация: 02 2008
    • Сообщений: 2032

    Сообщение от rmn

    чтобы перевести VA в File Offset, недостаточно только отнять ImageBase

    Ну тогда и выравние нужно учитывать.

    Лучше быть одиноким, но свободным © $me

    Комментарий

Понравилась статья? Поделить с друзьями:
  • Как найти человека через глаз бога
  • Как найти центр фрезы
  • Как найти снилс по фамилии имя отчество
  • Как найти бас гитариста
  • Как составить график работы для 3 человек на смене 2 человека