Двач.hk не отвечает.
Вы видите копию треда, сохраненную 19 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1 Кб, 250x200
ASM & Reverse engineering Имя #960640 В конец треда | Веб
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).

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

Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.

Шапка треда в процессе пополнения, пока так.

Сайты по RE:
http://wiki.yobi.be/wiki/Reverse-Engineering
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/
http://www.program-transformation.org/Transform/ReengineeringWiki
http://blog.livedoor.jp/blackwingcat/
https://yurichev.com/blog/

Список книг по RE:
https://www.goodreads.com/shelf/show/reverse-engineering

Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP

Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум
С.В. Зубков: Assembler. Язык неограниченных возможностей.

Сайты по ассемблеру:
Замена почившему wasm.ru- https://wasm.in/
https://www.unknowncheats.me/wiki/Assembly
http://asmworld.ru/
https://software.intel.com/en-us/articles/intel-sdm
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/index.html#Top
https://msdn.microsoft.com/en-us/library/afzk3475.aspx

Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://geoffchappell.com/
http://msdn.moonsols.com/
http://terminus.rewolf.pl/terminus/

Пополнения и исправления приветствуются.
#2 #960670
Я конечно понимаю, что попрошайки идут нахуй и т.д., в общий тред написал, но думаю там не помогут.
Препод задал написать на ассемблере 2 проги: одна складывает двоичные числа размером 1 байт без учёта знака, другая - с. Либо всё это в одном, я хз. Может помочь кто-нить?
960678960694
#3 #960678
>>960670
А чому сам не можешь? Ведь вы всего лишь учитесь. Сиди, пробуй, эксперементируй. На время учёбы в универе ты должен самостоятельно делать подобные вещи, ибо из тебя даже червя-пидора не выйдет
#4 #960694
В инете полазил, нашёл оба варианта (там разница судя по всему только в sing и unsign, более менее понятно всё), но компилятор ругается на команду movzx, не подскажете, что с этим делать?
>>960670 - анон
960696960746
#5 #960696
#7 #960713
>>960640 (OP)
Спрошу тут может кто знает как в VS2017 С++ проект скомпилить в исполняемый файл с одной секцией. в 2013 получалось в 2017 всегда создает .rdata и .text
960746960755
#8 #960746
>>960713
У меня вот такой закомментированный код есть.
//#pragma comment(linker, "/SECTION:.text,EWR")
//#pragma comment(linker, "/MERGE:.data=.text")
//#pragma comment(linker, "/MERGE:.rdata=.text")
А как ты делал в VS2013?
>>960694
Ты хотя бы ошибку напиши и компилятор укажи.
960755960780
#9 #960755
>>960713
>>960746
А зачем вам это нужно? Какой с этого профит?
мимо-сишник
960773
#10 #960763
>>960640 (OP)
В шапке отсутствуют https://beginners.re/ (да Юричев есть, но стоило бы сделать акцент) и http://wiki.xentax.com/index.php/DGTEFF что несколько странно.
960772
#11 #960772
>>960763
Спасибо. Не знал про эту книгу.
#12 #960773
>>960755
Может он вирус пишет и хочет, чтобы всё было в одной секции.
Ещё один сишник
#13 #960780
>>960746
в vs2013 если не использовать внешних библиотек и указать точку входа получалось + оптимизация на минамальный размер, интересно почему .rdata всегда вставляется перед .text если использовать #pragma comment(linker, "/MERGE:.rdata=.text") и причем она генерится одинаковая для разного кода.
960783
#14 #960783
>>960780
А что линкер пишет? Попробую вечером, если до этого не разберешься.
960786
#15 #960786
>>960783
Я имею ввиду, они-то объединяются в одну, но данные секции вставляются перед .text, причем её можно просто удалить(.rdata) и работоспособность программы будет в норме. Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.
960805
#16 #960791
>>960640 (OP)
Как вы думаете реально ли быть профессионалом в программировании(неважно на каком языке) не работая нигде и никогда, но имея образование. И какое больше направление подходит для людей который не хотят(или не могут) с этим иметь дело?
961080
#17 #960805
>>960786

>Мне интересно зачем vs2017 вставляет эту херню в каждый исполняемый файл.


Мб телеметрия?
#18 #961080
>>960791
Реально если пишешь что-то нужное для себя хотябы. Образование в снг курам на смех.
961087
#19 #961087
>>961080
В смысле нужно или не нужное для себя? Просто заметил на собеседованиях неуважительное отношение когда узнавали, что не работал, а проекты мои личные. Ребята которые сидят на работе мнят себя спецами.
#20 #961129
1. VEH потокобезопасен? Одновременно может быть только один вызов?
2. Когда сработало исключение PAGE_NOACCESS, что делать дальше? Как разрешить чтение/запись только одной инструкции? Дизассемблировать и смотреть, какие регистры участвуют и самому копировать необходимые данные?
3. Как действовать после брекпойнта (программа не под отладчиком, брекпойнты мои)? Как отладчик делает, когда останавливается на брекпойнте? Ведь один байт затёрт, нужно восстановить его и заново выполнить инструкцию. А после как устанавливают брекпойнт? Отладчик включает пошаговую трассировку и после одного шага устанавливает байт?
961391
#21 #961391
>>961129
1) Очень вряд ли.
2) Проверяешь тип исключения, возвращаешь родной доступ к странице, выставляешь TF в Eflags в сохраненном контексте, говоришь continue execution, получаешь исключение, проверяешь тип, восстаналвиваешь NO_ACCESS, ну ты понял (как вариант, можно ставить PAGE_GUARD вместо NO_ACCESS, тогда будет одним системным вызовом меньше). Если ты про совет из прошлого треда, то да, немного дизасма понадобится: табличка с типами инструкций (можно спиздить из опенсорсных движков) и разбор всяких SIB/ModRM/displacement (можно взять опенсорсный движок целиком).
3) Да. Алсо, есть хардварные точки останова, с ними жизнь проще.
961749
#22 #961749
>>961391
1. Проверил, для каждого потока свой вызов. Поэтому не потокобезопасен.
2. Видимо, это самый простой способ. Неужели в отладчиках так же сделано? Ведь между тем, когда доступ разрешён и повторным исключением пройдёт много времени, хитро настроенный второй поток может успеть между этими событиями прочитать или запись данные и останется незамеченным. Тут нужен бы эмулятор.

>тогда будет одним системным вызовом меньше


Ты про то, что PAGE_GUARD сбрасывается? А то смотрю, что возвращает VirtualProtect, а этот бит уже сброшен.

>можно взять опенсорсный движок целиком


Взял дизассемблер от OllyDbg, а он XMM инструкций не понимает. Краем глаза посмотрел на x64dbg, так там враппер вокруг дизассемблера больше по размеру, чем сам дизассемблер. Надо от qemu ещё посмотреть.
Как и ожидал, после установки TF бита отладчик сам останавливается на следующей инструкции. Не очень удобно.
3. Слишком много мест, их не хватит.
961788
sage #23 #961788
>>961749
В x64dbg capstone вроде. capstone жирный (там овердохуя таблиц для скорости), но весьма неплохой.
961863
#24 #961863
>>961788

>В x64dbg capstone вроде.


Одуреть, это ты по памяти помнишь, какой дизассемблер в отладчике. Сам только вчера смотрел, но, тем не менее, не вспомнил бы названия. Меня отпугнуло то, что очень большой враппер был вокруг него, хотя и не смотрел, что там, думал, что заставить работать его будет трудно. А оказалось, что пользоваться им очень легко. И главное, он XMM понимает, чего мне не хватало.
Может подскажешь какой-нибудь эмулятор х86. Очень бы не хотелось писать самому, долго будет очередной велосипед делать. Нужен достаточно простой, но с установкой своих начальных значений регистров и некоторых обработчиков типа записи и чтения памяти. Как в плагине к ida x86 emulator.
962054
#25 #961914
>>960640 (OP)
Антохи а как можно с дженерик говнокода на асме сделать специфический для моего процессора?
962001
#26 #962001
>>961914
Написать компилятор.
962632
#27 #962054
>>961863
Чего-то запутался уже с исключениями. Если, попав в VEH обработчик, взвести бит TF, то после выхода из него и возобновления работы программы будет исключение EXCEPTION_SINGLE_STEP. Но флаг остаётся взведённым? Потому что у меня никак не получается поймать это исключение. Как только управление передаётся в юзер спейс, опять будет это исключение? И так до STATUS_STACK_OVERFLOW.
Читаю про dr-регистры. Их-то можно поймать в VEH обработчике? Или надо отдельный процесс делать? Первая попытка не удачная.
38 Кб, 673x514
39 Кб, 687x510
#28 #962628
Анон, либо я дурак, либо создатель проги поехавший. Рассуди нас. Есть два числа C6 и 40. При сложении получаем 106. Что мы получаем во флаге SF на деле? Значение D7 или значение самого старшего бита? Заранее благодарю.
Dmitry #29 #962632
>>962001
Компилятор из С собирает асму. А у меня asm выхлоп, бинарный блоб драйвера.
962697
#30 #962697
>>962632
Компилятор из C может собирать что угодно. Тебе надо сделать дизассемблер с asm, перевести его в промежуточный опкод, а потом конвертировать в ассемблер твоего специфичного кода. В llvm есть что-то подобное с возможностью переводить из одного языка программирования в другой. Тебе нужно будет написать соответственно для асма x86 и своего языка.
7 Кб, 256x411
Имя #31 #964364
Не могу понять, откуда берутся вот эти функции в IDA. Притом даже компиля свой файл, у меня получается одна из них, но я всё равно не въезжаю, как это выходит. Вроде как _fin_1 похож на код обработки исключения из finally, но не совсем.
964378964383
#32 #964378
>>964364
Они нужны для работы malloc/realloc вестимо.
sage #33 #964383
>>964364
Ну судя по названию, ты прав, это exception filter и finally handler. Что-то /EHsc с собой тащит, может быть?
964389
Имя #34 #964389
>>964383
Да, так и есть, воткнул в except вызов функции- этот самый RtlZeroHeap_filt_0 объявился сам.
Правда не очень понимаю, как мой код трансформируется в эту фигатень. Ладно, буду экспериментировать и читать про структурированную обработку исключений.
#35 #964702
Как получить значение xmm регистров в 32 битной Windows? Где они в структуре CONTEXT.
964774
#36 #964774
>>964702
Нашёл, XMM_SAVE_AREA32. Почему-то они только для 64 битной ОС определены.
sage #37 #965627
#38 #965975
Привет, аноны! Кто то из вас пользовался дебагером DEBUG? Если да, то можете, пожалуйста, пояснить за него? Заранее спасибо!
966066
sage #39 #966066
>>965975
А что тебе пояснять? Мануалы есть в сети. Сам по себе он 16-битное говно мамонта, про многие инструкции не знает. Если есть конкретная проблема - спрашивай.
966098
#40 #966098
>>966066
А OllyDbg намного лучше? Есть ли какие нибудь задачки для начинающего дебагера?
966108
sage #41 #966108
>>966098
Да, OllyDbg намного лучше. А возможно, стоит сразу на x64dbg посмотреть.

> Есть ли какие нибудь задачки


Как же вы заебали. Придумай сам себе задачу. Отлаживай собственные программы. Возьми коллекцию крякми и взломай их все.
966109
#42 #966109
>>966108
А как крякать то
как уточка?
966145
#43 #966145
>>966109
Отслеживать вызовы подпрограмм, смотреть, какие регистры заполняются, какие структуры в памяти заполняются.
966153
#44 #966153
>>966145
Попробую нарыть гайд по этому, спасибо!
966209
sage #45 #966209
>>966153
Статьи на экзелаб, не плагодари.
898 Кб, 1920x1044
#46 #967390
Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn
Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?
967395967638
Dmitry #47 #967395
>>967390

>Написал небольшую программку для линукса (хеловорлд) https://pastebin.com/d6Zfm8Rn


>Когда скомпилировал через gcc hello.s -o hello вышло 8200 байтов. Почему?


А почему ты GCC юзал?
Есть as(часть gcc), и другие ассемблеры.
strip -s helloworld не забудь.
#48 #967638
>>967390
Потому что crt, которая в твой main управление передаст.
967646
#49 #967646
>>967638
Сам ты передаст.
967647
47 Кб, 400x400
#50 #967647
Компиляция и декомпиляция #51 #969991
Всем здарова. Вкатываюсь в реверс после курсов по ОС, архитектуре и 16-битному асму моего универа (асм на бумажке писал только). Хочу как у Юрича в Reverse Engineering писать простые программы и дизасемблировать их, но получаю гигантские простыни кода. Компилирую через
gcc code.c -o code. "-O2" не меняет ситуацию. Смотрю через objdump -d. Что я не так делаю?
970237970475
#52 #970237
>>969991

>Смотрю через objdump -d.


Поэтому люди и пользуются продвинутыми средствами типа IDA, которые пропускают лишний код и показывают сразу точку входа, минуя библиотечные функции.
970321
#53 #970321
>>970237

>IDA Starter Licenses start at 589 USD or 529 EUR. IDA Professional Licenses start at 1129 USD / 1019 EUR.

970368970473
#54 #970368
>>970321
IDA Pro 6.8.torrent
971317
sage #55 #970473
>>970321
Демка есть. Для "посмотреть" подходит.
974193
sage #56 #970475
>>969991
gcc -S есть. Простыни остаются, но читать легче.
#57 #970803
[C/C++]
Возможно ли даемону в фоне с правами 0й сессии отслеживать такие штуки как
-открытие процесса(OpenProcess)
-чтение(ReadProcessMemory)
-запись(WriteProcessMemory)
-выделение памяти (VirtualMemoryAlloc)
-создание потока выполнения (CreateRemoteThread)
И прочие штуки. Должны же как-то работать антивирусные и античит системы, информации в сети мало.
Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.
970832
#58 #970832
>>970803
Когда придёт прошаренный человек, он тебе разъяснит. А у меня такие мысли.

>с правами 0й сессии


Что это означает? Из третьего кольца? Если из нулевого, то всё понятно. Значит юзерспейс. Да, можно. И без даемона (просто не знаю, как по другому). Подгружаешь свою dll во все процессы (с помощью реестра, загуглишь) и ставишь переходы на интересующие тебя вещи. Учитывай, что многие защиты не любят, когда на системных функциях стоит jmp в самом начале, добавь мусорных команд.

>Должны же как-то работать антивирусные


Они работают на нулевом кольце.

>и античит системы


А у этих такие же возможности, как и у тебя, если в тихую не устанавливают драйвер.

>Читал, например, что VAC использует динамически загружаемые с их сервера тесты для памяти и на основе статистик принимают решения.


Тоже читал, что VAC ищет читы по сигнатурам. Изменил опции компиляции - изменилась сигнатура. Учитывая, что существует столько читов - это очень ненадёжная система.
#59 #970908
Допустим есть веб-приложение, которое обменивается информацией с запущеным сервисом. Как вклиниться и послушать, о чем они обмениваются?
970917
#60 #970917
>>970908

>Как вклиниться и послушать, о чем они обмениваются?


Очевидный Wireshark очевиден.
971115
#61 #971026
Аноны, где достать последнюю ИДУ$можно не самую последнюю, интересует только поддержка плагинов на питоне$ для mac os? Все что удалось найти - какой-то обрезок, где нет половины функционала(есть поддержка idc, но нет поддержки плагинов на питоне)
#62 #971115
>>970917
Но вайршарк слушает то, что проходит через сетевую карту. А у меня веб приложение уже запущено, я туда уже зашел, и теперь оно взаимодействует с сервисом напрямую локально.
971117
#63 #971117
>>971115
Ты поехавший?
Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback
971119
#64 #971119
>>971117

>Ты поехавший?


Что не так? Все лаунчеры ммо, которые запускаются с сайта, так работают. Или у тебя другие сведения? Изложи их тогда. тогда.

>Алсо в этой вашей балмерне есть свои замуты с WinPcap и loopback


Ничего об этом не слышал.
971126
#65 #971126
>>971119
С каким сервисом он работает? С апачем? Я скачал игру сиськи письки онлайн от мейлру и они мне апач поставили?
971135
#66 #971135
>>971126
Какой апач, ты что несёшь? Сервисом (daemon), а не сервером.
Во всех игрушках это работает так: у тебя есть игра, клиент которой запускается через обычный экзешник; авторизируешься на сайте -> сервер сайта в бекенде выдаёт шифрованный ключ, который передаётся в сервис, который постоянно его мониторит -> если ключ правильный, сервис запускает экзешник клиента с параметрами, вроде этого ключа. Я хочу прослушать, чем сервис на пекарне обменивается с веб приложением, и потом с самым клиентом.
971139
#67 #971139
>>971135
Смотри, либо ты нормальным человеческим языком описываешь все части этой системы и все протоколы, по которым они взаимодействуют, либо ты официально признаешься поехавшим, у которого демон мониторит шифрованные ключи.
971146
101 Кб, 512x768
#68 #971141
У меня такое ощущение, что весь реверс и вообще изучение системного программирования нужно делать на винде. Так ли это?
971179971181
15 Кб, 390x165
#69 #971146
>>971139

>все части этой системы и все протоколы


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

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


Папики пришли учить, не давая никаких ответов на конкретные вопросы. Я тебя сразу спросил, если у тебя есть другая информация, говори, каким образом кнопка на сайте запускает экзешник клиента.
971149971166
#70 #971149
>>971146
Ты же ставишь их нативное расширение. Через него можно хоть мать выебать.
971159
#71 #971159
>>971149
То есть от того, что я пропустил по незнанию аддон в списке сайт -> сервис -> клиент, я и стал поехавшим в твоих глазах, ясно.

Мой вопрос остается в силе, каким образом я должен влезть между сайтом (аддоном) и сервисом, чтобы прослушать их обмен? И если такой вариант тебе не нравится, то вариант номер два - какие образом прослушать, с какими конкретно параметрами запускается клиентский экзешник?
971166971204
#72 #971166
>>971146

>каким образом кнопка на сайте запускает экзешник клиента


Быстрое гугление выдало такие ссылки:
https://toster.ru/q/89523
https://toster.ru/q/3704
Это так же, как магнет-ссылки и прочие приложения, которые можно запустить из браузера.
>>971159
И будь спокойнее.

>каким образом я должен влезть между сайтом (аддоном) и сервисом


MIMT-прокси.
971169971180
#73 #971169
>>971166

