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, и его содержимое в десятичном формате.Разжуйте пожалуйста…
- 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
Более наглядно
- 20 Фев 2006
Спасибо! Поковырялся,разобрался,нашел где » собака зарыта «.
- 23 Окт 2006
Где можно скачать nex редактор.
- 23 Окт 2006
Bano, наверно не «nex редактор», а HEX-редактор …
Их в инете полно, найди через поисковик.
- 29 Окт 2006
А может скажеш где скачать. Сижу 3 дня и не нашёл.
- 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. А дальше смотрим на оригинальную картинку, выписываем последовательность нулей и единиц и ищем.
##### # # ##### # # ##### # # ##### #
# # # # # # # # # # #
# # # # # # # # # # #
#### # # #### # # #### # # #### #
# # # # # # # # # # #
# # # # # # # # # # #
# ### ##### ##### ##### ##### # ##### #####
# ### # #
# # # # #
# # # # # #
# # # # # #
# # # # # #
# # # # # #
##### ### # #
############## #
################ ##
## ## ##
## ## ###
## ## ###
## ## ##
## ## ###
## ## ###
## ## ###
## ## ##
## ## ##
################# ##
################## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ ## ##
################ #####
################ ###
################
################
##################
-
Junior Member
- Регистрация: 09 2011
- Сообщений: 3
Здравствуйте, в иде имеем адрес фикции 00411D57 которую нужно занопить. В hex редакторе открываем экзешник, ищем 00411D57 но его нет, как найти функцию в экзешнике по адресу 00411D57. Спасибо.
-
Junior Member
- Регистрация: 02 2008
- Сообщений: 4815
если в хьюве то перед адрессом нужно набрать точку .
а вообще хелп читайте по каждому отдельно взятому редакторуКомментарий
-
Junior Member
- Регистрация: 07 2008
- Сообщений: 1519
solfi от твоего адреса надо отнять имедж бейз, думаю что это 40 0000 в целом reversecode прав. хотябы азы прочтите
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме….
Комментарий
-
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)); }
Комментарий
-
Junior Member
- Регистрация: 09 2011
- Сообщений: 3
reversecode
А хьюв это какой редактор?
Использую скачанный с этого сайта http://www.cracklab.ru/thumb.php?src=/_dl1/i/ODQ1.pngVodoleY
Что то с ImageBase’ом не получается, он вроде как 4000000, а не 400.000 http://stackoverflow.com/questions/3740976/about-imagebase-of-exe-in-windows но если отнять 4000000 от 00411D57 получается минусовое число, что-то не то…Комментарий
-
Junior Member
- Регистрация: 11 2005
- Сообщений: 931
Для перевода отнимается ImageBase, вычитается виртуальны адрес начала секции, прибавляется физический.
Reversecode правильно посоветовал, в hiew можно сразу по виртуальным переходить по F5 с точкой вначале адреса.Но проще на мой взгляд скопировать hex-данные по этому адресу и вбить в поиск в редакторе
Сообщение от solfi
но если отнять 4000000 от 00411D57 получается минусовое число
а ты посчитай количество нулей у тебя, и сколько посоветовали
Комментарий
-
radical
- Регистрация: 04 2010
- Сообщений: 978
А еще проще (лично для меня) — пропатчить в Оле(адрес будет тот же).
Кому нужно — найдете меня в телеграме Всем спасибо за эти 10 лет.
Комментарий
-
Шаман
- Регистрация: 12 2005
- Сообщений: 3919
Для этих целей есть FLC в PE Tools.
А по большому счету ТС не шаред.
Yann Tiersen best and do not fuck
Комментарий
-
Junior Member
- Регистрация: 09 2011
- Сообщений: 3
Парни, может есть прога какая, или что самописное, высчитывающее офсет в файле из виртуального… заморачиваться формулами высчитывания не хочется…
Комментарий
-
Шаман
- Регистрация: 12 2005
- Сообщений: 3919
solfi для особо тупых повторю:
Сообщение от PE_Kill
Для этих целей есть FLC в PE Tools.
Yann Tiersen best and do not fuck
Комментарий
-
Junior Member
- Регистрация: 04 2011
- Сообщений: 317
Сообщение от solfi
в иде имеем адрес
фикции
00411D57
Поставь курсор на 411D57 и посмотри в статусбаре смещение.
Комментарий
-
retired
- Регистрация: 02 2008
- Сообщений: 2032
Сообщение от rmn
чтобы перевести VA в File Offset, недостаточно только отнять ImageBase
Ну тогда и выравние нужно учитывать.
Лучше быть одиноким, но свободным © $me
Комментарий