>MIMT-прокси


Спасибо, ушел гуглить.
971175
#74 #971175
>>971169
Простейший вариант - Fiddler, хотя сам пишу велосипеды под свои нужды: чистый C + libevent + OpenSSL и свой доверенный корневой сертификат.
971178
#75 #971178
>>971175
Ты уверен что у них в клиенте сертификат не вшит? Выдирать придётся.
971191
#76 #971179
>>971141
Внезапно на винде удобнее. Но если хочешь стать годным специалистом, без погружения в ядро линукса ты не обойдешься, и это погружение даст тебе много знаний и скиллов.
sage #77 #971180
>>971166

> MIMT


> Man in Middle The

971191
#78 #971181
#79 #971182
Пытаюсь разобраться с прошивкой ARM микроконтроллера. Отладка в IDA через JTAG работает, все вроде бы хорошо. Но проблема в том что трудно разобраться с регистрами периферии. И в документации на микроконтроллер не указаны абсолютные адреса регистров, а их смещения относительно разных базовых адресов.
Можно ли в IDA настроить нормальное отображение регистров периферии? Мне бы для начала разобраться с тем как там настроена периферия.
971184
sage #80 #971184
>>971182
Делаешь структуру для каждого периферийного устройства, скриптом или руками втыкаешь эту структуру по соответствующему адресу.
#81 #971191
>>971178
Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика. При этом создаётся новый сертификат для каждого сайта (валидный год или даже больше) и он устанавливается в систему. Вот за последнее свойство и пишу сам наипростейший mitm-прокси, который не захламляет систему левыми сертификатами, а генерирует их налету и не сохраняет никуда.
>>971180
Простите, опечатался.
971200971201
#82 #971200
>>971191

>Их сертификат генерируется, когда в опциях разрешишь перехват SSL трафика.


Тебе за софтину, которую ломают. Она может хуй класть на общесистемное хранилище.
971205
#83 #971201
>>971191
Ещё раз. Клиент может:
1) Использовать свой сертификат, а не скачивать его по http
2) Скачивать его по http и проверять, например, что он выдан верисигном, а не вася-пупкин-ца
Сейчас 2017 год, даже хром что-то подобное делает. А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.
971205
44 Кб, 438x702
#84 #971204
>>971159

>то вариант номер два


Проверил этот путь, все тухло. На остальных локализациях можно было выдрать отсюда параметры запуска клиента, но в даном случае ничего нет. При чем я точно знаю, что параметры передаются, так как экзешник клиента можно запустить вручную.
971205
#85 #971205
>>971200
>>971201
Ну ты чего? Один из вариантов ему предложил. Пусть смотрит, как работает софт. Очень часто он использует движок IE или использует корневые сертификаты системы. Где-то же он берёт сертификат, которому доверяет.

>Использовать свой сертификат


Заменим на свой.

>Скачивать его по http и проверять, например, что он выдан верисигном


Создать свой самоподписанный сертификат со всеми полями верисигна и установить его в систему.

>даже хром что-то подобное делает


Он использует хранилище сертификатов Windows. Mitm работал на нём, сам лично проверял, все сайты, даже гугловские.

>А тут речь идет о нативном клиенте который может извращаться с ссл как угодно.


Особенно замечательно, когда есть две dll: libeay32.dll и ssleay32.dll, достаточно две функции изменить, чтобы писали весь трафик в лог.
Но всё, само собой, зависит от приложения. Оно может параноидально проверять всё, быть зашифрованным, закриптованным, использовать VM и прочее. А может и ничего из перечисленного.
>>971204
Запусти от администратора.
971206971208
46 Кб, 427x689
#86 #971206
>>971205

>Запусти от администратора.


Я и запускал. Но вот у их защитника параметры оказались очень похожы на те, что я вижу на других локализациях.
971215971216
#87 #971208
>>971205
http://www.chromium.org/Home/chromium-security/security-faq#TOC-How-does-key-pinning-interact-with-local-proxies-and-filters-
У хрома там забавные правила, да. Но он защищается от недобросовестных ЦА, так что в этом плане все ок.
#88 #971215
>>971206
Знакомый параметр /username, как от Sony, одна из их игр FreeRealms, которую безуспешно пытался запустить ввиду отсутствия нужных файлов. Ты немного тупишь, тебе правильно написали. Запусти Wireshark и посмотри что и куда передаётся. А чтобы не было левого трафика, закрой все приложения, которые используют сеть. Там (возможно) должен запускаться загрузчик, который общается с сервером по UDP. Ты где пароль вводишь: на сайте или в клиенте?
#89 #971216
Так и есть >>971206 Смог запустить клиент без сайта, ебаться с сертификатами точно теперь не буду.
Проблема только в том, что нужно знать шифрованный логин и пароль, в других локализациях этого не требовалось. Да и местный защитник Фрост тоже стартует.
971218
40 Кб, 432x695
#90 #971218
>>971216
Собственно, вот и всё. Достаточно один раз подсмотреть логин и пароль у фроста и потом можно запускать так. Как видно, фрост больше не является главным процессом.
971222
#91 #971222
>>971218
Вот видишь, а ты все демоны, апач, веб-приложения. А оказалось что параметры через командную строку передаются. Алсо если ты запустишь без их античит поеботы ты можешь попасть в чорный список и твоего перса посадят на бутылку. А можешь и не попасть.
971228
#92 #971228
>>971222
У меня нет перса, я не играю.

Разлогинился на сайте, заблокировал расширение в браузере, отключил сервис - приложение отказывается запускаться, неверный пароль. Блядь.
971229
#93 #971229
>>971228
Может там не шифрованные логин-пароль, а одноразовые или сессионные логин-пароль?
971233
#94 #971233
>>971229
This. Логин остался без изменений, а вот пароль сменился. Блядь, у этой проблемы решения нет.
971236
#95 #971236
>>971233
Почему? Можно через curl на их веб-сервак ебануть свой логин-пароль и получить сессионный ключ. Скорее всего.
971239
#96 #971239
>>971236
И в результате выйдет вебланчер, только свой)))00
971248
#97 #971248
>>971239
А в чем смысл изначально этого всего? Может тебе просто локализацию перенести если английский клиент взломан а ты делаешь русскую пираточку?
971253
#98 #971253
>>971248

>смысл


Сделать нормальный ланчер без привязки к сайту, как это все и происходит на других локализациях.
971256
#99 #971256
>>971253
Но это лаунчер для онлайн игры и если они хотят сессионный ключ то тебе придется его получать. Другой вопрос - хотят ли они его?
971280
758 Кб, 851x657
#100 #971280
>>971256
Вспомнил, что в запакованных файлах есть параметр use-web-launcher, перезапаковал со значением false. Теперь могу доходить до стандартного окна входа, как в других локализациях, вот только ни мыло, ни айди не подходят как логин. Мда уж, чего они наворотили там.
#101 #971306
Как легче (!) всего искать поинтеры на значения?
971308
#102 #971308
>>971306
Хардварный брейпоинт на чтение/запись.
971312
#103 #971312
>>971308
Под "легче" я имел в виду не эффективнее, а легче для ньюфага.
#104 #971317
>>970368

> 2k17


> воровать софт

971370
#105 #971340
>>971327
Кстати, насчет CE. Часто не могу найти текстовое значение, хотя на экране в дрочильне четко видно текст а значит он обязан где-то храниться. С чем может быть связано?
971344
#106 #971344
>>971340
ASCII/Unicode?
971349
#107 #971349
>>971344
Хуй знает, но на экране никаких специальных символов, простой текст латиницей. Не должно же быть разницы, разве нет?
971360
#108 #971360
>>971349
Ну нихуя себе нет! ASCII или UTF-8 для латиницы - один байт на символ, UTF-16 (UCS-16) - два байта на символ, UTF-32 (UCS-32) - четыре байта на символ. А еще могут быть шифрованные строки.
971363
#109 #971363
>>971360

>UTF-16 (UCS-16) UTF-32 (UCS-32)


Да это никто и не использует в здравом уме.

>ASCII или UTF-8


Разница в поиске между этими кодировками есть?
971373
#110 #971370
>>971317
В любом другом случае - да, но не с идой. Такому охуевшему долбоебу как ильфак могу только хуй под язык положить
#111 #971373
>>971363

> Да это никто и не использует в здравом уме.


Вся Windows API использует UTF-16 (прошлые версии - UCS-16). В крестах wstring использует UTF-16. В ресурсах PE-файлов строки хранятся как UTF-16. В андроиде нативные либы используют UTF-32. Я видел и виндовые приложения, в которых внутри UTF-32, им так проще - не нужно обрабатывать суррогатные пары.

> Разница в поиске между этими кодировками есть?


Для латиницы нет.
971377
#112 #971377
>>971373
Ну окей, тогда просто ставить галку Unicode в следующий раз, если ничего не находит?
971385
#113 #971385
>>971377
Да. Но если CE - это читенжин, то я им ни разу не пользовался, и не знаю, как там принято искать текст.
Препроцессинг, компиляция, линковка #114 #971955
SUP
Не понимаю, что происходит после написания кода, но перед получением исполняемого файла. Компилю все клангом или gcc, и всегда получаю кучу левого кода в файл. Где почитать об этом?
Dmitry #115 #972023
>>971955
preprocesses code>assembly>binary
Добавляется куча ссылок на либы, бойлерплейт для ядра.
972136
#116 #972136
>>972023
Ну да, а вот как это конкретно происходит? Не знаю как прогуглить
972140972144
#117 #972140
>>972136
Возьми gcc, погугли ключик "-save-temps". Ну и про ключик -v тоже не забывай.
#118 #972144
>>972136
Ещё погугли "Understanding and Writing Compilers" (Richard Bornat).
#119 #972182
https://challenges.re/53/
Мне кажется я решил, но не знаю правильно или нет. Проверьте, пожалуйста.
На винде строки хранятся в DATA-сегменте, а на линуксе в .rodata. В DATA можно писать, а в .rodata нельзя. Поэтому на винде все работает, а на линуксе нет.
972193
#120 #972193
>>972182

> Поэтому на винде все работает


Какой-то странный челлендж. Вопрос уровня i += i++ + ++i. Особенности компилятора, которые могут изменяться от версии к версии, зачем их знать? В гцц строковые литералы ридонли по умолчанию, но у кого-то в системе зачем-нибудь может быть -fwritable-strings в CFLAGS, и тогда все будет работать. То же и с MSVC. По умолчанию строки доступны для записи (хуй знает насчет новых версий), но есть /GF, тогда будет как в гцц. А ответ простой: писать в строковый литерал - это undefined behavior, и все, что нужно про это знать - так делать нельзя.
972202
#121 #972202
>>972193
Мега спасибо за развернутое объяснение
29 Кб, 460x215
579 Кб, 658x386
Dmitry #122 #972759
Все играли?
Или в Human Machine Resources или в tis100?
972770
Dmitry #123 #972760
На нуль есть целая доска для байтоебов
/bytesex/
972771
#124 #972770
>>972759
Шенжен - 11/10, тис - говно/10, hrm - 5/10.
sage #125 #972771
>>972760

> /bytesex/


Так пиздуй, мы не расстроимся.
#126 #973119
>>960640 (OP)
Изучаю системные вызовы линукса путём чтения менпейджей и экспериментов и не могу разобраться со вторым сискаллом, а именно с функцией open. А именно я не могу понять как ставятся флаги. Вот у меня получается создавать файл, но в нём всё запрещено. Я экспериментами нашёл что седьмой справа бит отвечает за создание файла, но как сделать так чтобы он был разрешён к читанию и писанию и выполнению я незнаю. Как это сделать?
973231973232
sage #127 #973231
>>973119
Как это ты читаешь маны, но man open не читал и флагов там не увидел, и грепнуть/printf-нуть флаги или заинклудить соответствующий .h ты не можешь?
#128 #973232
>>973119
Смотри, у тебя есть аргумент flags. Каждый флаг, типа O_RDONLY расценивай как двоичное число типа 0000001000000. Разные флаги имеют единички в разных местах. Чтобы совместить два флага, типа O_RDWR и O_CLOEXEC, надо включить еденички с обоих позиций, то есть на позициях обоих флагов. Чтобы проставить единички с включением обоих флагов пиши так:
open(file, O_RDWR | O_CLOEXEC);
Побитовое ИЛИ проставит единички, как сумму всех флагов. Удачи в понимании этого сообщения
973250
#129 #973250
>>973236
>>973232

>Расценивай


А оно разве не таким и есть?
973252973259
#130 #973252
>>973250
Так и есть. Я к тому, что не думай о них как о "32" или "16"
sage #131 #973259
>>973250

> А оно разве не таким и есть?


Существуют флаги с дублирующимися битами. Если сложить 0x11 и 0x09 - получится не то, что ожидается от флагов, а вот | отработает как положено.
#132 #973401
Как найти поинтеры, если повесить брейкдаун в дебаггере невозможно - вылетает онлайн-игрушка? Нет, я не хочу ничего редактировать, я просто хочу считывать значения.
973628973727
#133 #973628
>>973401

>брейкдаун


Наверное, брейкпойнт.

>вылетает онлайн-игрушка


Какой дебаггер, как проявляется вылет. Плагины не помогают?

>я не хочу ничего редактировать, я просто хочу считывать значения


Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.
973728973730
#134 #973727
>>973401
Вангую использует olly для поиска указателей в играх , используй CE лучше для этого,(он не останавливает процесс что в итоге не дропает процесс.
973730
#135 #973728
>>973628
С этого момента поподробней как при помощи readpm найти указатель
#136 #973730
>>973628

>Наверное, брейкпойнт.


Да, сорян.

>Какой дебаггер, как проявляется вылет. Плагины не помогают?


CE, выбираю пункт меню с брейкпоинтом на любой найденный адрес со значением, и игрушка моментально вылетает без ошибок. Каких heartbeat в игрушке нет, античит защита отключена разрабами.

>Можно через ReadProcessMemory попробовать, если знаешь точные адреса или можешь их найти.


Можно поподробнее? Не знаю адресов, как раз их и пытаюсь найти, ради этого и затевал.

>>973727

>Вангую использует olly для поиска указателей в играх , используй CE


А я и использую CE.
973740
#137 #973740
>>973730
Запутанно ты пишешь. Если нет никакой защиты в приложении, тогда ничего и не должно срабатывать. Не знаю, как ведёт себя CE, он как отладчик присоединяется к процессу? Программа своим поведением на точку останова напоминает реакцию на исключение в каком-нибудь VEH, когда
else
{
ExitProcess(...);
}
Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.

>Не знаю адресов, как раз их и пытаюсь найти


Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.
973756
#138 #973756
>>973740

>как ведёт себя CE, он как отладчик присоединяется к процессу?


Ах если бы я знал. По внешним признакам НИЧЕГО не происходит, просто вылетает игрушка.

>Попробуй OllyDbg для разнообразия и поставь точку останова на ExitProcess, посмотри, кто её вызывает.


Попробую сегодня, как доберусь домой.

>Что ты ищешь-то? Что за игра, дай немного информации, что уже сделал, что нужно сделать.


Да ничего ещё не сделал. Есть группа из нескольких игроков, я хочу считывать их имена в string, а потом уже проводить с ними операции, которые не касаются этого треда. Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно. Поэтому мне и нужны указатели на эти надписи. Правой кнопкой мыши по найденному адресу и выбираю пункт меню для поиска поинтеров, игрушка моментально вылетает.
973765973940
#139 #973765
>>973756

>при перезапуске игрушки имени по тому адресу уже нет, очевидно


Скорее всего, игра написана на C++. Нужно искать, где хранятся (создаются) имена, а по ним выходить по цепочке на глобальный класс. А когда найдёшь, уже с помощью ReadProcessMemory в обратном (в данном случае, прямом) направлении пройдёшь. Ну это в теории. Надо реверсить игру, искать, где, кто и что создаёт. Сам бы так делал. Возможно, можно проще.
973768
#140 #973768
>>973765

>Нужно искать, где хранятся (создаются) имена, а по ним выходить по цепочке на глобальный класс. А когда найдёшь


Алло, это я и пытаюсь делать с первого поста.
973780
#141 #973780
>>973768

>Алло


Ну и аллёкай дальше, раз весь пост осилить не смог.
973886
#142 #973886
>>973780
Твои советы слишком абстрактные для ньюфага. Ты можешь сказать, что конкретно мне нужно делать для того, чтобы найти корневые адреса и офсеты?
#143 #973940
>>973756

> Ищу string, нахожу имя на экране, при перезапуске игрушки имени по тому адресу уже нет, очевидно.


В CheatEngine есть охуенный туториал, где на примерах показывается как искать статические адреса указателей.
https://youtu.be/5us6a9b2zDk

Вообще советую весь туториал самому прорешать.
974111
#144 #973961
>>960640 (OP)

ПРОГРАММИРУЕШЬ НА АССЕМБЛЕРЕ
@
НЕ МОЖЕШЬ РЕШИТЬ ЧЕМ ПОЖЕРТВОВАТЬ
@
СЭКОНОМИТЬ ОПЕРАТИВНУЮ ПАМЯТЬ, НО УМЕНЬШИТЬ СКОРОСТЬ ПРОГРАММЫ
@
ИЛИ УВЕЛИЧИТЬ СКОРОСТЬ, НО ЗАНЯТЬ ЕЩЁ ПАМЯТИ
@
ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ
974006974058
#145 #974006
>>973961

>ТВОЯ ПРОГРАММА ВЕСИТ 5 КБ


@
ТЫ ДОБАВЛЯЕШЬ ИКОНКУ
@
ДЛЯ ОТОБРАЖЕНИЯ В ПРОВОДНИКЕ ШИНДОФС
@
ПРОГРАММА НАЧИНАЕТ ВЕСИТЬ 30КБ
@
ПИШЕШЬ КОД НА АСМЕ ДЛЯ СЖАТИЯ ИКОНОК

https://habrahabr.ru/post/247425/
974032974058
sage #146 #974032
>>974006
В ФОРМАТЕ PNG ПРИ ПОМОЩИ FASM
@
НАДЕЯЛСЯ УВИДЕТЬ РЕАЛИЗАЦИЮ DEFLATE НА МАКРОЯЗЫКА FASM
@
file 'icon16.png'
@
ОПЯТЬ ХЕЛЛОВОРЛД ДЛЯ НУБОВ
#147 #974058
>>973961
Производительностью только дауны жертвуют.
>>974006
Иконки не нужны.
#148 #974111
>>973940
Перетолстил.
#149 #974120
дайте мне, пожалуйста, аналог printf() из си на ассемблере для линукса в архитектуре x86-64. Желательно в коде фасма. А то у меня какое-то говно получается.
974277
26 Кб, 946x377
#150 #974153
поможите, невкурю, в IDA мучаю ехешник сибирии 1. http://rgho.st/8Jhz5nlVz
если рядом кинуть player.ini с соджержимым 800 600 32 0 BaseCMO.cmo
то игра запустится в окне и все хорошо (ну относительно, есть бага что свернуть развернуть и она растягивается в фулскрин)
Хочется сделать окно побольше, а то мелковато. спрятать курсор, рамку и т.д. это решается за счет ultimate-ASI-Loader
Вроде нашел место где проверяются значения. Файл открывается тут :0040437D
Но что то раскурить проверку не получается, вообще не пойму что она делает.
через читэнджи искать адреса где хранится значение для разрешения - дохлый номер, в игре нельзя переключать.
хелпплз.
974157974204
#151 #974157
>>974153
п.с.: первые два значения в инишники вообще по барабану, что бы не написал окно всегда 800*600
#152 #974165
>>960640 (OP)

>Список книг по RE:


в список однозначно стоит добавить раз уж блог его указали https://beginners.re/
#153 #974193
>>970473
демка - это ты про фри версию 5 давности?
#154 #974204
>>974153

>Хочется сделать окно побольше


Там ниже переписываются значения разрешения экрана. По адресам 00404413 и 00404423. nop'ами попробуй их заменить.
Как мне кажется, в этом месте баг. Вероятно, хотели значения присваивать до открытия файла, а то какой смысл после открытия и считывания переписывать.
974220974237
873 Кб, 1026x795
#155 #974220
>>974204
занопил в ольке наживую, рендер разрешение изменил. А вот задники нет.
Не всё так просто похоже будет. Эх.
974237
#156 #974237
>>974220

> А вот задники нет.


Как я и думал, это не глюк, как полагал >>974204-кун, а комментирование недописанного функционала.
974250
#157 #974250
>>974237
или отключенного за ненадобностью. Типа не на чем запустить такое. хехе. Игра то старая.
в сибирии 2 так же, только там разрешение жестко забито в ехешнике.
Ндо андроид версию ковырнуть будет. Где то да должно быть масштабирование текстур.
sage #158 #974277
>>974120
Внезапно printf. Посмотри в примерах к фасму, там есть хелловорлд для линуксов, в том числе и с libc.
974370
#159 #974370
>>974277
да, а фасм научился наконец то дебаг инфу в эксешники пихать? или все по старому, пилишь отдельно скомпиленое, отдельно листинг ?
974520
#160 #974399
>>960640 (OP)
только что экспериментальным путём узнал что syscall (по крайней мере тот, который write) в линуксе изменяет значение r11. Какие ещё регистры он изменяет?
#161 #974420
не подскажите что нибудь типа GAP ( https://goo.gl/SuWQuG ), раньше при разборе алгоритмов, на ней частенько вычисления гонял, была отличная оболочка для нее GGAP, которая увы не развивается и не поддерживает актуальные версии.
Из того, что мне оч нравилось в ней, что просчитаные данные, хранятся как есть пока функцию не перезапустишь, и можно один раз обсчитав все, потом исопльзовать снова и снова.

удобно было что пишшеь функцию, и сразу видишь результат (так же с уже просчитаннми данными все можно сохранить)

нужно что нибудь подобное, и не оч громоздкое/

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

или пытаться вспомнить плюсы/QT и доводить https://sourceforge.net/projects/ggap/ до работы с актуальной версией?
977264
sage #162 #974520
>>974370
Научился для COFF вроде как. Но отдельной утилитой. Плюс на fasmg можно сделать любой формат отладочной инфы, но надо понимать, что fasmg - это тормоза и костыли.
#163 #975095
Есть ли какие-нибудь opensource C-библиотеки для работы с pe файлами? Без их загрузки в память, само собой. А то понадобилось мне восстановить импорт в дампе программы, такого велосипедостроения понаписал. А готового найти не смог.
#164 #975759
>>960640 (OP)
Хочу на ассемблере сделать консольную игру с аскии-графикой. Но как это сделать? С выводом разноцветных символов я уже разобрался. Как сделать так чтобы либо каждый раз символы стирались и заново писались либо чтобы курсор переходил на сколько-то строк и символов вверх и заново писал символы? Это чтобы добиться изменения изображения.
Может надо использовать сискалл, который переводит курсор в файле? Ведь у консольки есть свой файловый дескриптор
975831
sage #165 #975831
975867
#166 #975867
975935
sage #167 #975935
>>975867
Самое просто - линковаться с ncurses и не заморачиваться деталями.
976460
#168 #976377
>>960640 (OP)
Привет, программач.
Пишу на NASM и сижу на Debian. Мне надо считать любой возможный сектор ЖД. С сделал INT 13h, на что получил закономерный Segmentation Fault. Попытался в гугл, а гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса и пиздуй в DOS. Собственно вопрос. Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а? Если нет, то помоги с материалом для дальнейшей работы. Что ставить, как сделать бочку работать и поставить свой кал NASM на на него?

В общий написал. Сюда на всякий тоже
976442976471
sage #169 #976442
>>976377

> получить результат из Debian


Если тебе именно прочитать нужно, то лучше возьми Си, open(/dev/sdX) (где X - нужный тебе накопитель), seek, read, close (в принципе на асме то же самое, можно сисколлами, можно с libc линковаться). Если это какая-то лаба, ставь DOSBox.
#170 #976460
>>975935
Мне не надо самое простое. Я из тех кто любит изобретать велосипеды.
#171 #976471
>>976377

> С сделал INT 13h, на что получил закономерный Segmentation Fault.


А вот нехуй в защищенном режиме прерывания теребить.

> гугл говорит, что иди-ка ты нахуй с прерываниями к BIOS'у из под пинуса


Не только из под пинуса.

> Можно ли мне, дегенерату, обойтись без DOS'а получить результат из Debian'а?


Очевидная виртуалка очевидна.
Либо пили свой загрузчик, пиши его на загрузочный носитель и в нем еби свой жд хоть через порты. Только сначала лучше убедись, что на канале есть ответ от жд.
#172 #976498
С чего начать изучение реверсинга? инб4 с ассемблера, и я чуток его знаю
976527
#173 #976521
Аноны, помогите. Попался в руки исходный код ядра одного китайского андроид-девайса. Одна треть фалов в нем оказалась бинарными. Сделал hexdump, в первых 256 байт хранятся символы E-SaFeNet LOCK и пустые байты. Чем эту хуергу реверсить?
976527
#174 #976524
Забыл еще добавить, что MIME-тип файлов - application/octet-stream, но я знаю что должен быть text/ascii
#175 #976527
>>976521

>символы E-SaFeNet LOCK


В гугл заглядывал? Там https://www.linuxquestions.org/questions/programming-9/how-to-decrypt-e-safenet-lock-source-files-4175455615/ мне предложили сходить по этой ссылке https://sentinel.gemalto.com/software-monetization/software-protection/
А если у тебя исходники на руках, посмотри в них, как с бинарными файлами работать. И что значит, пустые файлы? Нулями заполненные? Нули явно не разреверсишь.
>>976498
Берёшь любую программу и реверсишь. Если что-то не понятно, гуглишь, учишь и продолжаешь реверсить. Есть crackme разной степени сложности. Есть где-то руководство на русском языке по изучению OllyDbg. Есть "Образ мышления - дизассемблер Ida" для изучения, собственно, Ida.
976535976541
#176 #976535
>>976527
Душевное.

>А если у тебя исходники на руках, посмотри в них, как с бинарными файлами работать


Это должны быть тексты на Си, при компиляции таких файлов компилятор выдает ошибку и сборка не идет.
Первые 256 байтов - литералы E-SafeNet LOCK и нулевые байты. После первого 256байт-сектора начинается шифрокаша.
976537
#177 #976537
>>976535
Вот четвёртой ссылкой гугл выдал такое https://github.com/c3c/E-Safenet/blob/master/esafenet.py
Ты скинул бы куда-нибудь эти исходники. А то гадать приходится, что там у тебя уже есть, а чего нет, что в файлах, а что в исходниках.
976540976550
#178 #976540
>>976537
Да щас ссылку дам, откуда я сам брал - https://yadi.sk/d/mcHadISL3GckHi
#179 #976541
>>976527

>Если что-то не понятно, гуглишь, учишь и продолжаешь реверсить.


А тут спрашивать можно?
976545
#180 #976545
>>976541
Для этого тред и создавал, сам нуб.
ОП
976694
#181 #976550
>>976537
Доки прочитал, и еще в нете навернул. И попробовал атаки по паттернам и известному тексту. Известный текст под рукой оказался, но не подходил из-за того, что файлы неодинаковые и это были сорцы с другого ведра. По паттернам не выдает адекватные ключи и не расшифровывает. А что с атакой по шифротексту - выдается текст, который нужно очень долго править. Хз что делать.
#182 #976694
>>976545
Тогда мой первый вопрос. Открываю exe в олли и ищу в string references строку, которую программа сохраняет в файл, а именно AuthnToken. Но в string references по какой-то причине этой строки нет. Что делать дальше? Я даже не знаю, как такую проблему гуглить.
976695
#183 #976695
>>976694
Может файл пожат, может олька ссылку не распознала на строку. Ищи в памяти по Alt+M, ставь хардварный брейкпоинт на чтение, жди.
976696976697976698
#184 #976696
>>976695
Я перед открытием проверил в PEiD не запакована ли программа, и там никаких подводных не оказалось. Пошёл пробовать твой вариант.
#185 #976697
>>976695
А на что ставить брейкпоинт?
#186 #976698
>>976695
Нашёл стринг! Только не в экзешнике основной программы, а там же в либах. Можно эту строчку как-то отредактировать?
976703
#187 #976703
>>976698
Hiew или любой двоичный редактор.
976868
sage #188 #976728
Нихуя вы тут ебанутые.
#189 #976868
>>976703
А также сама олька. Или она не сохраняет релоки при редактировании длл? (никогда не пробовал)
976968
#190 #976889
Для чего точку входа в сишный шеллкод, расположенную в самом начале ШК-да, понадобилось делать невстраиваемой?

https://pastebin.com/5FfBvp95
#191 #976923
Анон, помоги получить первые 8 секторов ЖД.
sector выходит с нулями и AH тоже равен нулю. Что я делаю не так?
https://pastebin.com/2FhtHes0
#192 #976968
>>976868

>Или она не сохраняет релоки при редактировании длл?


А кто-то их вообще сохраняет? Кроме как при редактировании ресурсов увеличивать строки никто не умеет, кмк.
977056
sage #193 #977056
>>976968
Ну, во-первых, изменялку строк в .exe только ленивый не писал. Это совсем просто для длл и чуть посложнее (требует предварительного анализа в IDA, хотя бы автоматического) для exe без релоков.
Во-вторых, я думал, может быть, олька при сохранении дллки дропает релоки. Но если еще подумать, то ей незачем это делать.
977377
4 Кб, 379x76
#194 #977262
Есть ли в природе распаковщики для InstallAnywhere?

Что-то не гуглится с ходу. Инсталятор у них упакован upx и этот первый шаг легко пройти. А дальше чем его открывать?

Вариант с запуском на виртуалке не подходит -- так как потом надо тратить неделю на чтение лога куда оно что писало и что делало с реестром.
977357
#195 #977264
>>974420

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



А что ты там считал? Мне интересно, т.к. полгода где-то назад пару дней с ней игрался. Но я нуб в алгебре. И и не смог оценить.

Можно ли с помощью нее научиться Теории Галуа за короткий срок? Или она для чего-то другого?

Еще есть Magma, но там анальная лицензия. На рутрекере вроде есть пара ломанных версий. Но я не запускал.
978007
8 Кб, 304x219
#196 #977275
В общем есть одна программа на Go. Мне нужно заменить значение в уже скомпиленом экзешнике константы mystring на "Hi!" . Как это можно сделать? В реверсе нуб.
977330
6 Кб, 438x195
35 Кб, 987x215
#197 #977323

>InstallAnywhere


>Anywhere


>эта цена


>Java-машина не найдена


>2017


До чего мы дожили.
977326
sage #198 #977326
>>977323
Это не дожили, этой херне много лет уже, если я правильно помню.
#199 #977330
>>977275
Открой экзешник в хекс-редакторе, найди Hello, да поменяй. Если строчка короче, то проблем нет.
977361
#200 #977357
>>977262
Сам отвечу на вопрос для архивача и гугла. Можно распаковать в два этапа:
1. upx.exe -d -o temp.exe ..\FooBar_install.exe
2. unzip.exe temp.exe -d .\unzip\

Unzip нужно взять отсюда (7-zip не подходит):
ftp://ftp.info-zip.org/pub/infozip/win32/
#201 #977361
>>977330
Я так и делал. А что делать если длиннее?
977377978008
#202 #977377
>>977361
Выше анон писал >>977056 о некоторых волшебных программах, но ссылки не дал.
977453
sage #203 #977453
>>977377
Я ссылки не дал, потому что это делается скриптом строк за 20 от силы. Длл и exe с релоками:
1) Идем по релокам, смотрим, не указывают ли адреса, к которым применяются поправки, на строку (без дизасма, тупо взяли адрес и сравнили). Собираем такие адреса. В качестве парсера можно взять pefile для питона.
2) Кладем куда-нибудь новую строку: в хвост существующей секции (если есть место), в заголовок, можно новую секцию создать и т. д.
3) Патчим адреса, собранные на шаге 1 новым адресом строки.
Для exe без релоков:
1) Натравливаем на бинарник IDA, а когда анализ завершится, скриптом выдираем все ссылки на строку (idc.DfirstB/idc.DnextB).
2-3) Аналогично.
Есть случаи, когда все это не работает (хитрые ссылки, ида не распознала весь код, не ссылки из секции данных или слажала еще как-то и т. д.), но чаще всего этого более чем достаточно.
977458
#204 #977458
>>977453

>Я ссылки не дал, потому что это делается скриптом строк за 20 от силы.


Ага. И где готовый для тех, кто вообще не в теме, а просто проходил мимо и решил заменить пару строк в бинарнике?
977499978010
sage #205 #977499
>>977458

> кто вообще не в теме, а просто проходил мимо


Скрипткиддисы нинужны. Но в виде исключения вот тебе самый простой случай для 32-битных бинарников с релоками. И это только патч ссылок, саму строку легко и вручную в хекс-редакторе воткнуть:
https://gist.github.com/anonymous/8deb02d068182119b344d30617c64030
977524
#206 #977524
>>977499

>Скрипткиддисы нинужны.


Но ведь я именно он, сижу, венду ковыряю. Все мы когда-то были начинающими.
977550
sage #207 #977550
>>977524
Ну так ты ведь мог и сам написать такое же по описанию на любом известном тебе языке. И написав сам, ты бы приобрел знания и навыки, которые иногда пригождаются. Например, я писал подобное, когда нужно было массово перемещать глобальные инстансы классов из одной секции длл в другую - хуй бы я готовый скрипт под это нашел.
#208 #977586
Есть экзешник, в котором где-то каждый раз формируется AES ключ и мне нужно его найти. Как это делается в общих чертах?
977590
sage #209 #977590
>>977586
S-box-ы ищи сигнатурно. Сам или каким-нибудь PEiD+kanal (что сейчас вместо PEiD модно, напомните?).
977591
#210 #977591
>>977590

>S-box-ы ищи сигнатурно


Эээ... А можно ли так, чтобы я мог загуглить и найти какие-то туторталы или аналогичные кейсы?

Со своей стороны я глянул туторталы по ollydbg на ютубах, и ВО ВСЕХ они ищут текст из окошка в стиле "Ваш пароль неверный", подогрел с этого. У меня нет никаких окошек, я просто знаю, что где-то в коде есть мой AES ключ.
977592
sage #211 #977592
>>977591
Ну сходи в вики, прочитай описание алгоритма для начала, потом почитай https://en.wikipedia.org/wiki/Rijndael_key_schedule. Потом ищи S-box-ы, потом ищи, кто на них ссылается, т.е., где развертывается ключ. А заодно почитай хотя бы что-нибудь обзорное про поля Галуа. Можешь вот этого дядьку глянуть: https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy (лекции 7-8 или даже весь плейлист целиком). Алсо, по лекциям есть книжка.

> туториалы


Хуй знает. Тут чисто логически понятно, что нужно делать.

> загуглить


Я тебе уже дал кейворд: peid+kanal, ты поискал сигнатуры?

> формируется AES ключ


И вообще, ты весьма расплывчато расписал задачу. Может, тебе вообще не AES-ключ, а ключ для AES нужен? Какие-нибудь рандомные байты, которые используются в качестве входа для KDF?
977593
#212 #977593
>>977592

>Ну сходи в вики, прочитай


Почитаю и посмотрю прямо сейчас.

>Хуй знает. Тут чисто логически понятно, что нужно делать.


Ну я вообще ничего не знаю про реверс, я просто пишу на разных языках всякую фигню как хобби.

>Я тебе уже дал кейворд: peid+kanal, ты поискал сигнатуры?


Я даже не знаю, что такое сигнатуры, лол. Вот про PEiD знаю, это тулза для просмотра не упакован ли экзешник (у меня как раз упакован, кстати, но судя потому, что я нагуглил, это не важно в моем случае).

>И вообще, ты весьма расплывчато расписал задачу. Может, тебе вообще не AES-ключ, а ключ для AES нужен?


Нужен именно AES ключ. Смотри, программка обменивается с серверами какими-то своими ключами, потом на основе этих ключей внутри себя формирует ключ, которым потом шифрует свои данные с помощью AES ECB. И чтобы расшифровать данные мне и нужен этот ключ.

>Какие-нибудь рандомные байты, которые используются в качестве входа для KDF?


Тут без понятия вообще.

Задача для меня очень сложная, но я хотел бы разобраться с реверсом на основе этого практического примера. Проблема ещё в том, что экзешник 64битный и в ollydbg не открывается.
977596
#213 #977596
>>977593

> разобраться с реверсом на основе этого практического примера


Упаковщик, 64 бита, криптография (да не простая, а AES та же RSA гораздо понятнее для прогуливавших математику, сервер - все вместе это очень хуевый выбор для первой задачи.

> упакован, кстати, но судя потому, что я нагуглил, это не важно в моем случае


В IDA код смотреть гораздо проще, чем в отладчике. Упакованный бинарник смотреть в IDA бессмысленно. Поэтому как бы напрашивается задача "сначала распаковать, если возможно".

> ключ, которым потом шифрует свои данные с помощью AES ECB


Т.е., у программки есть реализация AES, или она использует CryptoAPI. Во втором случае все просто, в первом случае есть функция шифрования, и тебе ее надо найти - ей на вход придет блок данных и контекст с преобразованным ключом. Также есть функция, которая инициализирует контекст, ее тоже стоит найти, ей на вход придет исходный ключ. Функции эти, во-первых, более-менее рядом, а во-вторых, характерно выглядят (алгоритм гораздо проще найти в бинарнике, если ты уже реализовывал его сам).

> Я даже не знаю, что такое сигнатуры


Многие алгоритмы используют различные константы (например, у CRC32 будет полином) и массивы констант (табличка в табличной реализации CRC32 или S-box в том же Rijndael), могут быть какие-то общие для архитектуры куски кода. Все это позволяет определить алгоритм, называется сигнатурами. Ссылки на константы позволяют выйти на использующие их функции, но вручную все проверять заебешься, поэтому есть всякие скрипты и плагины, которые знают дохуя сигнатур, и показывают все, что найдется в указанном бинарнике.
977603
15 Кб, 1159x78
#214 #977603
>>977596
Спасибо за пояснения, да выбор не очень, но мне бы хотелось именно этого. Ксати, есть и 32битный экзешник, так что за 64бита можно не парится. Точно известно, что как минимум два человека написал утилиты, которые этот ключ автоматически вытаскивают без распаковки (делиться, конечно же, не хотят). Пикрилейтед нашел про мой случай.

Проверил peid+kanal и ничего не нашел. Даже не знаю, как подступиться.
977607
sage #215 #977607
>>977603

> ничего не нашел


Ну сам поищи по памяти. Таблицы в вики есть.
977608
#216 #977608
>>977607
Ох лол, начал смотреть видео из лекций, что ты сбросил, оказалось что это лекции и преподаватель из моего университета.
977609977938
#217 #977609
>>977608

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


Укачало с первых 10 сек видео.
Кто додумался это снимать ТАК. Там Филтифранк с смартфоном в качестве оператора?
977610
30 Кб, 500x279
#218 #977610
>>977609
Problems?
50 Кб, 1503x570
#219 #977677
Посоны, есть 2 dll'ки:
-rwxr-xr-x 1 2301552 Feb 8 2016 MathPlayer.dll
-rwxr-xr-x 1 534128 Feb 8 2016 MathPlayerBHO.dll

Можете скачать с сайта https://www.dessci.com/en/dl/MathPlayerSetup.exe и реверсить вместе со мной

Суть такая. Я несколько дней разбирался с интерфейсом OLE/COM для них и пришел к выводу, что нужную мне функцию снаружи не вызвать. Т.е. через публичный интерфейс там можно только менять параметры.

Какая функция мне нужна? Преобразование MathML в VoiceXML.

Работы этих либ выглядит так:
1. Они загружаются, как плагины для IE.
2. Открываешь html страничку, где есть формулы в виде тегов MathML.
3. Плагины сначала рендерят формулы.
4. По формуле можно кликнуть правой кнопкой мыши и нажать "прочитать выражение".
5. Либа запустит голосовой движек в отдельном потоке и прочитает его.

Непонятные моменты: когда они производят конвертацию MathML в VoiceXML -- в момент рендеринга страницы или после щелчка "прочитать выражение"?

Я поставил брейкпоинт на момент создания контекстного меню, но до обработки щелчка по нему еще очень много процессорных инструкций. Деббагинг какой-то не очень удобный, т.к. постоянно сыпятся исключения и то IE сдохнет, то IDA войдет вечный цикл.

Прошу любых советов по теме.

Моя цель такая: преобразовать эти либы в консольные утилиты, где можно запихнуть файл (строку) с MathML и получить в ответ VoiceXML. Для начала нужно понять как оно вообще работает.

Сам я нюфак.
#220 #977818
Компилятор не принимает строку call calc_abs. Что надо изменить, чтобы всё работало?

.data
N equ 2
minuend db 10
carry db 0
deduction db 7
.code
sub_sign proc
mov al, deduction
sub minuend, al
jnc no_carry
neg minuend
jmp end_p
no_carry: jns no_sign
neg minuend
jmp end_p
no_sign: jno no_overflow
mov carry, 0ffh
call calc_abs
no_overflow:
end_p: ret
sub_sign endp
977938
sage #221 #977938
>>977818

> Компилятор не принимает строку call calc_abs.


> Что надо изменить, чтобы всё работало?


Написать такую функцию?

>>977608

> лекции и преподаватель из моего университета


Ты уверен, что учишься в Германии?
978033998605
#222 #978007
>>977264
чувак, она не для учебы. Она для работы. С группами кольцами и т.д. Это полный бесплатный, кросплатформенная херовен для объемных вычислений. Более грубый аналог Maple. один из кучи вариантов (на википедии есть)
а еще есть группа программ для численных вычислений , матлаб и прочыее прочее. всё оно для своих целей.
Но не для обучения. Грубо говоря навароченные калькуляторы.
В математике научиться чему то можно только многократно прорешивая руками. чем больше тем лучше. В мое время препод матрицы 5х5 в квадрат умел возводить без проблем. А так же на ходу считать для адекватных размерностей определеители и прочую херь.
Хочешь научиться - берешь задачи и решаешь решаешь решаешь. Заебные места с вычислениями конечно можно в любой из софтин (хоть тупо самому написать) реализовать, чтоб время не тратить. но надо идею и ход мыслей всегда понимать.
#223 #978008
>>977361
по сути, смотришь чуть выше. ишешь где вызывается адрес начала строки. вконце где нибудт пишешь свое, и подменяешь в месте вызова адрес.
#224 #978010
>>977458
для полных нулей, качай с трекеров exelab dvd, там видеокурс, или гугли Нарваха Рикардо. Введение в крэкинг с нуля
вообще, в шапке инфы предостаточно, достаточно вечерок посидеть, и такие банальные задачи проблемой не будут.
#225 #978033
>>977938 Помоги, если можешь
.data
N equ 2
minuend db 10
carry db 0
deduction db 7
.code
sub_sign proc
mov al, deduction
sub minuend, al
jnc no_carry
calc_complement:
neg minuend
jmp end_p
no_carry: jns no_sign
neg minuend
jmp end_p
no_sign: jno no_overflow
mov carry, 0ffh
call calc_abs
no_overflow:
calc_abs proc
mov si, cx
dec si
test byte ptr [bx][si], 80h
jz @@exit
call calc_complement
@@exit: ret
end_p: ret
calc_abs endp
#225 #978033
>>977938 Помоги, если можешь
.data
N equ 2
minuend db 10
carry db 0
deduction db 7
.code
sub_sign proc
mov al, deduction
sub minuend, al
jnc no_carry
calc_complement:
neg minuend
jmp end_p
no_carry: jns no_sign
neg minuend
jmp end_p
no_sign: jno no_overflow
mov carry, 0ffh
call calc_abs
no_overflow:
calc_abs proc
mov si, cx
dec si
test byte ptr [bx][si], 80h
jz @@exit
call calc_complement
@@exit: ret
end_p: ret
calc_abs endp
#226 #978210
Допустим, я знаю, что программа обращается ко всем файлам в папке, и например расшифровует один из них "data.dat". Как поставить брейкпоинт на именно этот момент?
978232
#227 #978232
>>978210

>Как поставить брейкпоинт на именно этот момент?


CreateFileW с условием, что имя файла соответствует "data.dat".
978526
#228 #978286
>>960640 (OP)

>Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:


Блин, они все ущербны.
Вот вижу я структуру, которая по смещению 0х30 содержит PFILE_OBJECT, а дальше что? Все эти сайты никак не помогают это найти. Это просто статические страницы.
Хочу написать нормальный сайт с возможностью поиска по списку смещений и их содержимому. То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2". Кто со мной?
978409978411
#229 #978409
>>978286

> сайты


Но зачем? Дали им windbg, дали команду dt, что еще нужно?
978411
#230 #978411
>>978409

>Дали им windbg, дали команду dt, что еще нужно?


Как с помощью dt найти
>>978286

>То есть вводишь типа список используемых смещений "0x18 0x10 0x8", или например "0х10 POBJECT_TYPE 0х30 PFILE", а он тебе "Это возможно структура struct_name_1, struct_name_2".


???
978413
#231 #978413
>>978411

>???


То есть мне нужен поиск названия структуры по частично известному содержимому, а то и вовсе частично известному списку смещений.
978418978506
#232 #978418
>>978413

> по частично известному содержимому, а то и вовсе частично известному списку смещений


А, все, понял проблему. Тут windbg не поможет, да.
#233 #978506
>>978413
Записать всё в базу данных. Только данные подготавливать муторно и долго.
978550
#234 #978526
>>978232
Можешь показать, как ставиться такой в олли?
978558
#235 #978550
>>978506
Ага. Записать, написать скрипты обработки, поиска и удобный интерфейс.

>Только данные подготавливать муторно и долго


Это как раз автоматизируется скриптами. Никто руками забивать все 9000 структур не будет.
978693
#236 #978558
>>978526
Ctrl+F2
Погугли, как юникод-строку в OllyDbg проверять. Вроде надо UNICODE добавить перед строкой.
#237 #978566
Есть dll. Хочу в IDA (или в чем-то другом) узнать какие ключи реестра она может читать?

Мой план действий такой:
1. Гуглю список winapi функций, которые читают реестр. Кстати, их много там?
2. Ищу все их упоминания в dll.

Может эта задача как-то проще решается?
978591978630
#238 #978591
>>978566

>Кстати, их много там?


Штук 10.

>Ищу все их упоминания в dll.


А потом придётся выяснять, какие параметры у функций реестра, чтобы понять, какие ключи читаются. А параметры могут (и будут) формироваться динамически, и не факт, что удастся понять из кода без его запуска.

>Может эта задача как-то проще решается?


Что за библиотека то?
978619
#239 #978614
хочу вытащить из одной игрушки формулу расчета урона в зависимости от прокачки
это из вашей области?
978620
29 Кб, 691x404
#240 #978619
>>978591

>Что за библиотека то?


Для чтения формул. См. скриншоты выше. Правда, это уже другая версия. С другим COM интерфейсом.

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

С реестром dll'ка работает.
#241 #978620
>>978614
Морально готовься потратить на это пару месяцев.
#242 #978630
>>978566

> узнать какие ключи реестра она может читать?


1) Пишется минимальный хост, берется ProcMon/RegMon от SysInternals. Так оно быстрее всего будет.
2) Можно хукнуть RegQueryValueExW/RegSetValueExW и подобные, анализировать адрес возврата, проверяя, из длл ли оно вызвано. Есть готовые утилиты для трейса API.
#243 #978693
>>978550
Вот решение похожей задачи, но без сайта и вообще без каких-либо данных, только код
https://redplait.blogspot.fr/2011/02/partial-structs-matcher.html
978775
79 Кб, 1100x633
#244 #978735
Посоны, скомпилил этот плагин:
https://github.com/alexhude/FRIEND
Осталось сделать к нему конфиг для Intel (ну или другой процессор, если вам надо). Не хотите со мной?

Автор захерачил только для ARMv8.
978737978762978840
#245 #978737
>>978735

>8к строк xml-параши


нет, спасибо
978739
#246 #978739
>>978737
Ну а я попробую сделать. Заодно прочитаю 4700 страниц мануала Intel. Всегда мечтал.
sage #247 #978762
>>978735
Вот если бы оно чтение/изменение отдельных битов в memory-mapped-регистрах документировало - была бы сказка, а референс по инструкциям нахуй не нужен. Посмотреть документацию по регистру в мануале я и сам могу.
#248 #978775
>>978693
Блин, а ведь даже PDB дампить нечем. pdbdump пишет The specified module could not be found и вообще древний как говно мамонта, Dia2Dump выдаёт нечитаемую хуиту, pdbxtract гуевый и вообще проёбывает типы, pdbripper врлде норм, но тоже гуевый, pdbdump.py требует какой-то модуль winnt, который я не нагуглил. Везде хреново.
978832
sage #249 #978832
>>978775
Вбей на github в поиске cvdump.
978858
#250 #978840
>>978735
Эта фигня так и не стала показывать мне хинты. Если кто хочет потестить, то можете скачать отсюда билд:
https://github.com/kamino/FRIEND/tree/multios-port/bin

Но ни он, ни моя собственная версия так и не заработали. Плагин подгружается, в консоль пишет, гуи-настройки работают. А хинтов как не было, так и нет.

Разбираться в ее кишках лень.
#251 #978852
Офигительная программа:
http://www.rohitab.com/apimonitor
Как софт от Руссиновича, только еще лучше.
#252 #978858
>>978832
И как превратить её высер в человеческий вид?
978860
sage #253 #978860
>>978858
Опенсорс жи - сразу высирай то, что требуется.
978904
#254 #978904
>>978860
Осталось разобраться в 400+ кб сорцов и переписать половину, чтобы выдавала правильно. Делов на пару дней, ага, один из которых я буду учить плюсы, на которых ни строки не написал.
978911
#255 #978911
>>978904
Ах да, оно ещё и не компилится, о чём и написано в репозитории. Так что перед переписыванием его ещё дописать нужно. И это явно не на пять минут, иначе кто-нибудь эту задачу уже выполнил бы.
979235
#256 #978912
Нихуя не понимаю. Список нубских вопросов:
1. Когда ищешь значения в Cheat Engine и находишь адрес вида 00000000, то это адрес RAM, который занимает это знание, правильно?
2. Ollydbg в основном окне показывает дизасемблированный код экзешника не запуская его? То есть по сути это то же, что и открыть экзешник в текстовом редакторе и вручную перевести все в ассемблерный код?
3. Если всё же OllyDbg запускает экзешник, то как этот экзешник может работать правильно, когда в при настоящем запуске в него передаются команды вроде --command и подтягиваются библиотеки?
4. Если экзешник запускается, то зачем говорят, что нужно его распаковать перед дизасмом, если он в RAM находится в распакованном виде? Он же сам распаковывается при запуске, разве нет?
5. Если в запакованной программе есть ключ, то можно ли его вытащить без предварительной распаковки? Можно ли автоматизировать вытаскивание этого ключа при каждом запуске этой запакованной программы (написать небольшую утилиту)?
6. Ключ будет хранится в регистрах вроде EIX при выполнении какой-то строчки кода, правильно? А если программа запакована?
978936978939
#257 #978936
>>978912
Ты почитай какую-нибудь книжку для начинающих. Много вопросов отпадёт. "Техника отладки программ без исходных текстов", например.
1. Да. Если придираться к словам, то это виртуальный адрес, он может быть и не в RAM.
2. Ollydbg запускает его, но останавливает выполнение программы (в зависимости от настроек). Поэтому нет, это не одно и тоже.
3. Экзешник запускает операционная система, Ollydbg здесь выступает как Explorer, то есть создаёт процесс, но Ollydbg запускает его как отладчик (такие опции есть при создании процесса, также можно подключиться к уже запущенному процессу). Поэтому операционная система уведомляет отладчик о событиях, таких как загрузка/выгрузка dll, создание/удаление потока, исключения в программе и некоторые другие. Это не эмулятор, это приложение запускается и работает так же, как и любое другое. С некоторыми нюансами, про которые уже написал.
4. Программа запаковывается для защиты от статического анализа, т.е. без запуска приложения (в Ida, например). При динамическом, т.е. когда программа запускается в реальной среде, проще противостоять отладке, поэтому и пакуют. Не каждая программа упакована, соответственно, не каждую надо распаковывать. Не уверен на счёт правильности терминов, но общая идея, надеюсь, понятна.
5. Нет, нельзя. Упаковка - это, с некоторыми оговорками, архив. Ты не сможешь даже узнать, что в нём, пока не распакуешь. Да, можно, даже в отладчике можно скрипт написать, есть соответствующий плагин для Ollydbg.
6. Где угодно. Зависит от того, как программист написал это. Может в секции, может в коде, в регистрах он будет, если этот участок кода написан на ассемблере, иначе как решит компилятор. Но в регистр попасть он откуда-то должен.
978940978944
sage #258 #978939
>>978912
1. Не совсем правильно. Это виртуальный адрес. Виртуальные адреса создают для процесса иллюзию, что кроме него и куска системы в памяти больше ничего нет.
2. OllyDbg - отладчик, отладчики запускают код. Но OllyDbg останавливается еще в системных библиотеках, до того, как код из exe получит управление. И нет, если попросишь, олька тебе покажет дизасм хоть от аллаха, это не обязательно будет код из exe.
3. Это и есть настоящий запуск. Библиотеки подтягиваются, аргументы командной строки можно указать. Процесс точно так же работает и управляется системой, как и при запуске без отладчика (есть некоторые исключения, их используют для детекта отладчика).
4. Упакованный exe - это тебе не архив. Он запускается, выделяет память (или не выделяет), распаковывает или расшифровывает сам себя, копирует распакованные данные поверх себя (или не копирует). Поэтому чтобы увидеть настоящий дизасм, а не код упаковщика и мусор в виде упакованного кода, нужно распаковать или дождаться, пока само распакуется. Очевидно, что если ты хочешь начать отладку с самого первого байта распакованной программы, просто подождать не получится. Алсо, многие протекторы не держат код в рам целиком в распакованном виде, а распаковывают по требованию и/или выполняют код на вм.
5. Да можно, но чтобы узнать как там все устроено, тебе нужно видеть настоящий код.
6. Регистров EIX в x86 нет, в регистрах подолгу ничего не хранится, они нужны для выполнения операций над данными. Ключ будет лежать в памяти. А может и не будет.
Не перестаю проигрывать с треда. Скрипт-кидди и ньюфаг, полезший пилить читы.
978944979215
sage #259 #978940
>>978936
Ну епт. Всю ночь пост висел, а мы одновременно написали почти одно и то же.
#260 #978944
>>978936
>>978939
Благодарю, может и правда стоит почитать книжки.
#261 #979215
>>978939

>Скрипт-кидди и ньюфаг, полезший пилить читы.


И сажа-фаг, который пилит полезные советы и зачем-то при этом сагает тред.
#262 #979235
>>978911
В общем нашёл нормальный проект, допиленное говно мамонта. Требует msdia120.dll, но не особо об этом распространяется, можно просто скачать её из интернета и кинуть рядом, так как с разными студиями ставится разная версия этой либы, у меня она была msdia80.dll, от чего программа и помирала с невнятным The specified module could not be found.
https://redplait.blogspot.fr/2010/09/patched-pdbdump.html
979779
#263 #979380
Есть ли какая-нибудь удобная программа для поиска бинарной строки во всех файлах внутри директории?

Что-нибудь такое:
findhex "F4CD5F10" c:\windows\system32\

Гуглится только софт для поиску внутри 1 файла. Не хочу начинать скрипты писать.
979405979427
sage #264 #979405
>>979380
grep (но он под винду обычно без -P собран, а -P желательно иметь, чтобы паттерн писать без боли), bgrep (но он не умеет в glob, просто обходит указанную директорию рекурсивно). Поэтому проще всего все же написать примерно 4 строки на питоне под себя. А так, я обычно просто фаром ищу, он умеет в хексы.
#265 #979427
>>979380
Total Commander?
#266 #979522
Косноязычный диктор и плохое качество видео, но самый подробный и правильный (с точки зрения обучения с нуля) гайд на дебаг с олли
https://www.youtube.com/playlist?list=PL59fvn5FIiQG0CrnALLgXzdpDTOk0hrz2
979538
#267 #979538
>>979522
Как мне кажется, это наихудший способ обучения. Лучше всего не видео, а текстовая статья. Гугл выдал мне это https://exelab.ru/f/index.php?action=vthread&forum=5&topic=14847
Можно погуглить автора этих статей Рикардо Нарваха (Ricardo Narvaja).
979555
165 Кб, 813x810
#268 #979555
>>979538
Не согласен, насчёт видео. Мне НАМНОГО легче заходит такой способ, даже с корявым диктором.

Но если нравится текстовая версия, то вот тут есть ещё более удобная в одном файле https://yadi.sk/d/EGv70o9F3ChD9N
Добавьте в шапку на перекате, для нуфагов самое то.
#269 #979656
Подкину еще канал, на полноту какую-то парниша не претендует, но мне оче нравится
http://liveoverflow.com/
https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w
У него там в видео по асму есть ссылки на какие-то сайты, сам я нихуя не понил, но вроде как игровые задачки по RE
#270 #979779
>>979235
Блин, а оно не умеет в безымянный union, то есть структуру типа
typedef struct _QUAD {
union {
__int64 UseThisFieldToCopy;
double DoNotUseThisField;
};
} QUAD;
Превращает в
struct _QUAD {

// non-static data --------------------------------
/<thisrel this+0x0>/ /|0x8|/ __int64 UseThisFieldToCopy;
/<thisrel this+0x0>/ /|0x8|/ double DoNotUseThisField;
};
// <size 0x8>
Окей, у них одинаковое смещение, нужно детектить по нему и впихивать в юнион. Заодно перепишу для дампа в базу данных напрямую (SQLite, а оттуда уж перелью в мускул).

Ещё одна проблема- проёб именованных union, она их записывает как union <unnamed-tag> u и всё, концов её не найти. pdbripper выдаёт им номера, хотя, как по мне, лучше их встроить, так как все встреченные мною такие объединения были встроены.

Какие ещё заумности есть в структурах, на которых может споткнутся утилита?
32 Кб, 489x181
#271 #981040
В посте присутствует слово из спам-листа
какое?
981071
#272 #981071
>>981040

>какое?


Выясняй методом половинного деления. И лучше на тестовой доске.
По вопросу- многозадачность работает на прерываниях. Системный таймер генерирует прерывание, которое прерывает работу любого пользовательского потока и запускает системный код, который и определяет, можно ли дальше работать программе или ей уже хватит.
#273 #981527
>>960640 (OP)
Как переделать программу одной ОС в программу другой ОС?
Вот, допустим, у меня программа gcc для линукса. Хочу я её перенести на мою собственную ОС. По сути надо не сильно изменить. Ведь да? Надо только поменять сигнатуру исполняемого файла, если надо, и заменить системные вызовы на вызовы специальных процедур, которые будут эмулировать системные вызовы в Линуксе. Я всё учёл?
981529981531
#274 #981529
>>981527
Всё учёл, кроме того, что люнЮфъсь — это не операционная система, а прежде всего религия.
А так-то да, зделой POSIX API, купи торговую марку, догадайся как попадать в новостные ленты (это вот не так легко, как кажется) и вперёд, у тебя есть своя ОС.
#275 #981531
>>981527

>Вот, допустим, у меня программа gcc для линукса.


У неё есть исходные коды, изменяй @ компиляй.

>Надо только поменять сигнатуру исполняемого файла, если надо


Сами форматы исполняемых файлов отличаются, так что не всё так просто.
Целевую программу и ОС не назовёшь, или нам дальше давать общие советы?
130 Кб, 1206x672
104 Кб, 1372x727
#276 #983183
Репост из мертвого треда
Неофит ИТТ. Поясните пж за следующую вещь. В hex-редакторе при анализе структуры PE файла (pic 1) вижу, что VA OEP = 10212, а ImageBase = 4194304, тогда абсолютный адрес точки входа = 4194304 + 10212 = 4204516 = 0x004027E4, и вроде как в дебаггере именно это число я и должен увидеть помеченным как entry point, но чому то в ollyDbg2.01 я вижу (pic 2) 0х00CE27E6. Я неправильно считаю точку входа? Неправильно трактую значение адресов в левом столбце в ollyDbg? Или еще что то делаю не так?

Алсо, я понимаю, что в olly я вижу образ процесса, а не дизассемблированный исполняемый файл, и загрузчик может выравнивать образ по размеру страницы оперативной памяти, но не настолько много ж блеть. Или настолько?
И да, исполняемый файл не упакован/не зашифрован, т.к. написан мной.
983230983252
sage #277 #983230
>>983183
Во-первых, в ольке ты видишь EP = 0xce27e4, а не 0xce27e6. Во-вторых, если в образе есть релоки, и линкер поставил в IMAGE_OPTIONAL_HEADER.DllCharacteristics флаг IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (в современной студии /DYNAMICBASE у линкера по умолчанию), то система считает себя вправе использовать ASLR для образа, т.е., выбирать рандомный базовый адрес.

На первом пике: DllCharacteristics лежат по 0x15e, это 0x8140 = ...DYNAMIC_BASE, ...NX_COMPAT, ...TERMINAL_SERVER_AWARE.
983239983252983829
#278 #983239
>>983230
Понял, спасибо.
#279 #983252
>>983183
>>983230
Бля, ну вот откуда вы все это умеете? (
983493
#280 #983493
>>983252
Я давно догадывался, что тут сидит норот с форума RSDN.
73 Кб, 1227x620
#281 #983495
Поясните суть дауну, пожалуйста. Ковыряю туториал чит энджина, часть с поинтерами.

Нахожу поинтер и смещение (здесь равно нулю), которые всегда правильно указывают на значение, даже после перезапуска программы (на скрине правильное значение 325). Решаю глянуть в память, перехожу по актуальному адресу (01892950) и что я вижу? А нихуя я не вижу.

1. Почему в памяти по адресу 01892950 нет значения 325?
2. Если прочитать значения оффсета 00634630 в какой-то левой программе, то в нем не будет адресса 01892950. Почему так?
3. 01892950 это значение, которое должно лежать в (00634630 + BaseAddress)?
983559983921
#282 #983559
>>983495

>1. Почему в памяти по адресу 01892950 нет значения 325?


325 в hex это 0x145. А теперь смотри, что у тебя в памяти.
983605
#283 #983605
>>983559
Ну охуеть! И правда.

Теперь остаются остальные вопросы. Я написал маленькую тулзу, которая читает память.

Пик1. Читаю значение по финальному адресу 017F29E0, вытаскиваю правильное 545. Тут всё ок.

Пик2. Читаю значение по оффсету 00634630 в надежде получить свой финальный адрес (в нем же должен храниться указатель, разве нет?), и получаю совсем не то значение. Что я делаю не так?
983606
29 Кб, 689x271
37 Кб, 692x270
#284 #983606
>>983605
Уууу, отклеилось
983621983624
#285 #983621
>>983606
Всё, сам понял. Там правилольное значение, просто в десятичной системе.
#286 #983624
>>983606
Пздц. Это весь тред такой или всё-таки стоит почитать?
983628983761
#287 #983628
>>983624
Ой, иди нахуй, я только вкатился и пытаюсь разобраться.
#288 #983761
>>983624
В прошлом анон на асме на голом железе что-то рисовал, а в этом только шапку, если вдруг чего оттуда не читал.
ОП
#289 #983783
Никто случаем не поделится парой логин-пароль для базы crackme на exelab по ссылке https://exelab.ru/crackme/

Или мб есть какой нибудь другой ресурс с кучей crackme и мануалом по их прохождению? Язык можно русский или английский.
983786
#290 #983786
>>983783
Всё, отбой. Это просто я тупой.
#291 #983820
Допустим, я дизассемблировал программу и мне нужно заменить команду
cmp eax, 0
на
cmp eax, ebx

Как мне это сделать в ida pro? Что то там по дабл клику только eax можно заменить на другой регистр, но вот константу никак. Или в ida pro нет такого функционала, потому что при некоторых заменах придётся учитывать появившиеся сдвиги, ведь в машинном коде размер команды может измениться? Тогда мне, я так понимаю, остаётся только вручную править байты в hex редакторе. И тут вопрос, как мне понимать, что писать, чтобы получить нужные команды, регистры и тд? Типа,
cmp eax, 0 === 83 f8 00, ага. Эмпирическим путём я установил, что cmp транслируется в 0x83f, 8 означает eax (9 уже почему то ecx), а 00 - константный байт, но из каких соображений мне вбивать необходимую команду?
983826983829
#292 #983826
>>983820
Кажись нашёл онлайн конвертер. Втыкать NOP на место лишних байт нормальный подход, или плохой тон? И еще, Это сейчас мне повезло, и
cmp eax, eax занимает 2 байта, а cmp eax, 0 - 3. В другой ситуации мне придётся сдвигать машинный код на n байт вправо от места вставки? Я так понимаю, это может отразиться негативно, ведь в программе есть ссылки на константные переменные. Или если константные переменные в секции .data, а хуячу я в .text, то можно не ссать и вообще полный вперёд?
983829
sage #293 #983829
>>983820
По даблклику там переименование регистров, просто для удобства чтения дизасма. Сам код от этого не меняется. А чтобы пропатчить код есть Edit->Patch program->Assemble, но это пропатчит только базу. Чтобы сохранить изменения, там же есть Apply patches to input file.

>>983826
Втыкать нопы норм. Единственная проблема с патчами - релоки. Если ты правишь код, на который есть релоки, нужно убирать соответствующую запись из релоков, если втыкаешь абсолютый адрес - добавляешь запись. Если релоков нет, и >>983230 ASLR отключен, то просто патчишь.
983832
#294 #983832
>>983829
Всего 5 минут в этом вашем RE и эти релоки уже начинают мне надоедать. Чем чревато просто уебать в pe optional header в dll characteristics аргумент, в который не входит dynamic relocation? Зойчем он вообще нужен? Или в особо больших программах, которые потребляют много ОЗУ это будет полезно?
983839
sage #295 #983839
>>983832
Для .exe можешь спокойно поставить флаг relocation stripped в IMAGE_FILE_HEADER. Для .dll без релоков никак.
986156
#296 #983921
Это снова я >>983495

Что обозначает такая запись "App.exe"+016751A0 ? Это значит базовый адрес "App.exe" плюс смещение, или просто смещение от нуля?
983936
sage #297 #983936
>>983921
У нормальных людей да, это базовый адрес модуля со смещением. Что там в читенжине наворотили, смотри у них в мануале.
983942
#298 #983942
>>983936
Да и в читенджине должно быть основа плюс смещение... Вот только у меня ничего не выходит, теперь уже в 64битном приложении. Основа у него 1400000000 и даже без смещения это уже больше, чем нужно.
#299 #986094
Можно ли как-то Hex-Rays заставить показать псевдокод ассемблерного листинга структурной обработки исключений? Просто он выдаёт код как-будто никаких try с except вообще не существует. А то я скоро Asm начну понимать.
Версия Ida 6.8, по понятным причинам.
986121
sage #300 #986121
>>986094
Насколько я знаю, нельзя. Продолжай подглядывать в дизасм. Алсо, можешь набыдлокодить плагин для простых случаев.
#301 #986156
>>983839
Зачем нужны релоки, если можно компилить в position independent code?
986175986177
#302 #986175
>>986156
PIC тоже содержит релоки, но только для секции DATA и по одному перемещению на каждую переменную (а не на каждое обращение).
sage #303 #986177
>>986156
PIC медленнее для 32-битного кода - приходится жертвовать регистром, а их и так мало.
sage #304 #986221
>>986213

> Для прыщей есть книжка Линкерс-анд-лоадерс, а для спермы что есть?


Книжка линкерс энд лоадерс (там PE вниманием не обходят, да и базовые принципы везде одинаковые), книжка виндоуз интерналс, спека формата PE и многочисленные статьи.
#305 #986660
Допустим есть строка с байтами из памяти cc 02 77 5e e7 02 02 10 14 00 0e 00 88 18 00 и тд. Как понять, где заканчивается одно значение и начинается другое? Тут могут быть строки, 1-байтные, 2-байтные, 4-байтные переменные, я хз.
986663
sage #306 #986663
>>986660
Нужно найти код, который работает с этими данными. Например, поставить на эти данные хардварную точку останова при чтении/записи.
986664
#307 #986664
>>986663
У меня программа запакована. Допустим, я часть этих данных экспериментально могу узнать просто меняя данные. Например, я так вытащил имя пользователя, длину имени и еще пару значений. Но что с остальными, если доступа к нормальному коду нет?
986665
sage #308 #986665
>>986664
Можно менять данные и смотреть поведение программы. Можно собрать больше таких данных, и на основе статистики что-то разбирать. Все же можно ставить бряки и смотреть код - обращаться к ним будет уже распакованная программа, если это не протектор, конечно. Можно разбирать частные случаи (как твоя длина имени) - искать длины/смещения, указатели, числа с плавающей точкой, круглые/известные/магические числа. Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.
986666
#309 #986666
>>986665

>Магии, которая позволит однозначно определить всю структуру на основании одного куска данных нет.


А жаль, именно это мне и нужно было. Игрушка онлайновая, размер огромный, библиотек тысячи, клиент запакован... тут брейкпоинты не помогут.
986676
#310 #986676
>>986666
Тебе что, её всю отреверсить нужно как мне винду?
Раз нет, то ищи бряками то, что нужно.
986677
#311 #986677
>>986676
Я не понимаю, как бряк будет работать с онлайновым приложением. Если связь прервется, то оно просто упадет, это же ММО.
986856986860
#312 #986856
>>986677
Если оно падает при каждом разъединении, то это лол.
Впрочем, никто не говорил, что будет легко.
986876
sage #313 #986860
>>986677
Можно просто в журнал писать при брейкпоинте, а не останавливаться; можно трейс запускать на некоторое время. Олька умеет вроде.
986876
170 Кб, 482x369
#314 #986876
>>986856

>оно падает при каждом разъединении


Ну не просто обваливается, а культурно выдает красивую ошибку с кнопочкой ОК, после нажатия на которую процесс завершается.

>>986860
Чую, что это уже высший пилотаж, мне такое не понять без детальных пояснений.

Но суть в том, что я уже написал все то, что мне нужно - программку, которая из памяти итой игры выдирает нужный кусок, парсит его на состав группы, с сайтов собирает рейтинг по именам и выдает эту инфу в красивый списочек. Проблема только в том, что игра периодически, если долго ничего не происходит, начинает записывать поверх нужных адресов какую-то левую инфу, так что иногда в списке появляется что-то вроде OIUYaiq3q222ItGI_yG. Ну и похуй. А, еще работает только с 64битным клиентом, надо дописать 32битные оффсеты, но мне лень.
#315 #987267
>>960640 (OP)
ЗА ЩО во многих исходных кодах используется синтаксис AT&T? Он же неудобный. Или авторы специально нам дают код в AT&T, а сами используют intelовский синтаксис?
#316 #987404
>>960640 (OP)
дайте ссылку на код работающего кернеля, который переводит в 64-битный режим.
987661
#317 #987661
>>987404
Гугли Windows Research Kernel :3
#318 #988972
Бампну прогрессом реверса WRK что ли...
Убавил ntoswrk.lib на 520кб, вышло 922кб кода. Брал самое лёгкое, дальше сложнее. Видимо, работа эта непосильна для одного человека за разумное время. Продолжаю.
#319 #989000
Как в ollydbg поставить БП на нажатие кнопки?
989024989029
#320 #989024
>>989000
F2.

Не лезь с тупыми вопросами, дебил, блядь, пока базу не освоил самостоятельно.
989033
#321 #989029
>>989000
Ну примерно так и ставить, да. Только условный, на оконной процедуре, по сообщению WM_KEYDOWN и с проверкой wParam на нужную кнопку.
989033
#322 #989033
>>989024
Пидорас, я знаю хот кеи. Ты дал очень точный, но абсолютно бесполезный ответ, как в анекдоте про неудачливого парашютиста и программиста. Я имел в виду, как мне в интерфейсе ollydbg найти кнопку (например, по тексту на ней), и воткнуть БП на событие нажатия.
вот этот господин >>989029 дал информативный ответ на вопрос, за что ему спасибо. правда я уже делал это, просто забыл как, но всё равно спасибо.
989035989106
sage #323 #989035
>>989033
View->Windows. А раз ты говорил про кнопку интерфейса, то брейкпоинт надо на WM_COMMAND ставить.
#324 #989106
>>989033
Когда я в подходящем настроении, я не могу пройти мимо тупых пидорасов в /pr/, не назвав их тупыми пидорасами. У меня хоть и был ДИАЛАП, когда я делал первые попытки писать кейгены, но я себе не мог позволить задать ньюфажный вопрос, не прошерстив архив статей на жестком диске на предмет информации, которая бы помогла мне самостоятельно найти ответ на свой вопрос. В каждом, сука, треде регулярно появляются аноны, которые путают форму ответа в зекаче с поисковой строкой.

Раньше трава была зеленее и на форумах ридонли за такое давали.
989147
sage #325 #989147
>>989106

> на форумах ридонли за такое давали


Пиздишь. Мне в конце 90-х в IRC, не жалея своего времени, объясняли базовые, в общем-то, вещи, на разный лад, пока я не понял. И я не помню, чтобы на каком-нибудь васме давали ридонли за вопросы по теме. Или, может быть, ты сидел в каком-нибудь ололо-преватном какерском форуме среди илиты, которая возгордилась и не могла снизойти?
#326 #989990
>>960640 (OP)
дайте ресурс, где написано как устроены команды x86_64, где там префиксы, коды команд и всё такое.
990001
#327 #989992
Посоветуйте какие-нибудь программы для реверса закрытых файловых форматов. Не исполняемые, тупо хранятся данные. Под линукс желательно.
990001
sage #328 #990001
>>989990
Говоришь в гугле Intel Software Developers Manual. В начале instruction set reference будет глава про форматы, в конце - овердохуя таблиц.

>>989992
010 editor и моск. Можешь посмотреть на Kaitai Struct, но я лично считаю говном и сам кайтай, и его автора разумных доводов приводить не буду.
990008990014
#329 #990008
>>990001

>Говоришь в гугле Intel Software Developers Manual


Сложна. Короче, я просто через хекс-эдитор проверю как компилит фасм в разных комбинациях операндов и возьму результат. Я делаю компилятор своего личного языка программирования.
990012
sage #330 #990012
>>990008

> делаю компилятор своего личного языка программирования


Можешь поступить, как авторы PowerBasic - генери асм-код, используй fasm для сборки (алсо существует fasm as dll, гуглится). Ну или осиль LLVM, это гораздо более правильный подход.
990025
#331 #990014
>>990001

>Kaitai Struct


Наткнулся на это когда гуглил. Совсем говно? Приведи какие есть доводы, не важно насколько они разумны.
990028
#332 #990025
>>990012
Ох, нет, это ещё сложнее, я ничего не понял что в википедии о нём написано. Я лучше буду использовать примеры gcc, как он оптимизирует код, плюс попробую придумать своё.
990029
sage #333 #990028
>>990014
Оно решает задачи, если примириться с предлагаемым подходом. Подход говно, некоторые форматы этим не описать, некоторые существующие описывать максимум неудобно. А автор ниразбирается в реверсе файловых форматов, на многие фичи его уговаривали месяцами. Про генератор парсеров на джаве просто молчу.
sage #334 #990029
>>990025
Можешь код на Си генерить, это тоже нормально, так даже сам Страуструп для крестов делал первое время.
990058
#335 #990042
Реквестирую максимально простую прогу, которая выводит десятичное число. Сам пытаюсь, но не выходит, несмотря на нагугленное. FASM.
990049990055
sage #336 #990049
>>990042
Забыл указать ОС и архитектуру.
990052
#337 #990052
>>990049
DOS, x86
#338 #990055
>>990042
Посмотри здесь:
http://asmworld.ru/uchebnik/

как раз уроки на FASM. И, помнится мне, там есть пример того, что тебе нужно.
990065
#339 #990058
>>990029
Я и так пишу компилятор на си, я офигею его на ассемблере писать, тем более с моими сотнями ифов и елсе.
Потом постораюсь перевести си-код на код своего языка и скомпилить.
#340 #990065
>>990055
Мне бы попроще пример. Там слишком уж комплексный. Потыкаю, коонечно
21 Кб, 892x102
#341 #990098
>>960640 (OP)
Изучал тут команду mov с помощью того что мне выдавал фасм. И тут я наткнулся на что-то странное. Если ввести mov [r12],r13, то вместо обычных трёх байтов мне выдаёт 4. Добавляется байт 24h. Какого фига? Я и насмом проверил, он тоже добавляет такой же байт. Это что? Какой-то костыль x86-64?
990108
sage #342 #990108
>>990098
Давай ты сходишь в мануал интела и прочитаешь про форматы сначала? А потом мы уже поговорим про то, что ты не поймешь.
990298
#343 #990298
>>990108
Нет, там много читать. Я лучше и дальше продолжу исследовать с помощью того что выдаёт фасм. Команда mov, похоже, одна из самых сложных.
#344 #990460
Народ, кто-то пояснит как проверить первый бит числа, один оно или два?
#345 #990461
>>990460
Или 0
990547
#346 #990545
>>960640 (OP)
Как в фасме подключить динамическую библиотеку? А статическую?
990606
#347 #990547
>>990461
>>990460
Щито? Не совсем понял, но возможно тебе помогут битовые сдвиги. shr это сдвинуть вправо, а shl влево. Сдвинутый бит помещается в флаг cf. далее условными переходами jc (если cf = 1) и jnc (если cf = 0)
990608990673
#348 #990555
>>960640 (OP)
Почему у меня не получается дизассемблировать через objdump исполняемый файл, который я скомпилировал фасмом? Мне выводит только, что формат ELF-x86-64
990745
#349 #990606
>>990545
Динамическую библиотеку через data import и макросы library и import. Гуглится, есть в мануале.
Статическую, считай, никак. Линкера в фасме нет, он сразу генерит исполняемый файл. Делай format elf или format ms coff и линкуй любым внешним линкером.
#350 #990608
>>990547
Эксперт в треде, все в Бабаяна!

Логическое И с единицей уже не в моде у нового поколения.
990610
#351 #990610
>>990608
В моде, но я так понял, что вопрос в определении самого старшего бита. Это не сдвигами и не test/and решается.
#352 #990672
>>990460
mov EAX,%хранилище числа%
AND EAX,1 ;в результате логического умножение с 1 результат будет 1, если первый бит =1 и 0 если нет
JZ EIP+X ;проверяешь флаг Z и переходишь куда тебе надо.
#353 #990673
>>990547
>>990460
Хотя этот вариант даже лучше.
#354 #990745
>>990555

>дизассемблировать через objdump


А разве objdump это дизассемблер?

АЛСО, у меня такой вопрос. При сравнении кода в объектниках WRK и кода, скомпилированного из Win2000, часто замечаю, что вместо вызова RtlInitUnicodeString с константным значением выполняется просто присваивание размеров и строки в буфер переменной типа UNICODE_STRING. Собственно вопрос- они это блядь, в ручную меняли, или это действие какого-то макроса? Я для себя запилил INIT_CONSTANT_UNICODE_STRING и заменяю RtlInitUnicodeString на этот макрос, когда это нужно для соответствия коду XP, но не уверен, что моё решение рассово правильное, так как не нашёл подходящего готового макроса или инлайновой функции, и при этом видел, как в некоторых файлах присваивание идёт напрямую (что имхо хуита какая-то).
990752
#355 #990752
>>990745

> А разве objdump это дизассемблер?


Да, там есть простой дизасм. objdump -d

> RtlInitUnicodeString


https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617(v=vs.85).aspx
990771
#356 #990771
>>990752

>https://msdn.microsoft.com/ru-ru/library/windows/hardware/ff563617(v=vs.85).aspx


Почти, но не то. Сама строка не объявлена как константная, поэтому этот код не подходит.
990785
#357 #990785
>>990771
Код покажи.
990819
sage #358 #990819
>>990785
Рассмотрим функцию MapperMarkKey из файла mapper.c. В сорцах Win2000 она выглядит как
buffer = 1;
RtlInitUnicodeString(&unicodeName, REGSTR_VAL_FIRMWAREMEMBER);
Всё ожидаемо и предсказуемо, компилируется в аналогичный код, только вместо константы какая-то переменная, ну это видимо особенность HexRay.

При реверсе же WRKшной функции из файла MAPPER.obj получается (после именования и расстановки типов) типа этого
unicodeName.Buffer = L"FirmwareIdentified";
buffer = 1;
unicodeName.MaximumLength = 38;
unicodeName.Length = 36;

Когда я в своём коде меняю RtlInitUnicodeString на свой макрос имена придумывать не умею, определённый как
#define INIT_CONSTANT_UNICODE_STRING(dest, source) \
dest.MaximumLength = sizeof(source);\
dest.Length = sizeof(source) - sizeof(WCHAR);\
dest.Buffer = (PWSTR)source;
То всё встаёт на свои места, код выходит аналогичным WRKшному с точностью до байта.
Вот и думаю, правильно ли я делаю, или нужно хреначить код напрямую, как это сделано в некоторых файлах WRK, десятки их. Или вообще пойти отрефакторить этот десяток файлов, ибо нехуй код повторяющийся держать.
990957
#359 #990871
Напишите код для вычисление квадратного корня, пожалуйста.(FASM)
990958991068
51 Кб, 785x499
#360 #990904
Нужно это сделать на ассемблере FASM
#361 #990957
>>990819

> на свой макрос


И чего ты выделываешься тогда? Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того, что ты присваиваешь почленно, а макрос генерит литерал. И да, RTL_CONSTANT_STRING - это общепринятый способ, когда ты инициализируешь UNICODE_STRING строковым литералом.
991658
sage #362 #990958
991737
#363 #991068
>>990871
каждый раз отнимаешь одну десятую и проверяешь квадрат не меньше числа и так далее
991076991225991737
#364 #991076
>>991068
sqrt(0.01)
#365 #991160
где можно почитать о MFC reversing?
991178
sage #366 #991178
>>991160
Что именно ты хочешь прочитать? Вот этого достаточно для начала про кресты (статья достаточно старая, но вполне актуальная, тем более если цель - MFC):
https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf
Большинство методов без проблем найдет флирт. Вот это поможет создать необходимые структуры:
https://ofekshilon.com/2010/11/07/d1reportallclasslayout-dumping-object-memory-layout/
Ничего готового не знаю. Найдешь - поделись. Конкретные вопросы будут - задавай.
#367 #991225
>>991068
ебать, я нихуя не понял
36 Кб, 878x564
14 Кб, 1531x349
36 Кб, 635x873
1 Кб, 613x31
#368 #991288
Пытаюсь освоить переполнение буфера
Я должен заполнить массив char своими адресами возврата, чтобы программа прыгнула на нужное мне место (пик1).
проблема в том, что эксплоит работает в виде пик2 (не обязательно именно так, но допустим программа с дырой работает через командные аргументы), и символ, нужный для верного адреса - \x00, что является терминальным символом.
Насколько я знаю, не существует способа передачи этого символа через аргументы.
Конечно же, я могу переписать код, чтобы передавать не массив char , а скажем, массив интов или чего-то подобного, но это будет уже не то. Интересно, как поступать в ситуации, в которой есть именно эта дыра, код программы - пик3, или, к примеру, нужный адрес имеет вид пик4.

Автор книги, Эриксон, для демонстрации использует никс, а там адреса с 0xffffffff идут
#369 #991658
>>990957

> Твой макрос абсолютно идентичен RTL_CONSTANT_STRING, за исключением того


Что мой макрос работает, а RTL_CONSTANT_STRING нет.
991707
#370 #991707
>>991658
Блять, да почему он вдруг не работает-то? UNICODE_STRING dest = RTL_CONSTANT_STRING(L"Yoba"); Генерироваться будет код, идентичный твоему.
991837
#371 #991737
>>990958
>>991068
Сам додумался.
use16
org 100h

mov cx,36 ; из какого числа вывести корень
; si - записывается ответ

start:
mov ax,0000
mov ax,si
mov bx,si
mul bx
add si,1
mov bx,0000
cmp ax,cx
jne start

sub si,1
mov ax,4C00h
int 21h
991738
#372 #991738
>>991737

jnge, а не jne. Забыл исправить
#373 #991837
>>991707
Очевидно, что RTL_CONSTANT_STRING работает только при инициализации переменной, иначе
error C2275: 'UNICODE_STRING' : illegal use of this type as an expression

Кстати, мой код даёт в одном месте, как и дизасм оригинального кода WRK, какой-то мусор:
db 66h, 66h
xchg ax, ax
Нафига он? Выравнивание?
991858
sage #374 #991858
>>991837
Ты так говоришь, как будто твой макрос в такой ситуации "работает". Алсо:
SomeFunc(&(UNICODE_STRING) RTL_CONSTANT_STRING(L"Если компилятор не совсем протухший, он умеет в compound literals"));

> какой-то мусор


Возможно выравнивание, возможно кусок таблицы переходов. Покажи скриншот с кодом до этой херни.
991869
48 Кб, 1264x3069
#375 #991869
>>991858

>Ты так говоришь, как будто твой макрос в такой ситуации "работает".


Таки да, работает. И генерит код, аналогичный WRK.

>Если компилятор не совсем протухший


Собираю я всё тем же компилятором, которым собирался остальной код (cl.exe 14 версии), и более новый мне в моей задаче будет мешать выверять код. Обновлю потом, как всё декомпилирую.

>скриншот


Окей. Весь метод принтсринить было лень, думаю хватит. Нужное отметил стрелочкой.
991896
sage #376 #991896
>>991869
Да, это выравнивание перед циклом.
991925
#377 #991897
>>960640 (OP)
ананасы дизасемблер ида Криса Касперски есть смысл читать, или он устарел безнадежно? если да то что по этой теме наиболее лучше будет?
991898
sage #378 #991898
>>991897
Теперь есть beginners.re еще. Имеет смысл читать и то, и другое.
#379 #991925
>>991896
Ясно. Странно конечно, что компилятор не делает это выравнивание при использовании RTL_CONSTANT_STRING и делает при использовании моей фиготени, притом что остальной код одинаков и замена происходит достаточно далеко от этого кода. Впрочем ладно, спишу на причуды компилятора.

В общем сейчас переношу rules.c, там идёт работа с памятью. Файл из Win2000 гвоздями прибит к 32 битам, что очевидно. Как я понимаю, для портирования на x64 мне нужно поменять тип переменных, связанных с памятью, с ULONG на ULONG_PTR, посмотреть насчёт констант и прочее из https://www.viva64.com/ru/a/0042/ ? Вот например инициализация переменной, которая будет шестым параметром при вызове ZwMapViewOfSection. В Win2000 она выглядит так:
viewBase.LowPart = Address & ~(0xFFF);
viewBase.HighPart = 0;
Правильно ли я сделал, заменив определение переменной Address с ULONG на ULONG_PTR и заменив инициализацию на
#if defined(_AMD64_)
viewBase.QuadPart = Address & (ULONG_PTR)~(0xFFF);
#elif defined(_X86_)
viewBase.LowPart = Address & ~(0xFFF);
viewBase.HighPart = 0;
#else
ASSERT(FALSE); // Кому понадобилось компилить не под х86?
#endif
991945
sage #380 #991945
>>991925

> делает при использовании моей фиготени


Это имеет смысл перед адресом, на который будет возвращаться jmp где-то в конце цикла. Гугли intel lsd например.

> Правильно ли я сделал


Каст к ULONG_PTR тебе не нужен в данном случае, Address уже ULONG_PTR, посмотри как Си integer promotions делает. Мало того, #ifdef тебе тоже не нужен, ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора. Соответственно, код сводится к:
viewBase.QuadPart = Address & ~0xFFF;
992268
#381 #992268
>>991945

>intel lsd


А это вообще законно?

>Каст к ULONG_PTR тебе не нужен в данном случае


Ага, верно. Я сначала добавил каст, а уж потом сменил тип переменной.

>ты можешь просто писать в QuadPart в обоих случаях, не старайся быть умнее компилятора


Тоже верно. Просто хотел оставить вариант кода для х86 как было, мол, так вернее. Окей, так даже проще, видимо, компиляторы со времён Win2000 стали немного умнее.
#382 #992285
>>960640 (OP)
Сегодня ночью у меня болела голова, я находился в полудрёме и мне казалось что моё одеяло это кучка ассемблерных команд, а изгибы на одеяле обозначают ту или иную команду. И мне надо было по определённому их соотнести чтобы получить нужный кусок ассемблерного кода. Но я не хотел этого делать, я хотел спать. Потом голова перестала болеть и я заснул.
#383 #994057
За сколько тут смывает топики?
ОП
994441
sage #384 #994441
>>994057
Ну, например, мартовский Си-тредик жив.
994591
sage #385 #994591
>>994441
Окей, значит в случае чего буду бампать раз в месяц, чтобы потом с нуля не начинать.
#386 #995109
Можно ли на асме вызвать функции LoadLibrary и GetProcedureAddress, не зная адресов этих функций?
995181
sage #387 #995181
>>995109
Ты от соседей? Тот кун с протектором? Очевидно, что не зная адреса функции, нельзя ее вызвать. Адрес можно узнать, но асм для этого не нужен. Нужно найти kernel32 и пройтись по его экспортам: readfsdword/readgsqword, PEB, PEB_LDR_DATA, InLoadOrderModuleList, IMAGE_EXPORT_DIRECTORY - вот это все.
Алсо,

> GetProcedureAddress


вот такого в винде нет, есть GetProcAddress.
995264
#388 #995264
>>995181
Да, в С-треде был я.
Спасибо за совет. А разве адрес LoadLibrary и GetProcAddress будет одним и тем же например между win7 и win10? Или мне нужно как то в процессе выполнения программы прошелестить у пользователя kernel32.dll?
995294
sage #389 #995294
>>995264
Нет, адрес будет разным, и то, что я написал постом выше, как раз и позволяет пройтись по служебным переменным загрузчика исполняемых файлов, найти там kernel32, пройтись по его экспортам и узнать адреса, при этом не вызывая вообще никаких внешних функций. Каждый первый шелкод для винды рано или поздно к этому сводится.
#390 #995445
А на вашем ассамблере интернет магазин написать можно?
995463
sage #391 #995463
>>995445
Можно, но экономически невыгодно.
#392 #995499
Сап реверсач. Познаний в асм нихуя. Есть желание пердолиться на живом примере. В общем суть такова. Есть функция расчета упреждения. Она по идее должна выдавать 2 значения с запятой. Потом, эти значения скармливаются другим функциям. Так вот, каким образом передаются значения? Они закидываются в стек, и всё что мне понадобиться сделать, повесить бряк на функцию и просто смотреть что там лежит?
995501
sage #393 #995501
>>995499

> повесить бряк на функцию и просто смотреть что там лежит?


Да. Смотреть стек ниже адреса возврата, искать указатели на структуру или на каждое из возвращаемых значений, смотреть на состояние FPU заодно. Можешь покидать сюда скрины - посмотрим и посоветуем.
995780
104 Кб, 1382x1444
#394 #995780
>>995501
>>995501
Госпаде как сложно.
Вот этот кусок вроде как должен отвечать за рассчет, до этого функция принимала доп параметры для всех рассчетов. Куда тыкать даже не не знаю.
995782995788996258
115 Кб, 1382x1694
#395 #995782
>>995780
Не весь кусок закринил, сорян. Там правда последнии строки не триггерят бряк. А может я вообще объебался с функцией, и нужного тут нет.
sage #396 #995788
>>995780
Я тебя помню по какому-то из предыдущих тредов. Во всяком случае, эту функцию я уже видел, но дело ничем не кончилось. Или ты другой анон?
995795
#397 #995795
>>995788
С фрилансером я тут мотался год назад наверно. Тогда пытался хукать с помощью левых либр, но только ещё больше запутался. Потом обновилась винда и фрил перестал запускаться, сейчас поставил семерку на другой диск. Сейчас же просто хочу выцепить данные и как нибудь передать другой функцие. Но в прошлый раз была другая функция котороя внезапно не тригерится и не учавствует в обсчете, так что может попутал.
#398 #995879
после установки обновы от wannacrypt винда хр стала глючить странным, не похожим на глюк образом. Возможно это мс так стимулирует переход на 10ку. Не могли бы вы проверить обновы?
995885995891
#399 #995885
>>995879
Деньги вперед.
#400 #995891
>>995879
Сижу на XP, обновление поставил, разницы не заметил.
#401 #996138
Кто нибудь может пояснить за массивы на ассемблере, а точнее как извлечь число из массива в какой либо регистр?
996290
#402 #996161
Дамы и господа, может кто подскажет материалов по написанию вирусов?
996176996347
#403 #996176
>>996161
https://youtu.be/X6Et1rzO4i4
Сайт чувака на видео погугли
#404 #996258
>>995780
Вот такой вопрос созрел. Если я например в CE напишу новый скрипт, который при вызове функции перекинет нас в другую функцию, которую я и буду писать, но которая отличается только тем, что будет иметь в начале вызов другой функции, которая должна будет передать данные внутри нашей новой функции, которые в естественном виде раньше приходили из другого места. Сработает?
996266
#405 #996266
>>996258
Чет как всегда не подумал, но написал. Сработает, но на всех. А чтоб отличить от игрока, ужно найти структуру игрока, но эти структуры ебанутые, и не умею ходить по ветке вверх. Так например есть функция is_player, она передает значения 1 и в зависимости от того, есть ли в округе ещё нпс. Значений столько, сколько и нпс. 1 есть всегда и постоянно считывается, скорей всего игрок. Но как дальше от этого плясать? Вызывающая функция не вызывает эту функцию для проверки, и в условие просто не написать проверку по смещению.
#406 #996290
>>996138
Ответ нуба, не написавшего ни строчки на асм
Так же, как и положил.
Массивы в памяти- просто идущие подряд элементы, так что номер элемента, помноженный на его размер, даст адрес от начала массива. Так что LEA для вычисление эффективного адреса да MOV для загрузки.
996298
#407 #996298
>>996290
Хотябы кто-то ответил. Спасибо, я что-то про это читал но ничего не понял да и fasm ошибку выдавал с командой lea наверное я не правильно ее использовал. А есть какие нибудь примеры?
996336996345
#408 #996336
>>996298
Напиши на плюсах заполняющейся масив. Ну или на любом другом языке, да глянь. Как только найдешь переменные, которые меняются в диапазоне размерности массива, то по идее за ними, должны быть команды, отвечающие за то, что положется в этот массив. Ну и мониторь стэк.
мимо другой нуфаг
#409 #996345
>>996298
mov ecx,индекс
mov eax,[massiv+ecx*4]
Это для интов размером 4 байта. Леа нинужон в простых случаях.
996504
#410 #996347
>>996161
Возьми старые езины типа 29A labs, читай чужие исходники. Заодно напоминаю, что в этой стране вирусы писать незаконно.
#411 #996380
Анон, как можно инвертировать значение аккумулятора побитно на 8080 процессоре? XRI FF это понятно, надо еще как-то да, да - сделай за меня лабу.
996385
#412 #996385
>>996380
Ну кроме ксора разве что в цикле побитово, RLC и CMC, например.
996386
sage #413 #996386
>>996385
RAL, ну ты пони.
996387
#414 #996387
>>996386
Спасибо, тоже думал над этим. Буду разбираться.
#415 #996504
>>996345
отлично спасибо
#416 #996601
Привет, уебки. Никогда раньше ничего не реверсировал, но тут появилась необходимость в одном установщике убрать проверку на наличие файла на компьютере. То есть установщик (обычный .exe-файл) запускается, проверяет, нет ли на пека такой-то установленной программки, если есть - работает, если нет - пишет "Нетустановленногофайла". Как-то так.
Я его дизассемблировал ИДАй, но ничегонепонятно. Как познать тонкости? Я просто наудачу потыкал, убрав пару первых джампов, вернее, сделав их безусловными в надежде, что это и будет перепрыгивание условия, но хуй вам. Что делать, ребята?
996606996607996674
#417 #996606
>>996601
С такими вопросами меня игнорили или посылали читать манулы. Ну и по сути надо достаточно много понимать, чтоб что то сделать, так что вполне резонно, что никто не хочет все объяснять. Слишком долго и не известно, будешь ли усваивать
#418 #996607
>>996601
Используй дебаггер
sage #419 #996674
>>996601
Запатчить чужой инсталлятор очень сложно. Там обычно кастомный байткод, декомпиляторы не для всех есть. Лучше возьми песочницу, посмотри, что и куда пишет инсталлятор и сделай свой такой же. Чтобы узнать, что именно он проверяет, спользуй Filemon/Regmon/ProcMon от Руссиновича и компании.
#420 #997182
Написал демо программу на крестах, скомпилировал. Сижу короче туплю в дизассемблер. Я нашел ассемблерный код работы своей программы, но вызывается он хуй знает когда. Пошёл от точки входа, а там call-call-je-jnz-call-jmp просто пиздец бесконечная цепь вызовов функций и переходов. Собсно вопрос: что за хуйня происходит при запуске программы? Почему собсна моя функция main начинает работать после стопицот всеразличных джампов, коллов и прочего? Разве все предварительные подготовки не загрузчик делает?
997259997267
sage #421 #997259
>>997182

> Почему собсна моя функция main начинает работать после стопицот всеразличных джампов


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

> Разве все предварительные подготовки не загрузчик делает?


Разным языкам нужна разная инициализация. Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник. Можешь сказать линкеру этого не делать (по крайней мере, в винде - в линуксах все слегка сложнее), и тогда сразу начнет работать твой код, но работать он будет с голой жопой.
997267
#422 #997260
Дайте гуйды по ТАСМу для даунов
#423 #997267
>>997259

>Загрузчик не зависит от языка, поэтому для инициализации рантайма линкер втыкает соответствующий код в бинарник


А никто не писал ОС, где это будет встроено?
>>997182

>Сижу короче туплю в дизассемблер.


Нужно использовать продвинутые инструменты. IDA умеет пропускать всю эту библиотечную мишуру и сразу показывать точку входа в приложение.
997270
sage #424 #997270
>>997267

> А никто не писал ОС, где это будет встроено?


Что встроено? У нас одних компиляторов Си только под винду десяток. У всех разные рантаймы, их по-разному нужно инициализировать. Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.

> Нужно использовать продвинутые инструменты.


Можно просто подумать и посмотреть листинг. main() не так уж глубоко от точки входа.
997298
#425 #997298
>>997270

>Если встроить рантайм в ОС, получится msvcrt.dll, наполненный багами и несовместимостями, который даже обновить нельзя, никому ничего не сломав.


Под каждую версию свою либу. Зато можно будет вырезать однотипный код инициализации рантайма из каждого приложения.
Но конечно же это нужно закладывать на этапе разработки ОС, к существующим это уже не прикрутить.
997302997304
sage #426 #997302
>>997298

> Под каждую версию свою либу.


А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили? А если я завтра YobaLang 2.0 сделаю, мне снова писать? А пока я изобретаю, чем мне пользоваться? Зачем вообще напрягаться ради экономии сраных 10 КБ (сишечка или кресты) на каждое приложение? Есть лишь одна реальная причина: статическая линковка = невозможность фиксить баги, но инициализации не так много, код вылизывается за пару версий до совершенства, и никаких сколько-нибудь критичных багов там уже нет.
997508
sage #427 #997304
>>997298
Алсо,

> однотипный


Давай возьмем винду и Visual Studio. Будут разные варианты инициализации для: MBCS/Unicode, Debug/Release, Exe/Dll, Single-/Multithreaded, не считая всяких телеметрий, TLS и прочих __fltused. Итого, у нас уже 24 = 16 вариантов (я слегка преувеличиваю - на самом деле поменьше, это на закате DOS их реально дохуя было в каждом компиляторе). И это только одна студия, а их, сколько-нибудь пригодных для кодинга под современные винды, 9 или 10 версий, не считая сервиспаков. В общем, какая-то надуманная проблема, учитывая, что писать без CRT никто, в общем-то, не запрещает.
7 Кб, 413x449
#428 #997401
Привет, анончик, начал я тут читать теорию, и у меня возник вопрос. Вот тут http://life-prog.ru/1_29310_protsessori-Intel-.html пишут, что в состав блока исполнения в процессоре входят 10 регистров, при этом на пикче там же их 8 + flag register. Потом смотрю, этих флагов вообще 9 штук. Так какие же регистры входят в блок исполнения? Если конкретно? AX, BX, CX, DX, SP, BP, SI, DI... Какие еще?
997405997453
#429 #997405
>>997401
а, все, понял, тут же еще IP
#430 #997421
Анон, помоги ньюфагу.
Есть одна прога, которая подгружает dll написанную на сильно обвусифицированном Си. В нее передаются указатели на массивы, которая эта dll модифицирует по неведомому ебанму алгоритму. И я хуй знает как мне прицепиться отладчиком к этой dll, т.к. после выполнения функции она тут же выгружается.
Как мне ее отладить?
997453
sage #431 #997453
>>997421
В OllyDbg в настройках есть Break on dll load. Когда это происходит, расставляешь бряки на EP, TLS initializers (если есть), эксортируемые функции.

>>997401
Не заморачивайся этой хуйней. С тех пор регистры потолстели в 4 раза, их стало намного больше, и вообще, то, что ты видишь в асме, не совсем отражает реально происходящие процессы внутри камня. На самом деле, машинный код для x86 - это лишь самый низкий уровень, который доступен для написания кода рандомкунами, но не самый низкий уровень, который существует в x86. Внутри проца сейчас по сути эмулятор набора инструкций x86, который транслирует его в микроинструкции для RISC-like ядра.
997819
#432 #997508
>>997302

>А потом я изобрету язык YobaLang, мне в спортлото писать, чтобы мой рантайм встроили?


Очевидно, что это просто пакет ОС, от которого будут зависеть соответствующие программы. С версиями, ага.
#433 #997819
>>997453

> В OllyDbg


Есть проблема. dll 64 битная. А олька вроде толшько 32 умеет отлаживать.
997949
sage #434 #997949
>>997819
Есть же x64dbg.
997984
#435 #997984
>>997949
Есть. Но пока не освоил.
1 - Не получается его заставить реагировать на загорузку dll
2 - Не видить функции, которые отлично видит IDA
1001703
37 Кб, 836x345
37 Кб, 950x509
#436 #998116
Репост из крестового треда, тематика вроде соответствует
Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?
998151998158
#437 #998151
>>998116
Это может быть как нибудь связано с relocation'ами? Типа, мне чтоб получить действительный RVA, нужно к значению из PE файла прибавить фактический ImageBase -
номинальный ImageBase?
sage #438 #998158
>>998116
Опиши еще раз подробно, что ты делаешь? Может, ты смотришь RVA в собранном файле, а потом его пересобираешь? И зачем тебе читать адрес LoadLibrary из собственных импортов в рантайме, когда компилятор может (и делает) то же самое, когда ты делаешь auto x = LoadLibraryA? И хватит в оба треда срать.
998166
#439 #998166
>>998158
Я пытаюсь вручную получить VA LoadLibraryA, основываясь на ImageBase и RVA в таблице импорта PE файла. Это лишь подготовительная мера для кое чего другого.
Да, смотрю RVA в скомпилированном файле, да, потом подставляю константу и пересобираю. НО! Я смотрел в пересобранный .exe, RVA LoadLibraryA таким и остаётся, я проверяю при каждом изменении кода.
Зачем срать через ноздрю, а не использовать LoadLibraryA? Потому что я компилирую код, чтобы потом его выдернуть и вставить в оверлей секции произвольного .exe файла, и там я уже я не могу расчитывать на что либо, кроме данных самого PE-файла. На ассемблере писать не хочу, я на нём только читаю хотя это громко сказано, но не пишу.
В другие треды сру, тому шо не знаю, кто где ответит. Вдруг кто нибудь сидит в С-треде, но не в asm треде ну и наоборот.
998167998169
sage #440 #998167
>>998166
Окей, а почему 0xb93c8 (RVA IMAGE_IMPORT_BY_NAME, т.е., строчки "LoadLibrraryA" с хинтом), а не 0xb4c00 (RVA ячейки IAT, куда попадет адрес LoadLibraryA при загрузке)? Это если я правильно понимаю ту мешанину, которую выдает дампер на скриншоте. Хексы и то легче читать.
998183
sage #441 #998169
>>998166
А, я тебя вспомнил. Расскажи, что за протектор, почему это называется протектор, что ты собираешься протектить, и почему ты собираешься протектить именно так? Мы с тобой общались уже про LoadLibrary в одном их тредов.
998183
17 Кб, 687x191
#442 #998183
>>998167
Потому что address - это raw offset в самом файле, а value - это то, что там находится.
>>998169
Протектор - курсовая работа. Протектор, потому что предполагается, что это говно будет защищать проприетарное ПО от какиров хотя целью было вообще в RE вкатиться, просто тема курсовой позволила совместить приятное с полезным . Учитывая, что дедлайн уже через пару недель, хуй я успею написать DENUVO 2, хотя "научрук" сказал, что тема годная и можно сейчас на пол карасика сделать и сказать типа на дипломе доделаю бля буду. Я застрял на создании инжектора. Мне нужно как то загрузить либу протектора через LoadLibrary, потом вызвать пару функций из либы. Однако, для этого мне нужно получить VA LoadLibraryA и GetProcAddress не говоря уже о том, что мне нужно запихать в импорт защищаемого PE файла LoadLibraryA, если её там нет по умолчанию. Как это делать -
не ебу представляю, но мне страшно от
объема необходимых фиксов и даже не думаю на данный момент.
, с чем я сейчас и сражаюсь.
998202
sage #443 #998202
>>998183

> Потому что address - это raw offset


Охуенная программа. Тогда смотри. FirstThunk - это массив, лежащий в IAT и состоящий из 32- или 64-битных слов. Последний элемент массива - 0. Пока файл не загружен (или не связан), там лежат ординалы (если импорт по ординалу) или RVA структур IMAGE_IMPORT_BY_NAME (если по имени). Когда файл загружается, туда кладутся уже адреса функций. Ты сейчас пытаешься читать значение не оттуда, а из IMAGE_IMPORT_BY_NAME, и в твою переменную z (если смотреть вычесть непонятно зачем прибавленный image_base) попадают кусок хинта и имени: 1879507877 = 0x700703A5 - 12255232 = 6F4C03A5 = 0x03a5 хинт и 4c 6f - байты 'L' 'o'.
Решение: взять любой нормальный вьювер с функций FLC (file location calculator). Преобразовать файловый офсет 0xb4c00 (адрес элемента массива FirstThunk, ссылающегося на нужный IMAGE_IMPORT_BY_NAME) в RVA. Если верить скриншоту, то получится 0xb9000. Использовать этот RVA. Не прибавлять базу к z, потому что загрузчик пишет в IAT уже готовые VA.
998490
#444 #998490
>>998202
Спасибо, понял. Да, В RVA под FirstThunk и всех последующих словах лежит уже VA. Не подскажешь случайно софт, который позволяет добавлять импортируемые функции в PE-файл?
998504
#445 #998504
>>998490
Нашёл софт.
#446 #998558
Есть экзешник написанный на с++ и запакованный "Armadillo Pro Version v9.64 [ Private build stub ] 06-09-2013". На сколько я в жопе? Есть шансы распаковать?
998569
sage #447 #998569
>>998558
Ну скрипты есть вроде. Тебе зачем распаковывать-то: реверсить или патчить?
998577
#448 #998577
>>998569
Учиться патчить не на туториалах, а на настоящей программе. Я только что сидел с этим скриптом, перепробовал все варианты ответов, но отсосал. Все вроде идет нормально, но потом программа крашится. В треде могут с таким помочь или это фантастика и можно забыть?
998595
sage #449 #998595
>>998577
Я думаю, с таким лучше сразу на exelab. Тред для ньюфагов по большей части.
999482
#450 #998605
Заглянул к вам опять, почитал, и опять захотелось в крекинг. Жаль, что в таких вопросах я совсем криворукий, а по теме помогают очень неохотно.

>>977938

>в Германии


Закончил уже.
#451 #999482
>>998595
А ты сам не выглядишь ньюфагом. Может поможешь с распаковкой?
999484
sage #452 #999484
>>999482
Мне не на чем. А виртуалку с виндой настраивать еще и некогда. Извини.
999486
114 Кб, 216x216
#453 #999486
>>999484
RIP
А на том же exelab помогают, если попросить распаковать реальную программу?
999492999535
sage #454 #999492
>>999486
Распаковать - хз. Там есть темка с платными запросами разве что. А вот советом должны помочь.
#455 #999535
>>999486
На exelab сидят чмыри с охуевшим ЧСВ. Удачи.
999542
#456 #999542
>>999535
Ну тогда подсказывай, где спросить о процедуре распаковки конкретно моего случая?
999581
#457 #999581
>>999542
А если дамп с программы снять, что внутри? Протектор содержит виртуальную машину?
Как мне кажется, ты взялся не за то. Нужно начинать с чего-нибудь более простого.
999653
#458 #999653
>>999581
Я прошел гайды Навахо, могу снимать защиту с простых крэкми. Что учить дальше, чтобы поднять уровень, раз подобные прикладные задачи я еще не в состоянии решить?
999655
#459 #999655
>>999653
Напиши свою денувувмпротект, тогда поймешь, как чужие работают.
999661
#460 #999661
>>999655
Ясн.
999662
#461 #999662
>>999661
Я серьезно вообще-то. Во время написания своего аналога чего бы то ни было приходится вникать в детали. И по мере вникания появляется куча специальных знаний, которые иначе пришлось бы год собирать по разным блогам.
128 Кб, 1920x1058
571 Кб, 1920x1058
8 Кб, 444x160
#462 #1000505
Реверсач, в игроразделе подняли тему с отучением игрового бота от жадности. Захотел тоже поучаствовать, можешь помочь с ответом на пару вопросов?
Экзешник бота запакован хз чем заголовок на первой пикче. После останова на EOP по мнению x64dbg и пары джампов появляется конструкция со второго пика. Если выполнить шаг не заходя в вызов F8 вываливается ворнинг, но если провалиться внутрь по F7 и затем продолжить выполнение, то никаких проблем. Это проверка присутствия отладчика, как ее можно обойти?
#463 #1000512
>>1000505
В догонку, такое поведение только при установленных BP. Может это баг x64dbg?
1000514
#464 #1000514
>>1000505
>>1000512
И снова в догонку, с аппаратными точками останова такого не происходит в чем их разница?.
1000527
sage #465 #1000527
>>1000505

> запакован хз чем


https://pid.gamecopyworld.com/

> Это проверка присутствия отладчика, как ее можно обойти?


Ну, например, в качестве самого идиотского варианта оно проверяет наличие байта 0xcc (int3) по 0x3dc19f6, или, например, просто считает чексумму всей кодовой секции.

>>1000514

> в чем их разница?


Аппаратные точки останова пишутся в отладочные регистры (dr0-dr3, dr7), изменения кода не происходит. Single step можно делать установкой TF в Eflags, изменения кода не происходит. Для Step over приходится втыкать брейкпоинт. Если он программный, то по адресу, следующему после интересующей инструкции, втыкается int3, он вызывает exception при выполнении, отладчик его ловит и восстанавливает код, который там был изначально.
#466 #1000728
Хочу шифровать практически целиком или частично, произвольными кусками секции PE файла, у которых есть флаги executable и/или read, расшифровывать буду импортируемой функцией из dll, подключаемой через LoadLibrary в ран тайме, этот блок кода не шифруется. Какие подводные камни меня ожидают? Загрузчик в кодовую секцию вроде подставляет адреса вызова импортируемых функций или какие то там другие данные подставляет в секции, или я не прав? Если это так, то значит, что в шифрованный файл адреса уже подставляться не будут, значит он и работать не будет, или еще того хуже, они будут подставляться, и при расшифровке я уже не получу оригинальный машинный код?

И еще, расскажите о функциях или ходя бы скажите что и где можно прочитать, используемых в активации ПО по ключу. Имею в виду, мне нужна функция, которая для некоторого множества чисел выдавала бы один и тот же результат. Типа, f(x) = x2 даёт одинаковые значения для любых чисел a,b: a =-b. По сути, это сюръективная функция, но я не могу найти примера именно для моих нужд.
1000733
sage #467 #1000733
>>1000728
Добавляй свою секцию, перенаправляй все необходимые IMAGE_NT_HEADERS.OptionalHeader.DataDirectory в свою секцию (экспорты не трогай или копируй, ресурсы... ну можно сделать свои только с иконкой и манифестом, про релоки не забудь). Директорию импортов генери свою, там будет только импорт твоей длл. Когда расшифруешь, обработаешь оригинальные импорты вручную, релоки применишь, DataDirectory восстановишь.
10008911001789
#468 #1000769
>>1000505

>Экзешник бота запакован хз чем


VMProtect v.3.00 - 3.0x (по мнению Exeinfo).

>После останова на EOP


Программа запакована, хотя многие проверки от VMProtect убраны (обнаружение отладчика, запрет работы в виртуальной машине). Поэтому есть возможность поизучать работу программы. Чтобы получить более-менее хороший дамп, надо поставить брейкпойнт на какую-нибудь системную функцию, например, GetSystemTimeAsFileTime. Эта функция, как правило, вызывается одной из первых при запуске приложения. И после этого можно сливать дамп или ставить брейкпойнты там, где нужно.
Подозреваю, что функция проверки ключа защищена VMProtect'ом. Не смог запустить программу на виртуальной машине, поэтому не знаю, как происходит проверка ключа. Если программа стучится на сервер, можно подделать ответ. Если где-то в программе, придётся искать место проверки. Программа статически слинкована с Qt, а там виртуальный вызов на виртуальном вызове вызывает виртуальную функцию. Хотя, если знать, как работает Qt, возможно, трудностей и не будет.
10007701000900
124 Кб, 1296x1056
#469 #1000770
>>1000769

>Если программа стучится на сервер, можно подделать ответ.


Нашёл через гугл тред с обсуждением в vg. Так и есть, стучится на сервер. Делается мегапростой прокси и отвечает, сколько осталось боёв. Запрос идёт через HTTP, значит, не придётся заморачиваться с сертификатами, OpenSSL и прочим MITM'ом.
1000900
#470 #1000891
>>1000733
А как работать с секциями PE файла в ран тайме вообще? Мне на ум приходит только одно - я могу определить ImageBase в ран тайме, он указывает на начало IMAGE_DOS_HEADER, и, я так понимаю. там последовательно загружены и IMAGE_NT_HEADER, там же Optional header, значит можно и в таблицу секции заглянуть, и найти RVA начала шифрованной секции. НО! Читал я о таком забавном механизме, как ASLR, который может распидорасить образ по памяти в случайном порядке, и инфа из таблицы секций мне уже ничем не поможет, или я заблуждаюсь?
1001023
#471 #1000900
>>1000769
>>1000770
Там помимо проверки ключей есть криптованный запрос с ключом, в ответ на который прилетает криптованный ответ с какими-то данными, без которых бот отказывается работать.
Я похоже переоценил свои силенки и дальше брейкпоинта на чтение dword-а из памяти, где лежат константы, для формирования конструкции этого запроса, уйти не смог.
Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?
10009041000923
#472 #1000904
>>1000900

>криптованный запрос с ключом


Есть образец правильного запроса/ответа?
1000927
#473 #1000923
>>1000900

>Кстати, этот VMProtect стоит приличных денег, неужели автор навесил такую махину, на десятирублевого бота?


Уверен, что он его спиздил.
1001023
51 Кб, 1296x1056
#474 #1000927
>>1000904
Только не говори, что ты разраб и обнулишь мой ключ или сдашь WG, лол.
1001014
#475 #1000948
И еще нах, я правильно понимаю, что если у секции PE файла нет атрибута IMAGE_SCN_MEMORY_WRITE, то в ран тайме попытка изменения произвольного значения в какой либо из страниц виртуальной памяти, в которых располагается секция, выдаст мне исключение? Решит ли эту проблему предварительный вызов VirtualProtect с флагом PAGE_EXECUTE_READWRITE?
1001023
#476 #1001014
>>1000927
Ещё вариант придумал. Что, если вводить один и тот же ключ и с помощью прокси отправлять один и тот же ответ. Или это не один способ подсчёта в программе? Она ещё как-то общается с сервером разработчика? Или только при запуске? Ключ, как понимаю, к оборудованию не привязывается, раз в том треде был разговор о передаче ключа. Значит, вполне возможно лениво обойти проверку ключа, даже не разбираясь, что там разработчик напридумывал. Будет желание - посмотрю. И ещё один момент - эти строки предполагается перепечатывать с экрана?
sage #477 #1001023
>>1000891

> Читал я о таком забавном механизме, как ASLR


ASLR выбирает рандомную ImageBase. А образ так называется как раз потому, что более-менее четко описывает содержимое оперативной памяти после загрузки (по большей части). По большей части внутри PE все, что касается адресов - RVA, которые как раз от базы и расчитываются. Для всего остального существуют поправки (relocations).

Так что да, парсишь заголовки, добираешься до нужных структур. Спецификация PE лежит на сайте майкрософта, гуглится; в интернетах куча исходников; в winnt.h есть несколько макросов, которые могут оказаться удобными (особенно в тех местах, где дело касается секций и выравнивания).

>>1000923

> Уверен, что он его спиздил.


Ну загрузите на вирустотал. У автора вмпротекта бизнес по-русски, поэтому спизженные/сдохшие лицензии детектятся как малварь.

>>1000948
Правильно понимаешь. VirtualProtect проблему решит, не забудь потом восстановить обратно, как было. Алсо, PAGE_EXECUTE_READWRITE не любят антивирусы. Если есть возможность, делай просто RW, а потом X вернешь.
#478 #1001318
Кто-нибудь знает, как в Wireshark написать диссектор, который разбирает результат другого протокола.
TCP->WebSocket->Data
Вот для Data мне и надо написать. Как сделать для TCP/UDP - знаю, а как для такого случая - даже найти пример не могу.
1002988
13 Кб, 429x572
sage #479 #1001703
>>997984

> Не получается его заставить реагировать на загорузку dll


Очень странно. Потому что настройка на самом видном месте мало ли, еще актуально, скриншот валяется.
#480 #1001766
Какие элементы PE файла подлежат перемещению через таблицу релокаций? Там же вроде как все адреса - RVA? Имею в виду, вот есть таблица релокаций, каждая структура которой - RVA, по которому находится перемещаемый элемент, а также размер блока памяти. Дак вот RVA чего именно будет помещаться в таблицу релокаций?
1001769
sage #481 #1001769
>>1001766
Можешь считать, что таблица релокаций - это список патчей. Что положишь, то и пропатчит, никаких проверок (ну, кроме границ). В нормальных приложениях релоки касаются только кода и данных, больше VA нигде нет просто.
1001776
#482 #1001776
>>1001769
Но что именно туда закладывает компилятор? И что именно использует VA-адресацию в коде? Всякие вызовы функций, условные и безусловные переходы? А в секции данных - VA области памяти, где хранится переменная, которая по тем или иным причинам не попала в стек? То есть, если у меня стопицот джампов и вызовов функции, то в таблице релокаций будет стопицот записей?
10017891001790
#483 #1001785
И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text? Я понимаю, что есть подводные камни, придется некоторые задачи загрузчика брать на себя, но я не знаю какие именно. Достаточно будет просто осуществить релокацию по таблице в pe файле, или придется еще шаманить над вызовом импортируемых функций, потому что неизвестно, по какому адресу загрузится dll?
sage #484 #1001789
>>1001776

> Но что именно туда закладывает компилятор?


Ну епт, возьми IDA, там в Edit->Plugins есть Jump to next fixup. Очевидно, что релокации нужны для обращений по абсолютному адресу, всегда, когда в инструкции или в данных явно или неявно встречается VA. Данные:
mov eax, offset foo ; foo - VA, фиксап.
mov dword ptr[foo],edx ; Тоже.
Функции:
push offset compare_func ; VA функции compare_func - фиксап.
push size
push num
push dword ptr[ebp-8]
call qsort ; Относительный call, нет фиксапа.

Не обязательно в асме. В секции данных, например:
static int foo; // Чтение-запись - фиксап.
static int ∗bar = &foo; // Взятие адреса - конечно же фиксап, обращения к bar - тоже.
static int some_array[100];
static int ∗element_ptr = somearray + 3; // И тут тоже. Лишь бы был VA, а указывает он на начало объекта или в середину - похуй.

Вызовы и джампы по умолчанию EIP-relative, поэтому обходятся без поправок. Но, например, switch может сгенерировать таблицу переходов:
mov eax,[ecx∗4+table] ; Обращаемся к table по VA - фиксап.
jmp eax
table dd case_1, case_2, case_3 ; Три поправки подряд.

> И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text?


Можешь. Упаковщики так и делают. >>1000733 Возможен любой вариант. Тебе нужно лишь, чтобы после окончания твоих выкрутас образ в памяти выглядел так, как он ожидает. Как именно ты будешь этого достигать - похуй. И вообще, почитал бы ты по упаковщикам/протекторам хотя бы список терминов - вопросов гораздо меньше было бы.

> придется некоторые задачи загрузчика брать на себя, но я не знаю какие именно


Пройтись по импортам, применить фиксапы. Писал же уже выше.

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


На VA элемента IAT в теле инструкции call будет очевидный фиксап.
sage #484 #1001789
>>1001776

> Но что именно туда закладывает компилятор?


Ну епт, возьми IDA, там в Edit->Plugins есть Jump to next fixup. Очевидно, что релокации нужны для обращений по абсолютному адресу, всегда, когда в инструкции или в данных явно или неявно встречается VA. Данные:
mov eax, offset foo ; foo - VA, фиксап.
mov dword ptr[foo],edx ; Тоже.
Функции:
push offset compare_func ; VA функции compare_func - фиксап.
push size
push num
push dword ptr[ebp-8]
call qsort ; Относительный call, нет фиксапа.

Не обязательно в асме. В секции данных, например:
static int foo; // Чтение-запись - фиксап.
static int ∗bar = &foo; // Взятие адреса - конечно же фиксап, обращения к bar - тоже.
static int some_array[100];
static int ∗element_ptr = somearray + 3; // И тут тоже. Лишь бы был VA, а указывает он на начало объекта или в середину - похуй.

Вызовы и джампы по умолчанию EIP-relative, поэтому обходятся без поправок. Но, например, switch может сгенерировать таблицу переходов:
mov eax,[ecx∗4+table] ; Обращаемся к table по VA - фиксап.
jmp eax
table dd case_1, case_2, case_3 ; Три поправки подряд.

> И еще, почему я не могу просто взять и зашифровать секцию .text и .data в исполняемом файле, а потом в ран тайме расшифровать и передать управление в .text?


Можешь. Упаковщики так и делают. >>1000733 Возможен любой вариант. Тебе нужно лишь, чтобы после окончания твоих выкрутас образ в памяти выглядел так, как он ожидает. Как именно ты будешь этого достигать - похуй. И вообще, почитал бы ты по упаковщикам/протекторам хотя бы список терминов - вопросов гораздо меньше было бы.

> придется некоторые задачи загрузчика брать на себя, но я не знаю какие именно


Пройтись по импортам, применить фиксапы. Писал же уже выше.

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


На VA элемента IAT в теле инструкции call будет очевидный фиксап.
sage #485 #1001790
>>1001776
И вообще, забей на релоки. У тебя же exe. Удаляй релоки, ставь файлу relocations stripped, убирай флаг dynamic base впизду, и ASLR сосет хуй, а у тебя гораздо меньше проблем. Потом добавишь корректную обработку, если желание будет.
1001843
#486 #1001843
>>1001790
То есть, если удалить релоки и изменить флаги, то вообще не нужно будет ничего перемещать?
И еще, флаги менять в поле Characteristics FileHeader или в поле DlCharacteristics у OptionalFileHeader?
1002190
sage #487 #1002190
>>1001843
Ну загугли где какой флаг лежит. Их всего два. И да, если у образа стоит relocations stripped, то загрузчик не будет его перемещать по неродной базе, а значит даже смотреть на релоки не будет.
#488 #1002988
>>1001318
Нашёл костыльное решение.
1. В функции plugin_register регистрируется диссектор с помощью функции register_dissector.
2. В функции plugin_reg_handoff с помощью функции heur_dissector_add регистрируется функция, которая будет вызываться всякий раз, когда у предыдущего диссектора останутся данные (если это им предусмотрено). Первый параметр - не название диссектора, а "heuristic sub-dissector list". Для, к примеру, WebSocket это ws.
3. Как обычно, с помощью dissector_add_uint добавляется порт или что-то другое, что будет связано с диссектором.
Только проблема в том, что параметр proto_tree всегда валидный и узнать, что пакет анализируется первый раз можно через pinfo->fd->flags.visited.
#489 #1003736
Поясните разницу между прерываниями и векторами прерываний. Сколько существует прерываний всего, 256?
1003746
#490 #1003746
>>1003736
Прерывание - это процесс, начинающийся, когда процессор дергают за ногу (или он сам себя дергает), а заканчивающийся восстановлением и возобновлением выполнявшейся задачи после обработки прерывания. Вектор прерывания - это адрес обработчика прерывания. Процессор читает вектор из таблицы векторов, таблица векторов лежит в каком-то известном месте. Всего прерываний может быть сколько угодно, если считать аппаратные и считать мультиплексоры прерываний. Векторов в таблице векторов обычно фиксированное количество, 256 в x86.
1003751
#491 #1003751
>>1003746
int 21h это обработчик прерывания?
1003754
#492 #1003754
>>1003751
int 21h - это инструкция, вызывающая обработчик прерывания. Она идет по 0000:21*4, читает оттуда вектор (сегмент/оффсет), и вызывает обработчик (ну и там текущий cs:ip сохраняет и т.п.).
1003762
#493 #1003757
Что скажите за стековые процессоры?
#494 #1003762
>>1003754
Кажется понял. Спасибо, анончик.
IDA 6.8 + IDAStealth Дмитрий #495 #1003934
Доброго времени суток, товарищи реверсеры. У кого-нить работает IDAStealth на IDA 6.8? (Win 10). У меня постоянно сыпет в output ошибку "IDAStealth: Error in IDA callback: Unable to locate RtlDispatchException in KiUserExceptionDispatcher" и нифига не прячет отладчик. Понимаю, что исходники есть, но править их нет никакого желания пока.
#496 #1004811
>>960640 (OP)
Например, есть библиотека so (elf-файл), можно ли каким-то образом добавить в нее свои строки кода, а то и новую функцию из другой библиотеки? Ветки перенести не проблема, а вот как со смещением быть? Android-реверсер итт.
#497 #1013107
Унылый бамп. Где все?
10132661014003
#498 #1013266
>>1013107
Я с реверсом ядра застопорился, а кроме меня тут было 2,5 калеки, которые видимо отвалились.
Впрочем, скоро запилю перекат, до бамплимита тут джва поста.
ОП
#499 #1014003
>>1013107
Я тут но я только в голове отыгрываю, что я реверсер.
#501 #1014792
>>971955
компилируй с -Ofast -ffast-math
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 19 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски