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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
8 Кб, 419x325
Reverse engineering # OP #891716 В конец треда | Веб
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: реверс-инженеринг.

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

Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
#2 #891719
>>891716 (OP)
Вкатился, кто знает, что может означать инструкция "jmp ." в GAS? В гугле не нашел.
891749891957900394
#3 #891728
1. Реквестирую гайды по фасму и его макросам.
2. Что-нибудь о программровании на асме под x64, а то васм со статьями закрылся.
891749
#4 #891749
>>891716 (OP)
Плохой заголовок для треда, не одобряю. Пожалуюсь модератору, пусть переименует.
>>891719

>jmp ." в GAS


Мегабыстрое гугление говорит, что
jmplabel1
Может быть, это метка? Скомпелируй и посмотри результат.
>>891728

>2. Что-нибудь о программровании на асме под x64, а то васм со статьями закрылся.


Прямо программирование? Или ты подразумеваешь реверс?

Ну и у меня вопрос. Как реверсить приложение (x64 в данном случае), напичканное антиотладочными приёмами? Нужен нормальный отладчик. Глючный x64dbg такой глючный, что лучше без него. Какой-нибудь эмулятор цп?
891754891759891786
#5 #891754
>>891749

>Прямо программирование? Или ты подразумеваешь реверс?


И то, и другое. Например, хочу разбираться в том, как настраивается контекст процессов на x64.
891760
#6 #891759
>>891749

>>jmp ." в GAS


>Может быть, это метка? Скомпелируй и посмотри результат.


Это уже листинг декомпельнутого ядра. Системщики опять забыли принять таблетки.

>Как реверсить приложение (x64 в данном случае)?


Только с MSIL работал, декомпил в C#, далее стандартные средства рефакторига студии, после этого решарпером пройтись. Становится вполне читабельным.
891761
#7 #891760
>>891754
Ссылок не подскажу, т.к. меня только реверс интересует. Но отличий от x86 не настолько и много. Если умеешь в него, то и с этим асмом проблем быть не должно.

>как настраивается контекст процессов на x64


Это что значит?
891792
#8 #891761
>>891759

>Только с MSIL работал, декомпил в C#


А если обфусцирован? ConfuserEx'ом каким-нибудь модифицированным?
891768891786
#9 #891768
>>891761
Прям с изменённой структурой кода? Ну вообще обычно такое не юзается в языках, где важен порядок операторов(многопоточность и всё такое). Я видел только с изменёнными идентификаторами по типу axxxx, но большая часть из них восстанавливается.
891774
#10 #891774
>>891768
Не знаю, что там было. Пытался его декомпилировать, но не получилось. В IDA так же не понятно, потому что код приложения запакован.
Но мне интересно про декомпиляцию не C# приложений, а нативных. Какой отладчик, кроме WinDbg ещё можно использовать?
891785891786
#11 #891785
>>891774
Раньше юзали OllyDbg.
891797
Имя #12 #891786
>>891749

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


Ага, обосрался с ним.
>>891761

>А если обфусцирован?


Ищи деобускатор. Если его нет- пишешь его и выкладываешь на радость остальным.
>>891774

>Какой отладчик, кроме WinDbg ещё можно использовать?


OllyDbg.
891797
#13 #891788
Зачем здесь вызову ZeroMemory передается адрес указателя и размер этого указателя? Защита от нублолов?
891789891813
#14 #891789
#15 #891792
>>891760

>Это что значит?


Настройка структуры CONTEXT при инжекте в процесс. Видел, как у кого-то возникли проблемы на XP при настройке процесса в приостановленном состоянии.
891813
#16 #891797
>>891785

>Раньше юзали OllyDbg.


>>891786

>OllyDbg.


x86-64. Про OllyDbg знаю, само собой.
Имя #17 #891801
Собственно ради чего я создал тред. Сейчас я ковыряю ядро винды, мечтаю подпилить его для запуска семёрочных приложений. Интересуют 64 битные версии. В итоге должно получится что-то типа
http://blog.livedoor.jp/blackwingcat/archives/1706829.html
Это патч от японского хакера, но он для 32 битной версии.

Для создания подобных патчей на х64 не хватает инструментов, а именно
1) Возможность добавления записей в ExportTable
2) Перемещение и изменение размера таблицы секций
3) Релокации для функций, чтобы после выполнения предыдущих действий всё работало
4) Контрольные суммы для PE.
Собственно я их разыскиваю.
В идеале следовало бы декомпилировать нужные файлы полностью, или допилить соответствующие исходники вынь2000.

Так же я разыскиваю дебажные сборки семёрки и десятки, авось пригодятся. Такие сборки для XP x32 SP2 и Server 2003 x64 beta у меня есть, но не откажусь от XP x64 и релиза Server 2003.
891956892644949620
#18 #891805
Посоветуйте книг ньюфагу
891808891947
Имя #19 #891808
>>891805
С.В. Зубков: Assembler. Язык неограниченных возможностей.
891840891864
#20 #891813
>>891788
Ошибка там. Хотели, наверное ZeroMemory(data, strlen(data)). Потому что указатель можно занулить и без использования ZeroMemory. Но тред не об этом, тебе в прикреплённый.
>>891792
Что значит "настройка"? Ты и так можешь установить любые значения регистров в нём, чего настраивать то? Сейчас такую программу реверсю, в ней через векторные исключения проверяется состояние регистра dr7 и сбрасывается флаг TF (а ещё он же устанавливается для чего-то). Чтобы установить контекст, нужно вызвать GetThreadContext приостановленного потока (в документации так написано). Или через исключения. Но всё заранее должно быть создано, что нужно для передачи управления на инжект-код. Ты сформулируй вопросы, а то очень уж общий вопрос задаёшь. Или даже так: в чём у тебя возникли сложности?
892644
#21 #891840
>>891808
Благодарю
#22 #891864
>>891808
А есть по-новее?
891996
#23 #891947
>>891805
Платформа?
#24 #891956
>>891801
Немного специфичные требования к софту.
1, 2 и 4. LordPE посмотри.
3. Это не знаю. Наверное, тебе придётся самому написать.
Посмотри книгу К.Касперски "Техника отладки программ без исходного кода". Он как раз рассматривает способы внедрения кода в чужое приложение. Книга хотя и старая, но формат исполняемого файла остался тот же.
892039
#25 #891957
>>891719
Сначала я решил, что это текущий адрес, потом я пошёл в гугол и нашёл, что это текущий адрес. Либо оно зацикливается, либо ничего не делает, в зависимости от того, что подразумевается под текущим адресом в этом случае.
http://tigcc.ticalc.org/doc/gnuasm.html#SEC49
#26 #891996
>>891864
А для чего? Это нестареющая классика, актуальная и через века. Нубы будут программить мышкой в очередном говнофреймворке, делая приложения,пожирающие гигабайты и гигагерцы, а аксакалы по старым методикам писать на асме проги в 30кб.
#27 #892039
>>891956

>1, 2 и 4. LordPE посмотри.


Смотрел. Может только редактировать, добавлять в таблицу экспортов не умеет. При работе с секциями побил файл нафиг.
892288
#28 #892128
>>891716 (OP)
Наканецта
год учил си, и ждал пока ктонибудь запилить нужный тред по RE
892155
#29 #892155
>>892128
А надо было учить асм.
892159
#30 #892159
>>892155

> учить асм


Надо учить все, до чего дотянешься. Особенно если хочется в реверсинг. Кроме 32-битных x86 процессоров существует IA-64, кроме нее существуют и широко распространены ARM и MIPS, кроме кода для реальных процессоров часто приходится иметь дело с байтокодом CLR/JVM/Dalvik/AVM и прочими виртуальными машинами, поэтому нужно более-менее знать язык, который в это скомпилировался. Бывает, что байткод каждый раз новый (протекторы), а бывает, что ебать приходится USB- или Blutetooth- протоколы или структуры файла, а не код.
Так что сишечкой и асмом ограничиваться ни в коем случае не стоит.
892189892288
111 Кб, 960x720
#31 #892177
Лучше бы тред по демосцене запилили.
892189
#32 #892189
>>892159

>существует IA-64


Он официально мёртв.

>Так что сишечкой и асмом ограничиваться ни в коем случае не стоит


А вот это верно.
>>892177
Так запили.
892302
#33 #892288
>>892039
Тогда вариант - написать самому.
>>892159

>протоколы или структуры файла, а не код


Как без реверсинга можно разреверсить протокол или структуру файла? Это же набор (не)случайных байт, попробуй пойми, что к чему относится.
Вот ещё вопрос. Кто как реверсит сетевой протокол? У меня очень не эффективно, как мне кажется. Просто без реверса даже и не поймёшь ничего. Сначала IDA, дебаггер, а только потом какой-то результат. А ещё для упрощения работы пишу диссектор для Wireshark. Удобней становится.
892302
#34 #892302
>>892189
Да, я имел в виду Intel 64 (x86-64), постоянно названия путаю.

>>892288

> Как без реверсинга можно разреверсить протокол или структуру файла?


Предназначение файла известно, иначе зачем его реверсить. В протоколах тоже чаще всего знаешь хотя бы общую картину происходящего. Берешь тот же Kaitai или 010 и разбираешь. Ищешь офсеты и длины, флоаты, строки, zlib брутфорсом неплохо находится. Иногда кода на руках нет, но можно нарыть много файлов и искать корреляции. Хотя если пошифровано правильно а не ксором каким-нибудь, то, конечно, без кода хуй что сделаешь.
#35 #892362
Ладно, если вы не против, я покидаю сюда всякого говна по теме, которого насобирално так и не приступил к изучению
Должен предупредить, что все это в целом ньюфажное
#36 #892366
Блог дядьки написашвего RE for begginners, ссылка на книгу там же.
https://yurichev.com/blog/

Тут подборка книг
https://www.goodreads.com/shelf/show/reverse-engineering

Не совсем RE, но все таки
http://security.cs.rpi.edu/courses/binexp-spring2015/
892584
#37 #892456
Тред будет неполон без ссылок на:

https://www.hex-rays.com/ - лучший в мире дизассемблер, с хуевым отладчиком, и каким-никаким, но декомпилятором. Позволяет реверсить код под любую архитектуру, а в тех редких случаях, когда архитектура все-таки не поддерживается - позволяет за вечер запилить процессорный модуль на крестах или питоне.

http://radare.org/ - безумная смесь дизассемблера, hex-редактора и отладчика, затмевающая даже vim своим умением все портить и пикатьмолча. Но из бесплатного - это самое годное, что существует.
911984
#38 #892517
Посоветуйте современных и годных книг по ассемблеру
892578
#39 #892571
Дан массив из 3 байт. Рассматривая его как массив из 8 трёхразрядных
слов, найти “исключающее или” всех 8 слов для выражения “101”. Помогите пожалуйста с ассемблером. Нужен массив в 8 итераций. В благодарность скину шекели на сотовый.
892578
#40 #892578
>>892517
Выше кидали ссылку. Если тебе по новым возможностям процессоров, то бери мануал от Intel и смотри его.
>>892571
Даже не понятно, что тебе надо. Надо зашифровать массив последовательностью 101?

Аноны, TitanHide.sys есть у кого сконпелированный и плагин от него же для x64dbg?
892587
#41 #892584
#42 #892587
>>892578
Мне нужно сделать операцию XOR к каждому 3-хразрядному слову из массива в 3 байта. Прилагаю свой код. Только мне нужно сделать цикл в 8 итерацию.data segment
mass1 db 11001100b, 10101011b, 00011101b
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov bx,2
mov cl,8
a0:
mov al,mass1[bx]
mov ah,00000101b
sub cl,8
neg cl
cmp cl,3
jb a1
sub cl,3
a1:
shr ah,cl
xor al,ah
sub cl,3
neg cl
cmp 1
ja a3
add cl,3
mov ah,00000101b
shl ah,cl
xor al,ah
a3:
mov ah,00000101b
shl ah,cl
xor al,ah
shl ah,3
xor al,ah
mov mass1[bx],al
dec bx
jns a0
quit:
mov ax,4c00h
int 21h
code ends
end start
#42 #892587
>>892578
Мне нужно сделать операцию XOR к каждому 3-хразрядному слову из массива в 3 байта. Прилагаю свой код. Только мне нужно сделать цикл в 8 итерацию.data segment
mass1 db 11001100b, 10101011b, 00011101b
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov bx,2
mov cl,8
a0:
mov al,mass1[bx]
mov ah,00000101b
sub cl,8
neg cl
cmp cl,3
jb a1
sub cl,3
a1:
shr ah,cl
xor al,ah
sub cl,3
neg cl
cmp 1
ja a3
add cl,3
mov ah,00000101b
shl ah,cl
xor al,ah
a3:
mov ah,00000101b
shl ah,cl
xor al,ah
shl ah,3
xor al,ah
mov mass1[bx],al
dec bx
jns a0
quit:
mov ax,4c00h
int 21h
code ends
end start
892615892629
#43 #892615
>>892587
Плачу 500 рублей. Очень нужно, помогите.
#44 #892629
>>892587
Условие неполное. Можно разбивать, начиная со старших бит 110 011 00'1, а можно с младших бит 100 001 11'1.
892634
#45 #892634

>>>89262>>892629


Со старших. Слева направо 110 011 00b, 1 010 101 1b, 00 011 101b
892642
#46 #892642
>>892634
http://pastebin.com/qSngVQ5q фасм, комментарии не писал принципиально, тут реверса тред лол алсо читай шапку.
122 Кб, 1333x971
#47 #892644
>>891801
Поищи пикрелейтед.
>>891813

>Ошибка там. Хотели, наверное ZeroMemory(data, strlen(data)).


Все там правильно написано, долбоебина, а вот у тебя - полная хуета. Не знаешь - не пизди.

Мамкины какеры, лол.
892652892653
#48 #892652
>>892644

>Не знаешь - не пизди.


Объясни.
892808
#49 #892653
>>892644
PETools ему экспорты тоже не добавит. Я уже говорил в ньюфаг треде, что лучше сразу написать кастомный линкер под такую задачу. Руками он править заебется на второй день.

> Все там правильно написано


Ты забыл спросить, нахуя вообще обнулять указатель таким странным способом, когда можно просто присвоить, и нахуя вообще обнулять указатель, который в худшем случае до следующего вызова какой-нибудь функции в стеке пролежит. И ты мог бы догадаться, что оба аргумента ZeroMemory изначально были неправильные, и имелось в виду именно то, что ты процитировал. Хотя возникает вопрос, нахуя обнулять буфер с отосланным текстом.
892808
#50 #892808
>>892652
>>892653
И действительно. Извиняйте, котаны, обмишурился.
21 Кб, 671x508
#51 #893525
Для x64dbg скачал плагин TitanHide. Во-первых, приложение отладку продолжает определять (через исключения, проверка регистра dr7). Во-вторых, пикрелейтед. Что не так? Уже надоело искать места, где проверка происходит.
893531893534
#52 #893531
>>893525
А что отлаживаешь? Там какой-то кастомный протектор?
893538
sage #53 #893534
>>893525
Алсо, в ридми титанхайда написано, что нужно оторвать у винды патчгард, ты оторвал?
893538
#54 #893538
>>893531

>А что отлаживаешь?


Поделие от Blizzard.
>>893534

>ты оторвал


Не дочитал до туда. И так пришлось столько движений сделать, чтобы собрать и запустить драйвер. Сейчас попробую.
893669944422
#55 #893588
Посоны, помню когда-то в пр мелькала ссылка на древний блог какого-то хуя, который анон горячо всем рекомендовал, помню ещё, там дезигн был совсем топорный и сам блохер типа обучался по ходу написания постов, а ещё писал, что проганьем до этого никогда не занимался. Никто не вспомнит и не поделиться?
893589893590
#56 #893589
>>893588
Блог по асму и реверс инжинирингу, есессно.
#57 #893590
>>893588

>поделится


qfix
#58 #893637
Компиляю я ядро WRK.
Оно поставляется со своим компилятором cl.exe версии 14.0, ml64.exe 8.0 и т.д.
Я решил обновить тулзы, взяв их из установленной Visual Studio 2010, а именно cl.exe 16.0, ml64.exe 10.0 и т.д.
Само собой вылетают ошибки. Некоторые из которых я пофиксил сам, типа
\amd64\procstat.asm(325): error A2022: instruction operands must be the same size
Вот строка в исходниках:
https://github.com/stephanosio/WRKRazzle/blob/master/base/ntos/ke/amd64/procstat.asm#L325
Тут я в определении структуры выше заменил SavedXmm6 db 16 dup (?) на SavedXmm6 OWORD (?) (это вообще корректно? И разве это не одно и тоже?), и этот файл скомпилировался.
Но вот ошибка
..\amd64\trap.asm(2134): error A2156: constant value out of range
Повергает меня в пучины отчаяния- она указывает на пустую строку, и что с ней делать- ХЗ. Строка в исходниках:
https://github.com/stephanosio/WRKRazzle/blob/master/base/ntos/ke/amd64/trap.asm#L2134
Кто-нибудь знает, что ему нужно?

Если скомпилировать эти фалы отдельно старой версией и подсунуть при компиляции новой, то они нормально линкуются, ядро рабочее, и меньше на пару сотен килобайт относительно компиляции старой версией.
893669893734
#59 #893647
Что нужно для того, чтобы стать хорошим системных программистом? Надо ли уметь реализовать свой менеджер потоков под что-то вроде распберри или stm32?
inb4: написать в контактике "системный программист"
939558
9 Кб, 587x129
#60 #893669
>>893538

>Сейчас попробую.


Всё запустилось. Только опять dr7 не пустой (смещение 70h). Что интересно, при модификации (занулении dr7) hardware breakpoinnt не сбрасывается. Можно пропатчить в таком случае.
>>893637
Ничем даже помочь не могу. А зачем обновлять инструмент?
.allocstack 0 - почему тут ноль?
893734
#61 #893734
>>893669

>А зачем обновлять инструмент?


>>893637

>меньше на пару сотен килобайт относительно компиляции старой версией.


То есть в новых инструментах новые оптимизации.

>.allocstack 0 - почему тут ноль?


Функция ничего не делает, вот и стек нулевой. Но действительно, нафиг не нужно. Спасибо, скомпилял.

Чем можно протестировать производительность ядра ОС? Какие-нибудь проги, дрючащие функции API. Интересно сравнить производительность родного ядра с WRK и с WRK, скомпилированным новым инструментом.
896370
sage #63 #893986
>>893965
Там все порядком протухло. Недавно вроде пасту посвежее в этом же сабреддите постили.
893996
#64 #893996
>>893986
А я не глядел, если честно, давно уже туда, якак-то азы сейчас ботаю
#65 #893998
Я не знаю, надо ли это тут, но вот http://www.programminggroundup.blogspot.fi/
#66 #894851
65 сообщений, и ещё никто не упомянул Криса Касперски? Непорядок, пофиксил.
894887894891
148 Кб, 529x607
#67 #894887
>>894851
А криска жив еще или таки сторчался?
895188949944
#68 #894891
>>894851
А кто это? Автор антивируса штоле?
894928
#69 #894926

>2к16


>ассемблер


Ржу.
895533
#70 #894928
894930
#71 #894930
>>894928
Т.е. уже неактуально? Ну а нафиг тогда надо?
895533
#72 #895188
>>894887
Жив, с парашютом прыгать приноровился
895216953269
sage #73 #895216
>>895188

> с парашютом прыгать


Шо опять? Помнится, лет пять назад на васме он обещал без парашюта прыгать.
895225
#74 #895225
>>895216
Ну видимо передумал. Вон, естьвидосы на тытрубе на его канале.
#75 #895533
>>894926
Ну попробуй пореверсить на C++.
>>894930
Научись реверсить хотя бы как он, а уж потом пиши, что не актуально.
895629
#76 #895629
>>895533
Зачем учится какой-то устаревшей технологии?
Она не востребована на рынке => зря проебешь время.
895634
#77 #895634
>>895629
Реверсинг сам по себе не востребован на рынке. Заказов мало, желающих много, и для того, чтобы этим зарабатывать, знать нужно овердохуя. Алсо, это ваши модные нодежс превращаются в устаревшие технологии, а ассемблер как был в 60-х прошлого века, так и в 60-х нашего века никуда не денется.
895652895777
#78 #895652
>>895634

>Реверсинг сам по себе не востребован на рынке.


Серьёзно?
895668
sage #79 #895668
>>895652
Ну смотри. Есть computer forensics разного рода, но это не совсем реверсинг. Есть AV, но это работа за еду, хуже PHP-макак. И есть разовая полулегальная работа. Алсо есть куча ололо-секьюрити-рисерчеров, которые реверсят все подряд в качестве хобби, чаще всего для себя и бесплатно. Что-то еще назвать сможешь?
895760895855
#80 #895760
>>895668
поиск и эксплуатация зеродеев. грейхэты
#81 #895777
>>895634

>Реверсинг сам по себе не востребован на рынке.


Тот же Крис Касперски вполне себе съебался в СШАшку и работает там на удалёнке. Был бы он нахуй никому не нужен, его бы туда не взяли.
895804
sage #82 #895804
>>895777
Крис - крайне хуевый программист и ничем не выдающийся реверсер. Он выехал исключительно на имени (написал книжки, по которым училось целое поколение, потому что других книжек нихуя не было) и на этой его охуительной истории про эксплуатацию бага в микрокоде.
895954
#83 #895855
>>895668

>Есть AV


Что означает сия аббревиатура?

>Что-то еще назвать сможешь?


Банальное - кейген. Не банальное - формат файла, сетевого протокола, работа драйвера с устройством.
Другой уровень - реверс существующих устройств. Прошивка, взаимодействие компонентов и прочее.
Ещё один вариант - установка ПО и ОС на устройства, это ПО и ОС изначально не поддерживающих. Например, какой-то навигатор в автомобиль, в котором ОС Windows Mobile.
В общем, очень много всего. Учитывая, что (в последнее время особенно) полно закрытых проприетарных устройств, программ, ОС, которые не дают возможность сделать что-то, что разработчик не разрешил.
895902
sage #84 #895902
>>895855

> AV


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

> установка ПО и ОС на устройства, это ПО и ОС изначально не поддерживающих


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

> Банальное - кейген


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

О том, что существует множество интересных вещей, в которых можно лампово ковыряться по вечерам после работы, я не спорю. Но вот платят за реверсинг хоть и много, но редко.
#85 #895954
>>895804

>Крис - крайне хуевый программист и ничем не выдающийся реверсер.


Как видишь, даже такие люди могут съебать в США.
895978
#86 #895978
>>895954
А ещё, не смотря на лёгкий аутизм, у него была (а возможно и есть) тян. Что за несправедливость, да?
895979
sage #87 #895979
>>895978
Нет, ну я, конечно, первый про Криса начал, но мы тут какбэ реверсинг собирались обсуждать, а не его негритянокмулаток.
896007
#88 #896007
>>895979
Ты бы лучше сажу отклеил.
219 Кб, 1280x2996
#89 #896370
>>893734

>Чем можно протестировать производительность ядра ОС? Какие-нибудь проги, дрючащие функции API. Интересно сравнить производительность родного ядра с WRK и с WRK, скомпилированным новым инструментом.


В общем использовал PassMark PerformanceTest, результаты в пределах погрешности.
#90 #897771
Bump.
897824
#91 #897824
>>897771
Это мои слова! Правда не понял, чего тут бампать, когда ответов никто не задавал.
ОП
#92 #897846
>>891716 (OP)
Что там с драйверами на микроволновку? Вирус говорят уже есть, драйверы чтобы к компу подключить напишете?
897859
sage #93 #897859
>>897846
Переходник спаяй - подключим.
58 Кб, 300x300
#94 #897878
cпасисбо за тред поцоны.

сам вкатился в асм недавно, ибо доебали проблемы с производительностью\оверхедом в высокоуровневых языках.

удивляюсь как ещё нет фреймворка для разработки приложений под асм x86-64? и пакетного менеджера либ\макросов\сниппетов, по типу pip\npm.

может посоветуйте ресурс со списком библиотек? а то единственное более-менее полезное что я нашёл это BASELIB.

алсо может есть _современная_ книга по имлементации алгоритмов на intel x86-64?

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

алсо как вы думаете кряк-сцена загнётся лет через 5? все переходят на веб приложения, которые не хранятся на десктопе.
молодёжь предпочитает покупать софт в интернете у оффициальных дистрибьюторов и не задумывается об использовании пираток.
897983898281
sage #95 #897983
>>897878

> проблемы с производительностью\оверхедом


Ты что-то делаешь не так. Сишные компиляторы как миниум идут наравне с тем, что ты способен написать. А учитывая, что твой код все равно более, чем полностью состоит из вызовов либ, какая тебе разница, кто будет аргументы в стек/регистры пихать - ты или компилятор?
#96 #898281
>>897878

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


То чувство, когда ощущаешь себя стариком, который даже предустановленную винду с омерзением сносит, чтобы поставить пиратку.
898315
#97 #898315
>>898281
Просто ты долбоеб.
898379
#98 #898379
>>898315
Что поделать, если это проще, чем вычищать тонны блоатвари, а порезанные домашние винды ввергают в пучины отчаяния?
898535898606
#99 #898535
>>898379
Но ведь... большинство знакомых сидят на этой блявари и винде, и им норм.
Т.е. жрать говно - это нормально, а ненормальные - это мы, избалованные могуществом не жрать говно.
Но ведь ненормальным быть плохо. Нужно приучать себя жрать говно, чтоб не выделяться, как все. Бить по рукам, когда они тянутся к очередному системному инструменту или диску с виндой. Устраивать 10-ти часовые сеансы работы с нагскрином/баннером посреди экрана. И всякие такие экзекуции. Ну вы поняли.
898591
#100 #898591
>>898535

>Но ведь ненормальным быть плохо.


Вовсе наоборот, нормальным быть плохо.
898625
#101 #898606
>>898379
А ты вон о чем. Извиняй, братан, попутал. Только смысла покупать пиратку нет - бери оригинальное.
#102 #898625
>>898591
Нормальным быть легко - весь мир рассчитан под нормальных.
А ненормальным быть тяжело - ты сам под себя должен адаптипровать весь мир.
898649
#103 #898649
>>898625

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


И рассчитан ненормальными.
Так оно и работает.
^_^
898695
87 Кб, 850x338
#104 #898695
>>898649
Каковы инженеры...
59 Кб, 300x300
#105 #899154
fasm

есть сабрутина
print :

mov rax, sys_write ;sys_write
mov rdi, 1 ;stdout
lea rsi, [msg] ;msg
mov rdx, msg_size ;get count from fasm example
syscall
ret

segment readable writeable

msg rb 100
msg_size = $-msg

и есть ещё моё незнание асма. Как в рантайме присвоить поменять значение переменной?
хочется написать макрос в котором будет (или прямо в main)
msg = "sometext" или msg = %1, или mov msg, "sometext" похуй

как это сделать? а то у меня максимум что получалось это одну букву записать mov [msg], "L" если больше одной то фасм выдавал ошибку то invalid operand size, то ещё что то.

тут мне пару корешей предлагают вызвать sys_read, но нахуй он мне нужен если у меня всратая переменная значение которой код будет генерировать на лету, и нету файлового дискриптора с которого её считать.
59 Кб, 300x300
#105 #899154
fasm

есть сабрутина
print :

mov rax, sys_write ;sys_write
mov rdi, 1 ;stdout
lea rsi, [msg] ;msg
mov rdx, msg_size ;get count from fasm example
syscall
ret

segment readable writeable

msg rb 100
msg_size = $-msg

и есть ещё моё незнание асма. Как в рантайме присвоить поменять значение переменной?
хочется написать макрос в котором будет (или прямо в main)
msg = "sometext" или msg = %1, или mov msg, "sometext" похуй

как это сделать? а то у меня максимум что получалось это одну букву записать mov [msg], "L" если больше одной то фасм выдавал ошибку то invalid operand size, то ещё что то.

тут мне пару корешей предлагают вызвать sys_read, но нахуй он мне нужен если у меня всратая переменная значение которой код будет генерировать на лету, и нету файлового дискриптора с которого её считать.
899184900359900362
#106 #899184
>>899154
mov rax,msg2
mov [msgptr],rax
...
msgptr dq msg
msg2 db "yoba",0

Или чего ты хочешь?
#107 #900359
>>899154
Классный кстати был отладчик- можно было при наличии определённого скилла и из BSODа выйти с его помощью.
#108 #900362
>>899154
Побайтно копируя в цикле из одного места в другое. В rsi кладёшь ссылку на источник, в rdi ссылку на место, куда писать, и поехал:

mov rsi, OFFSET source
mov rdi, OFFSET dest
xor rcx,rcx

loop:
mov al, [rsi+rxc]
mov [rdi+rcx], al
cmp al, 0
jne loop

Как-то так.
900364
#109 #900364
>>900362
Перед cmp там ещё 'inc rxc', забыл.
#110 #900394
>>891719
Переход в текущий assembly point.

5.4 The Special Dot Symbol
==========================
The special symbol `.' refers to the current address that `as' is
assembling into.
8 Кб, 402x168
#111 #900457
Ну вот что в оригинале было? Согласно http://www.openrce.org/articles/full_view/23 должно быть: ссылка на таблицу виртуальных функций, данные класса. Почему здесь подряд идут? Это что-то вроде:
class Some_Class : public Abstract_Class_1, public Abstract_Class_2, ...
При переходе в функцию все данные начинают отсчитываться от смещения таблицы виртуальных функций, а не от начала класса. Как следствие, смещение нужного мне элемента должно быть 0xC8, а становится 0xC4. Как в Иде такие моменты разрешать?
900548
#112 #900548
>>900457

> должно быть


Никому не должно. Ватком вон вообще в конец класса таблицу совал раньше.

> Как в Иде такие моменты разрешать?


Никак, лол. Сделай структуру Fields, сложи туда данные класса, сделай ClassView, положи туда указатель на vft, дырку нужного размера и Fields). Сделай структуру Class, сложи туда ссылки на vft и все Fields классов. Когда сделаешь это в десятый раз, напиши скрипт.
#113 #901094
#114 #903550
Столкнулся с ARM и не знаю, чего ему не хватает.
1. Ida не может правильно дизассемблировать файл. Частично сделано правильно, частично оставлено как массив байт. Ручное дизассемблирование (клавиша "C") не работает. Подозреваю, что это Thumbs и Ida не может работать с такой смесью кода в одной секции. Костыльное решение с моей стороны - взял отдельную секцию из файла и дизассемблировал. Получилось. Название функций и прочее перенёс с помощью IDC файла.
2. Надо посмотреть, как работают некоторые участки кода. Попробовал с помощью QEMU - не помогает, отладка отваливается после первого же шага.

>FFFFFFFF: process has started (pid=4294967294)


>Debugger: attached to process <GDB remote process> (pid=4294967294)


>Network error: Удаленный хост принудительно разорвал существующее подключение.


Судя по отрицательному PID, не видит отладчик. Пытался гуглить, но описания подобного не нашёл.
903740904935
#115 #903740
>>903550

> Ручное дизассемблирование (клавиша "C") не работает.


Значит, это не ARM, или тыкаешь не там.

> Подозреваю, что это Thumbs


В нужном месте Alt+G, T, 1, OK, потом уже C и т. п. Тебе об этом написали, когда только грузил файл.
903796
#116 #903796
>>903740

>Значит, это не ARM, или тыкаешь не там


Написал же, что Ida частично код дизассемблировала. Это ARM. Когда отдельно секцию скопировал и дизассемблировал её, Ida всё правильно начала распознавать. Почему так - не знаю.

>В нужном месте Alt+G, T, 1, OK, потом уже C


Не работает.
903800
#117 #903800
>>903796
Может быть, покажешь файл?
903820
#118 #903820
>>903800
Файл не могу выложить. В принципе, дизассемблировал, пусть и таким кривым способом.
У меня другой вопрос - почему не подключается к QEMU? Есть ещё какой-нибудь способ выполнить произвольную часть кода (скорректировав регистры, само собой)?
904935
#119 #904935
>>903550
>>903820
А у тебя QEMU насколько древний?
905207
#120 #905207
>>904935
Брал старый (0.13, хотя в документации написано, что нужно 0.10.6 или 0.11) и свежий (2.8.0). Всё равно не получалось с отладкой ничего. Поэтому пошёл по ещё более простому пути - скачал Keil и "проэмулировал" в нём, копируя интересующие меня куски кода.
Но, вообще, беда какая-то с эмуляторами под ARM. Ни один не смог заставить работать.
905369
#121 #905369
>>905207
Ну хуй знает - у меня стандартный способ, когда ты выбираешь тип отладчика GDB, в настройках отладки выбираешь запуск QEMU и там же конфигурацию, выделяешь код функции и нажимаешь запуск - отлично работает сейчас IDA 6.x/QEMU 2.8, но и раньше проблем не было.
#122 #905376
RE- Гад тир!
Моя несбыточная места в 31 год.
Уважаю этих бойцов невидимого фронта.

Возился с Lena151 туториал и русским курсом от какого то типа. Всё есть на торрентах.
И есть еще форум четкий - должен гуглиться по RE в гугле.

Пацаны РЕ инженеры - это сливки ИТ.
905632
sage #123 #905632
>>905376
Сам себя не похвалишь - никто не похвалит, да? Мамке позвони.
#124 #907028
37 Кб, 717x224
#125 #907180
Граф в иде. Такие вот методы обфускации лол. с дефкона, выступление называлось "психологические методы давления на реверс-инженера"
356 Кб, 1088x705
#126 #907181
...Мне хочется плакать, мне хочется смеяться
Мне хочется прыгать. Бодаться и брыкаться...
907221907259
2978 Кб, 1440x850
#127 #907185
А как вам такое: х86 ехешник в 3д.
907191
#128 #907191
>>907185
порвал демо сцену?
907196
#129 #907196
>>907191
причем тут демо сцена?
907202
#130 #907202
>>907196
я просто через призму глянул, и тут навеяло
907204
#131 #907204
>>907202
ты хотел сказать через усеченную пирамиду, видимо.
#132 #907221
>>907181
А зачем нужен этот граф? Ищешь же определённые функции, а как они друг с другом связаны, не всегда надо. А если это был C++ с виртуальными функциями? call eax там только будет.
907225907292
#133 #907225
>>907221
свое вкатывание в РЕ просто я начал (и не закончил лол) именно с этой софтины. а то что там надо найти хэш-функцию и recv - это уже стало ясно(стало ли?) потом.
907551
#134 #907259
>>907181
Мне такое нужно полностью декомпилировать до собирающихся в оригинал исходников, а не просто вылечить одну болезнь.
907291907551
602 Кб, 828x417
#135 #907291
>>907259
ПИЗДА.
сколько за такое заплатят?
907551908082
#136 #907292
>>907221
шарп
причем функционал этой проги умещается навскидку в 1-2к строк максимум на питоне.
впечатление такое что 90% кода - чисто обфускация. это чё - нормально на рынке софта типа?
#137 #907551
>>907225

>именно с этой софтины


Так это не IDA? Точнее, один из её модулей, wingraph.
>>907259
500 строк в оригинале? Если больше - завязнешь надолго. А может ты профи в своём деле, кто тебя знает.
>>907291
От центов до десятков тысяч далларов. Хотя, если программа большая, то быстрее, дешевле и проще написать всё заново. А реверсинг использовать для необходимого - узнать как работает алгоритм, как происходит взаимодействие с сервером и прочее.
907748908082
#138 #907748
>>907551

>Так это не IDA? Точнее, один из её модулей, wingraph.


имел в виду не ИДУ (это инструмент) а сам софт который надо было расчекрыжить.
907762
#139 #907762
>>907748
Вот ты о чём, всё понятно. Сам и не помню, что у меня за первая программа была. Зато помню, что первое, что смог разреверсить до результата - это CS1.6, создал для него генератор ключей, который так и остался на моём компе. На момент создания (наверное, 2008-2009 год был) действующего генератора не нашёл, что несколько странно для такой мегапопулярной игры, ведь у меня на тот момент и опыта было чуть-чуть (хотя, его и сейчас не много). Видимо, реверсеры не играют в CS.
907876
#140 #907876
>>907762
Годно
а я недели две потратил, набирая хотя бы словарь для понимания, чтто нужно делать в рамках поствленной задачи. после того как на дерево это ебучее взлянул.
вот щас отдыхал пару дней, установил идапитон. через час в бой и не знаю, когда уже в следующий раз остановлюсь, анон. затарился колой, сисинтерналсами, вайршарком, оллидебагом, виндоус сдк тулзами. в бой хули
#141 #908040
Посоветуйте сишную библиотеку для дизассемблирования кусков машинного кода так, чтобы между инструкциями можно было вставлять мусор.
#142 #908082
>>907291
Ноль, это хобби. Выше, ковыряющий ведро венды- это я и есть.
>>907551

>500 строк в оригинале?


45 млн. Говорят, столько строк в XP.
Хотя конечно расковыривать буду не всё, только основное- ядро и главные библиотеки, подрачивая на WRK, ReactOS и прочие вайны.
Самая сложная функция тут будет в коде патч-гуарда, там 11к строк кода, написанного самыми запутанными патернами. А без него ядро ОС будет дырявым как решето.

Хочу прикрутить возможность запускать некоторые новые проги и дрова.
>>907551

>А может ты профи в своём деле, кто тебя знает.


Нуб, заглядывающий в справку за тем, чтобы почитать, что такое звёздочка.
Инфибо Не осилишь, бросай
908167
#143 #908167
>>908082

>некоторые новые проги


Они должны запускаться просто после замены версии в заголовке. Если не запустятся, значит в системе нет необходимых функций (тот же iwicimage появился в винде только с третьего сервиспака хр). В общем, ты не туда копаешь.
908319
#144 #908319
>>908167

>Если не запустятся, значит в системе нет необходимых функций


Их я и собираюсь добавлять. А чтобы их добавить, нужно компилить исходники, которые я и собираюсь сделать.
>>908167

>тот же iwicimage появился в винде только с третьего сервиспака хр


Во втором версии х64 тоже должен быть.
908859
#145 #908859
>>908319
Пока я тут ядро ковырял, кто-то запилил враппер для прог:
https://habrahabr.ru/company/reactos/blog/319110/
#146 #909081
Как отключить контроль вызовов, чтобы компилировались инструкции типа __asm call 0x00000000?
20 Кб, 873x637
#147 #911549
Сап, Ананасы. Поставил себе Иду. Как сделать так, чтобы в псевдокоде отображались значения переменных из других функций? Не просто "dword_3D08E04", а именно содержимое этой переменной, например, "хуй".
Сначала всё так и работало, но затем я решил поковыряться в настройка и где-то напортачил
911561
#148 #911561
>>911549
Проблема решена, это я дурак.
#149 #911684
>>891716 (OP)
Ура, два года все го прошло, тред появился. Научите как написать свою ОС на ассемблере? Почитал там калашникова, вот это все, про прерывания, флаги, регистры про 2^8.
Вообщем мне интересно с чем именно взаимодействует ассемблер, во что преобразовывается, как IDE(а fasm, masm и прочие это IDE которые преобразует буковки в машинный код) как они заставляют работать процессор, вот это все. Не, ну понятно что там машиный код хуе-мое но все же.
Алсо, реквестирую способы как написать свой ассемблер с нуля. Также всегда было интересно как погромировали самый первый в мире комп? Это щас ты юсб пограматор запустил, 2 провода в микроконтролер засунул и все есть и ты такой крутой мигаешь гирляндой.
#150 #911812
>>911684
Тененбома читал? Операционные системы, архитектуру*
#151 #911814
>>911684

>Также всегда было интересно как погромировали самый первый в мире комп



Надыбай писульки Адушки, она там для манямашины что-то накодила
#152 #911819
>>911684
По чертежам Бэббиджа и фон Неймана собирали, вручную создавали электрическую схему вместо набора кода.
#153 #911914
>>911684
Нахуй иди, быдлан из /b/.
sage #154 #911957
>>911684
Васм (найдешь где-нибудь) дамп. Заклинание кода от Аквилы.
#155 #911960
>>911684
По написанию ассемблера (и пердолинг сигналов) - nand2tetris на курсере. Более глубоко (и сложно) - Computation Structures от мита на едх. По осям - научись в асм и читай "процессор интел в защищённом режиме" с васм.ру и, наверное, Таненбаума.
#156 #911978
Про защищенный режим Зубкова же читать надо.
#157 #911984
>>892456
А оли? Еще в 32 битной винде есть консолька дебаг.
911986
#158 #911986
>>911984
Я в Оле так и не понял, как искать значения в памяти (по типу ArtMoney).
#159 #911991
https://habrahabr.ru/post/230359/
Поясните за эту вещь, аноны. Сори, я не такой уж знаток но как я понел тут специально для тупых запилили тот же ассемблер, но работающий на высокоуровневых языках. В чем тогда профит учить асм в 2017?
912006912164
#160 #912006
>>911991

> В чем тогда профит учить асм в 2017?


Для взлома чужих прог, как правило.
#161 #912164
>>911991
Это обычный редактор. Как notepad++, например.
#162 #912194
Очередной раз сталкиваюсь с программой, защищённой протектором и не знаю, что делать дальше. Прошлый раз это была Enigma 3.70. С ней было проще - нашёл скрипт для OllyDbg, хотя мне и не удалось снять защиту, но нужные данные вытащил. Здесь же тот же самый скрипт пишет, что версия 5.50 и, естественно, завершается досрочно. Как тут действовать? Через GetWindowTextW нужного окна перехватил момент получения текста. Но дальше он как минимум в пять разных мест копируется, какие-то действия выполняются и всё - ключ не правильный, программа завершается. В OllyDbg только один брекпойнт на память можно ставить. Подскажите, в какую сторону копать.
#163 #912441
Доставьте все книги и статьи мыщъха, а то я проебал.
912463
sage #164 #912463
9 Кб, 519x356
#165 #912858
Посоветуйте мануал по ассемблеру интел. Интересуют опкоды инструкций и раскуривание адресации в вызовах (прямая адресация, косвенная, дальняя и т.д. + опкоды вызовов и отличия E8, E9 от FF15).

Алсо, какой опкод отвечает за вызов функции из кернеля, но не FF15? FF15 использует косвенную адресацию.
912895913106
#166 #912895
>>912858
SYSENTER/SYSCALL ?
913154
sage #167 #913106
>>912858

> Посоветуйте мануал по ассемблеру интел


Советую:
https://software.intel.com/en-us/articles/intel-sdm
Формат инструкций и опкоды во втором томе.
#168 #913154
>>912895
Как используется этот буллшит SYSENTER? Как при помощи него вызывать функи из kernel32?

__asm
{
push 0;
mov eax, ExitProcess;
;mov edx, esp;
SYSENTER;
};

PS. Юзал SYSCALL под никсами, но там все немного по-другому.
913159913201
#169 #913157
Студент в треде. Возникла проблема с турбо ассемблер для процессора intel 8086.
Суть проблемы в умножении слова на двойное слово. Все консультации проебаны, как и отношения с преподом. Вся надежда на тебя, анон.
Пока моих скудных знаний хватает только но то, чтобы в AX занести младшие 2 байта двойного слова и умножить на слово. Что делать со старшими разрядами представляю смутно. Результаты отдельных действий заношу в ячейки размером в двойное слово. конечный результат имеет длину четверного слова.
(d2+w3)-b1(w1b2-b1)/b3/w3 - Вот формула по которой вычисляю. b,w,d - переменный длинной в байт, слово и двойное слово.
913201
#170 #913159
>>913154
Алсо, про нейтив апи знаю, но вызов Nt/ZwExitProcess что-то не получается. Это говно в хедере определено?
913201
#171 #913162
Булшит

void *zwExit = GetProcAddress(LoadLibraryA("ntdll.dll"), "ZwTerminateProcess");
__asm
{
push 0;
mov eax, zwExit;
mov edx, esp;
SYSENTER;
};
913195913204
#172 #913167
Как определить индекс системного вызова по нужному мне апи? Пишу вспомогательный шеллкод для вызова апи по хэшу. Почти все готово, но вызов апи костыльный. Хочу сделать хорошо.
#173 #913195
>>913162
А, ты хочешь напрямую функции из ядра вызывать минуя ntdll? У меня тут есть кодец готовый - http://pastebin.com/vAY6KW0r
913200
#174 #913200
>>913195
Смотри, что я хочу сделать. Вызов апи по хэшу для дополнительной антиотладки.

http://paste.ofcode.org/EzJbj84TmgiJHsVBZ7fnpn

Но не знаю, как правильно вызвать функцию, адрес которой получен. Можно сделать костыль: сохранить адрес в начале шеллкода в четырех байтах и использовать косвенную адресацию, но это выглядит мерзко.
913204
#175 #913201
>>913154

>Как при помощи него вызывать функи из kernel32


Никак. sysenter нужен для перехода из ring3 в ring0. В регистр eax заносится число, по которому ядро определяет, какую функцию вызывают. Крайне системозависимо.
>>913157
А в чём проблема расширить слово до двойного слова и перемножить? Или у тебя там 16 битный процессор?
>>913159

>вызов Nt/ZwExitProcess что-то не получается


А посмотреть, как реализовано в ОС нельзя?
913206
#176 #913204
>>913200
Ааа, понял.

>Но не знаю, как правильно вызвать функцию, адрес которой получен


Запушить аргументы, и потом:
mov eax, funcAddr
call eax

Но если ты хочешь вызывать функции ядра через SYSENTER как тут >>913162 то тебе первым делом надо SDT индекс этой функции получить. А потом вызвать её можно вот так на х86 системе - http://pastebin.com/9CrNQZKj
Соответственно callgatex86 вызывать вот так:

return callgatex86(sdtIndex, 5, 0, ProcessHandle, BaseAddress, ProtectSize, NewProtect, OldProtect);
913209
#177 #913206
>>913201
16 битный процессор, в этом все сложность.
913210
#178 #913209
>>913204

>mov eax, funcAddr


>call eax



Так и думал, что придется увеличивать число команд. А как лучше потом вызвать этот шеллкод? Если через CallWindowProc, то придется в начале шеллкода извлекать четыре переданных аргумента из стека. Создавать поток как-то слишком громоздко и я не уверен, что получится одной строчкой получить то, что вернула функция.
#179 #913210
>>913206
google:умножение 32 битных чисел на 16 битном процессоре
Первая же ссылка http://asmworld.ru/isxodniki/32-bitnoe-umnozhenie/
913214
#180 #913214
>>913210
Аригато
913216
#181 #913216
>>913214
Зачем выебываться японским языком, из которого ты знаешь пару слов?
913227
#182 #913227
>>913216
Нани? Аната ва ватаси мо паверулевелу га вакаримасен!
913340
#183 #913340
>>913227

>Что? Ты, я тоже, паверлевел не понимает!

#184 #913641
Помогите, пожалуйста. Я хочу просмотреть пошагово выполнение процедуры в игре с помощью отладчика, но как только я переключаюсь на его окно, процесс игры приостанавливается. Само собой, выполнить программу нормально не получается, так как программа сразу же переключается на библиотеку ntdll. Как сделать так, чтобы окно программы было активно и при этом её можно было просматривать с помощью отладчика? Я использую OllyDbg.
913685
#185 #913685
>>913641
1. Запускай игру в оконном режиме.
2. Ставишь точку остановки на нужную процедуру.
3. Когда срабатывает точка остановки, переходишь в отладчик и пошагово проходишь интересующий тебя код.
#186 #915482
Как восстановить (создать) таблицу импорта у dll? Есть адреса, где вызываются, есть название функций. Попробовал через CFF Explorer, но это вручную надо вбивать сотни строк. Через ImpRec не получилось, пишет, что невозможно прочитать данные, когда указываю адрес загруженной dll.
915677
#187 #915677
>>915482
Адрес IAT правильно указал в ImpRec? Если знаешь IAT - сможешь хоть вручную скриптом на каком-нибудь питоне сгенерить таблицу импортов, там простой формат. Но в целом, ImpRec должен работать. Покажи скриншот ольки и imprec с прописанными адресами.
915724
114 Кб, 1024x768
24 Кб, 472x432
#188 #915724
>>915677
Как этой программой пользоваться, не пойму. Нашёл, что нужно выбрать dll отдельно. Искал в гугле, но картинок нет, есть только текст.
dll загружено по адресу 10000000. IAT в отдельной секции (если правильно понял) 1003E000. Т.е. там содержатся ссылки на функции. Эту секцию (адрес) надо указывать? Строк с названиями функций у меня нет, всё сожрал злобный протектор.
915755
#189 #915755
>>915724
Должно все работать. Адрес ты указал правильный, он относительно базового адреса модуля должен быть. Названия импортов нинужны, оно само находит, но нужен правильный размер (не могу проверить). В любом случае оно должно по Get Imports хотя бы первые импорты правильно находить. Разверни невалидный узел, посмотри, что внутри пишет, какие адреса там и какие в ольге. Посмотри лог повнимательнее, обрати внимание на image size.
915910
#190 #915910
>>915755
ImpRec не понравилось, что у меня программа была приостановлена через отладчик и из-за этого не получалось? Потому что сейчас указал те же данные и всё получилось. Только F9 нажал перед этим. Отлично, секцию импорта восстановил. Уже вручную пытался, действительно, всё просто, но очень долго. А вспомогательный скрипт писать нисколько не хотелось.
А вот что делать с релоками? Есть один на всю dll. И тот, подозреваю, нужен был для энигмы. Когда энигма релоки переназначает, не понятно. После распаковки, но до копирования распакованного кода обратно в секцию или после распаковки и копирования? Компилятор VS располагает их в отдельной секции .reloc, которая последняя в файле и идёт после .rsrc. Но в моём файле после .rsrc идёт код энигмы.
Ещё и потерял, где настоящая точка входа. Находил ведь, а записать забыл. А как нашёл - не помню.
915924915927
#191 #915924
>>915910

> релоки


Если ничего не поможет, есть старый трюк: ищешь OEP, ставишь бряк, дампишь. Меняешь у исходного файла базу (или занимаешь чем-то этот адрес до загрузки длл), пересчитываешь OEP на новую базу, ставишь бряк, еще раз дампишь. Ищешь различия, генеришь релоки.
915927
#192 #915927
>>915910

>потерял, где настоящая точка входа


Нашёл по константе 0BB40E64E. Хорошо, что VS оставляет один и те же константы.
>>915924
Благодарю за совет.
916241
12 Кб, 240x703
#193 #916241
>>915927
Нашёл что-то похожее на таблицу перемещаемых элементов. Энигма не старается скрыть её. Точка остановки на память в месте, где должен быть релок - и тут же находится функция работы с ним.
Только не получается простым копированием.

>LoadLibrary() reports error 000000C1 (ERROR_BAD_EXE_FORMAT)


Как всё муторно.
916319
#194 #916319
>>916241
Возьми gflags.exe из Platform SDK/Debugging Tools For Windows и включи Show loader snaps для того exe, который грузит твою длл. Алсо скриншот нечитаемый.
916323916347
sage #195 #916323
>>916319
А, ок, на скриншоте вполне валидные релоки. Посмотри еще, может в флагах образа IMAGE_FILE_RELOCS_STRIPPED стоит. Ну и размер директории релоков проверь.
20 Кб, 893x573
#196 #916347
>>916319
Копировал-правил, в виртуалку (там запущен не распакованный оригинал), обратно, туда-сюда, ну что ещё надо тебе, загружаю правленый файл, F9 и заработало. Вот что ему не хватало? Столько времени просидел зря.
А антивирусы крайне не любят Энигму, точнее дамп программы с ней. Знаю, что зловреды прячут в протекторе и они не детектятся, а у меня наоборот, выкусил из протектора и детект был 8 или 9, пока секции кода и данных протектора не удалил. Сейчас один чего-то ругается. Может быть, ему не нравится, что получилось? Файл-то дырявый получился, между секциями ничейное пространство. Ещё у меня есть подозрение, что можно распаковать файл из Энигмы без правильного ключа и вообще без ключа, но это можно потом поэкспериментировать. Хреновый из меня реверсер, столько дней угрохал на это.
#197 #916409
Господа реверсеры, если я получу HINSTANCE библиотеки kernel32 и скопирую секцию кода в другое место, я смогу вызывать функции оттуда по их смещениям?
916427
#198 #916417
Аноны, не нашел "основной" тред, о котором говорится в шапке, поэтому пишу сюда. Нужно реализовать алгоритм Берлеке-Месси на Ассемблере nasm. Не бесплатно, имеется 3к. Дедлайн - 24.
916424916427
#199 #916424
>>916417
railmaildaiZvPlANUSg<KKmailPUNCTUMc`;Iom или id373341334
Отлипли контактные данные.
sage #200 #916427
>>916417

> не нашел "основной" тред


Прикрепленный ньюфаг-тред. gcc -S тебе все реализует, что захочешь.

>>916409
Скорее всего тебе повезет. Но могут попасться относительные ссылки на секцию данных, например.
#201 #916693
Возможно ли в masm реализовать симуляцию нажатия ЛКМ / Клавиши клавиатуры - ?
916696
sage #202 #916696
>>916693
SendInput()
916976
#203 #916728
Как вкатиться в низкоуровневое программирование и ревёрс? Пока есть поверхностное представление о архитектуре компьютеров и такое же знание ассемблера 8086 (уровня написать итеративный алгоритм Эвклида).
Читать Талмуд Таненбаума не хочется, хочется, чтобы было повелее, и главное, побольше практики, задачек, каких-нибудь laba1.asm писать.
916729916746
#204 #916729
>>916728
повеселее
фикс
#205 #916746
>>916728
Просто берёшь и вкатываешься. Для начала научись пользоваться Идой, если ещё не умеешь. А потом сам себе ставишь задачи. И учишь то, что для этого необходимо.
66 Кб, 460x613
#206 #916976
>>916696
А по подробнее, не так давно въехал в asm.
916979917013
#207 #916979
>>916976
Вот держи https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms646310(v=vs.85).aspx , погуглил за тебя. Это через WinAPI делается.
916981
#208 #916981
>>916979
Oops , извеняюсь за свою тупость. Весьма благодарен.
#209 #917013
>>916976
Возникла проблема с восприятием этой функции(точее с параметрами),
как к примеру отправить нажатие NumLock / просто нажатие ЛКМ - ?
917021
#210 #917021
>>917013
Что я должен поместить в unsigned int - Массив клавиш - ?
917034
#211 #917034
>>917021
Там же всё элементарно, ты чего на ровном месте застрял? Первый параметр - количество передаваемых структур INPUT, второй - сам массив инпутов, третий - размер структуры INPUT. Щёлкаешь на INPUT и смотришь, что там должно быть. Первый параметр - тип инпута и так далее. Всё расписано же.
917090
#212 #917090
>>917034
Допустим, мне нужно симулировать простое нажатие лкм ->
invoke SendInput, 1,;(кол-во передаваемых структур);massiv,0;(т.к мне нужно использовать INPUT_MOUSE);
Так вот, я не совсем вникаю в то, как должен выглядеь массив, и он должен располагаться в .data сегменте или .code
Массив должен быть типа:
massiv struct
LButton = 0x01
ends
-?
917099917105
#213 #917099
>>917090
или там где уменя 0 должно быть x,
где x=$-massiv - ?
#214 #917105
>>917090
Ну написано же в документации, ну. Зачем ты в асм полез, если не можешь документацию читать? Ну возьми тогда mouse_event, keybd_event они проще, система за тебя сама SendInput соберет.

> он должен располагаться в .data сегменте или .code


Да хоть в .rsrc, всем похуй.

> как должен выглядеь массив


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

start: invoke SendInput,2,events,28
invoke ExitProcess,0

events dd INPUT_MOUSE ; INPUT.type
dd 0, 0 ; MOUSE_INPUT.dx/dy
dd 0 ; MOUSE_INPUT.mouseData
dd MOUSEEVENTF_LEFTDOWN ; MOUSE_INPUT.dwFlags
dd 0, 0 ; MOUSE_INPUT.time/dwExtraInfo

dd INPUT_MOUSE ; INPUT.type
dd 0, 0 ; MOUSE_INPUT.dx/dy
dd 0 ; MOUSE_INPUT.mouseData
dd MOUSEEVENTF_LEFTUP ; MOUSE_INPUT.dwFlags
dd 0, 0 ; MOUSE_INPUT.time/dwExtraInfo
#215 #917409
Как в asm выглядит синтаксис Point структуры, что бы получить x и y через GetCursorPos - ?
Забил покуда из за недостатка знаний на SendInputs(т.к так и не разобрался, как это работает),
использую "устаревшие" как мне говорят mouse_event, вот.
917413
#216 #917413
>>917409
Да , забыл сказать, работаю в masm32 , использовать int33 и использовать CX и DX - не получится .
917428
#217 #917428
>>917413
.data
POINTER STRUC
X DD ?
Y DD ?
POINTER ENDS
XX DD ?
YY DD ?

.code

start:
invoke GetCursorPos, POINTER
Mov eax,POINTER.X
Mov XX,eax
mov eax,POINTER.Y
mov YY,eax
MOV edx,XX

Что делаю не так?
917466
#218 #917466
>>917428
С чем связана запись в Y - Нуля, а в X - 4-ех ?
917476
sage #219 #917476
>>917466
Я вот вижу, как ты определил структуру (тип), но не вижу, где бы ты создавал переменную этого типа. Не знаю масма, если что.
917479
#220 #917479
>>917476
Переменные должны были быть long , но как их вписать в асм'е покуда хз.
Решил путем
offset'a а точнее ADDR.

в MyPoint.x записываются координаты x,
а в MyPoint.y записываются координаты в y,

.data
MyPoint POINT <>

.code
start:

invoke GetCursorPos, ADDR MyPoint
mov eax,MyPoint.x
mov ebx,MyPoint.y
invoke ExitProcess,0
end start
917485
sage #221 #917485
>>917479
Ну вот, сам решил, мог бы и не спрашивать в треде.

> Переменные должны были быть long , но как их вписать в асм'е покуда хз.


Очевидно, что никак (хотя в масме вроде были алиасы). Все эти int/uint/long/ulong/size_t и указатели в 32-битном коде - это дворды, т.е., dd.
917502
#222 #917502
>>917485

>Очевидно, что никак (хотя в масме вроде были алиасы). Все эти int/uint/long/ulong/size_t и указатели в 32-битном коде - это дворды, т.е., dd.


За это благодарен.

>Ну вот, сам решил, мог бы и не спрашивать в треде.


Я ожидал что мне поможет кто-то более опытный, и мне не нужно будет копаться на всяких форумах/бордах/электронных книгах и тратить время.
36 Кб, 638x298
#223 #917506
Вообще , было бы приятно, если бы кто-нибудь поделился источником где можно прочитать о создании POINT стрктур в ASM, т.к не совсем понятно как создается и выглядит MyPoint структура по примеру
" MyPoint POINT <> " Как на пике , или - ?
#224 #919819
Где может храниться информация о регистрации? Приложение написано на VB5 в далёком 2003 году, компиляция в Native. ProcessMonitor ничего дельного не показывает, брекпойнт на CreateFileW ничего не дал.

C:\Windows\Registration\R000000000006.clb - погуглил, "файлы зарегистрированной базы данных COM+ элементов", не то.
HKCR\CLSID\{00000010-0000-0010-8000-00AA006D2EA4} - фигня
HKCU\Software\Classes\Licenses\F4FC596D-DFFE-11CF-9551-00AA00A3DC45 - опять не то, свободно гуглится GUID
И прочее в таком же виде.

Как ещё может проверяться регистрация и где может храниться? Брекпойнт на память на строке "Trial" всплывает очень глубоко внутри kernel32 на подсчёте её длины, а до этого в MSVBVM60.DLL. Это создание окна. Неужели есть отдельная полнофункциональная версия?
919957
sage #225 #919957
>>919819
Так есть жи декомпилятор от русского автора. Много интересного показывает, и native ему не помеха.
920030
#226 #920030
>>919957
VB Decompiler Pro? Его и использую. Ида так же дизассемблирует. Но проблема в том, что не могу найти ни место генерации ключа, ни место хранения данных о регистрации. В программе (отдельном модуле, их много, но ничего другого не загружается) всего несколько десятков функций. Но нет ничего. Не пойму, как программа определяет, что она не зарегистрирована. Как в VB может такое быть? Может быть, получается помимо отладчика через p-code что-то выполнить? Нет идей.
920100920102
sage #227 #920100
>>920030
Что за программа? Уверен, что она вообще умеет превращаться в полную версию, а не качать апдейт при вводе правильного ключа, например?
920102
#228 #920102
>>920030
А нет, что-то нашёл. Очень уж непонятен этот Native VB. После замены условия программа завершилась сообщением об ошибке "No current record." Значит, в базе данных где-то должен ключ храниться. А база данных "Standard Jet DB".
>>920100
Да ни в чём не уверен, разве кроме скачивания чего-то из интернета, потому что в то время это было не распространено. У меня даже не получается посмотреть, что будет после завершения триала, т.к. счётчик не уменьшается.
#229 #920403
Посоветуйте литературу(видеокурсы,статьи и прочие ресурсы)для новичка.(хочу вкатиться в ас. хз с чего начать).
920418
sage #230 #920418
>>920403
Ассемблер: абсолютно похуй, как его учить - можно хоть с Human Resource Machine начать, продолжить TIS-100, а потом уже что-то серьезное читать. Реверсинг: beginners.re, а потом уже сам поймешь, надо ли оно тебе, и что учить дальше.
36 Кб, 699x473
64 Кб, 759x563
32 Кб, 755x506
#231 #921519
1. Скопировал из гайда такой код , в fasm его скомпилировал.
2. Сделал образ диска .iso и в VirtualBox поставил его в виртуальную машину, чтобы с него считывалась эта ОС, выводящая hello world.
3. Выводит ошибку.
Что я делал не так?
921545
#232 #921545
>>921519
Сделай образ дискеты, а не диска.
#233 #921878
Поцаны, а на каком году изучения асма появляется способность понимать чо происходит в реверснутых программах?
Когда сам асм пишешь понимаешь, что происходит. А понять ту мешанину, после декомпиляции очень сложно.
922365922422
6 Кб, 364x150
#234 #922365
>>921878
Ни на каком. Для поднятия скилла реверса нужно, как ни странно, реверсить, и чем больше, тем лучше.
Мимо ньюфаг и ОП
sage #235 #922422
>>921878

> А понять ту мешанину, после декомпиляции очень сложно.


Чтобы понять выхлоп HexRays, нужно не лениться восстанавливать и прописывать типы функций и прототипы, не лениться убирать дубликаты переменных нажатием =.
Чтобы научиться понимать дизасм, можно в комментариях к дизасму писать псевдокод, подражая HexRays:
mov edx,eax ; edx = eax
shl edx,2 ; edx = eax × 4
add edx,eax ; edx = eax × 4 + eax = eax × 5
shl edx,1 ; Епт, да это же умножение на 10!
А потом, с опытом, придет способность делать то же в уме (а также пользоваться правильными инструментами или писать их самому, чтобы не делать этого в уме).
922871
#236 #922871
>>922422
Вот эт интересно, а не то что анон выше посоветовал, чтоб приседать на бутылку было не больно, нужно приседать на бутылку. Ахуительные советы блять. Но ведь есть жи особенности как чо делать. Сам то наверное как родился первую прогу реверснул и все понял епт.
923303923385
#237 #923303
>>922871

>чтоб приседать на бутылку было не больно, нужно приседать на бутылку.


Тут ты обосрался.
Судя по местным заседалам из /po/ эта тактика работает.

З.ы пока не искатаешь дисциплину ЭВМ хотя бы поверхностно, хуй ты станешь адекватным реверсером.
Да и к тому же что бы понять ну "мешанину" после декомпиляции нужно хотя бы немного изучить структуру компилятора которым и была "написана" программа.
Ну и как совет больше практикуйся приседай на бутылку , не в реверсе а в написании программ на ASM.
#238 #923381
Кто-нибудь кроме меня тут вообще пытался декомпилировать винду?
А то в одиночку как-то медленно выходит.
923391
#239 #923385
>>922871

>Сам то наверное как родился первую прогу реверснул и все понял епт.


Расскажу свою историю.
Реверс давно меня заинтересовал, поэтому плохо помню, как учился.
Сначала кодил на С(++). Даже не понимал, зачем нужен этот Debug, мне и Release подходит. Как-то потихоньку заинтересовался асмом, когда нажимаешь "Go to disassembly" в Visual Studio интересно было смотреть, во что превращается исходный код. Даже каким-то образом скачал Иду, наверное 5.2, а может и из 4 версии. Но ничего не было в этой программе понятно. Благодаря книге "Образ мышления - дизассемблер Ida" разобрался в этой программе. Но до этого мне понадобилось около 2 месяцев на изучение ассемблера, потому что было абсолютно непонятно, то там происходит. Не помню, почему так долго, может быть, из-за учёбы, а может быть некуда было спешить. Постепенно увлекался, это было как хобби.
А вот сейчас, когда пытаюсь зарабатывать с помощью реверса, стало понятно, что все эти годы занимался фигнёй. Не было у меня практики. Разреверсить функцию или сетевой протокол в незащищённой программе могу. С некоторым трудом могу восстановить формат файла. Может ещё чего по мелочи. Но если программа как-то зашифрована или накрыта протектором, то уже не знаю, что делать. Приходится отказываться от приличного количества работы только из-за того, что не знаю, как её выполнять. Так что прав тот анон. Только практика может сделать из тебя реверсера. Когда постоянно сталкиваешься с чем-то незнакомым. А не так, как получилось у меня. Теперь приходится навёрстывать. А ещё на асме не пишу.
923648
#240 #923391
>>923381
Иногда смотрю, как в kernel32.dll или user32.dll выполняется функция или почему возвращает неверный результат. Но не так глобально, как у тебя. Тебе в ReactOS надо вливаться. Или слишком разные у вас пути?
923398
#241 #923398
>>923391
Конечно разные. Они со своей политикой не подсматривания в сырцы и не дизасма саих файлов далеко не уедут. Собственно по их прогрессу и так видно.
Да и видел я сырцы Вынь2000 и WRK, поздно мне туда.
923400
sage #242 #923400
>>923398

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


У них скорее политика "не пойман - не вор". Внутренние структуры и функции совпадают - они же не из астрала эти данные взяли? Или у них clean room с двумя командами?
923405
#243 #923405
>>923400

>Или у них clean room с двумя командами?


Таки да, иначе бы их давно пидорнул МС. Только чистая комната спасёт их от озалупливания Майкрософтом, и они это прекрасно понимают. Поэтому у них до сих пор глючный клон 16 летней ОС.
Впрочем, совпадение там весьма условное. Я как-то сравнивал пару рандомных функций с кодом WRK- совсем иной подход.
923555
#244 #923555
>>923405
Ну в общем процесс идёт, появилось пару вопросов. Надекомпилял как смог функцию IovUnloadDrivers, из Win2k3 SP2 x64, вот результаты:
http://pastebin.com/uH1gD8jE
В общем вопросы таковы:
Что за взаимная мастурбация с переменными v16 и v17? Что я тут проебал?
Какой тип выставить переменной Object? Функция KeWaitForSingleObject жрёт PVOID, но тут явно что-то большее должно быть. Может это связано с дрочкой v16 и v17.
И вообще, скажите, что я сделал не так. В реверсе полный дуб.
923583
sage #245 #923583
>>923555

> Object


Очевидно, что это структура, и ты ее не задефайнил. Гугли DISPATCHER_HEADER для начала.
923955
#246 #923648
>>923385

> Только практика может сделать из тебя реверсера


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


Дохуя напрактиковал отказы от работы?
#247 #923955
>>923583

>DISPATCHER_HEADER


Ага, подошло. Правда в ядре чаще юзают KEVENT и ему подобное, но ничего кроме лишнего уровня она не добавляет. Так же заметил функцию в заголовочном файле, которая сворачивает всю инициализацию объекта ожидания до вызова одной строчки. Жить стало лучше, жить стало веселее.
Вот вопрос- а как такое отгадывать? Остальное я достал из вызываемых функций, которые хотя бы как-то описаны, а вот этот объект юзается только в функции, принимающей PVOID, то есть никакой информации толком нет. Правда конкретно эту я бы мог отгадать сам по примерам другого кода, использующего функцию KeWaitForSingleObject, но как быть с кодом, где никаких подсказок нет? Как реконструировать структуры по коду?

Так же я заметил, что проебался с маппингом переменных, так как строки
driverObject = 0i64;
have_next_device = 0;
while ( driverObject )
{
Явно ошибочны. Размаппил одну из них, переименовал по вкусу, вроде теперь всё нормально. Зацените:
http://pastebin.com/exhumh83
924101
sage #248 #924101
>>923955

> как быть с кодом, где никаких подсказок нет


Из названия очевидно, что KeWaitForSingleObject хочет объект, а PVOID должен на что-то указывать. Гуглим или реверсим KeWaitForSingleObject, чтобы узнать, что у объекта должен быть заголовок, и какой тип в этом заголовке типу какого объекта соответствует.

> ничего кроме лишнего уровня она не добавляет


Будешь лениться - запутаешься.

> Как реконструировать структуры по коду?


Найти код, который структуру создает (если повезет) и код, который ее использует. Поля структуры можно восстанавливать полуавтоматически (правой кнопкой, Reconstruct type возможно, это HexRaysCodeXplorer добавляет, не помню), есть еще Create struct from data. Назначение полей выясняется долгим и мучительным анализом работающего с ними кода (или, в случае винды, гугл и символы весьма помогают).
924262
#249 #924262
>>924101

>или, в случае винды, гугл и символы весьма помогают


Да вот у меня сейчас такие функции, про которые гугл выдаёт 3,5 ссылки, из них одна сюда и одна на выложенный мною код. Вообще странно, что никто не выкладывал свои раскопки в этом направлении. Не верю, что я первый тут копаюсь.
АЛСО, зачем сагаешь? Тред хороший же.
935318
41 Кб, 1262x555
#250 #924883
Пробовал ли здесь кто вручную запускать длл напрямую из памяти, накрытую темидой? У меня почему-то крашится на пикрелейтеде. Если загружать длл через LoadLibrary то всё отлично пашет. Для запуска длл юзаю https://github.com/tishion/mmLoader
924946925377
#251 #924946
>>924883
Там проблема какая-то со структурными исключениями.
https://habrahabr.ru/company/xakep/blog/260577/

>для реализации поддержки исключений в динамически размещаемом коде на x86 платформе можно выделить минимум три способа:


>Установка/подмена флага ImageDispatchEnable для процесса.


>Подмена типа региона памяти на MEM_IMAGE (для PE-образа без SafeSEH).


>Реализация собственного диспетчера исключений в обход всех проверок.


Может быть, это оно?
#252 #925377
>>924883
Короче разобрался. Нашёл другую либу для загрузки PE из памяти - https://github.com/DarthTon/Blackbone/ С ней всё заработало.
#253 #925472
Господа /pr/ограммисты
Немного не по теме но подкиньте какой-нибудь литературы для вкатывания в дизассемблирование
Благодарю покорно :3
925552925570
#254 #925552
>>925472
http://bfy.tw/9s7g
Неблагодари :3
925570
#255 #925570
>>925472

>Немного не по теме


На самом деле по теме. Это я проебался с названием.
>>925552
Не ходите по этой ссылке, там вирус! У меня от этой фигни брат на функциональных языках писать стал. И говорить.
#256 #925581
Путём читания небольшого гайдика "Как написать свою ОС часть 1" и экспериментов я сделал программу, которая работает без опероционной системы и выводит на экран некоторое число, сохранённое в регистре ax. А затем выводит "press any key..." и ждёт когда кто то нажмёт эникей. Но ведь больше 510 байт программного кода написать нельзя. Чтобы дальше пойти, надо на месте этих 510 байт остаьные 2 — сигнатура написать загрузчик операционной системы. Но как это сделать? Что он из себя вообще представляет?
925748928266
#257 #925584
С тех пор как я начал изучать ассемблер я начал переставать понимать си. Мне кажется что си это вообще какой то бредовый эзотерический язык. И как я раньше на нём мог программировать?
#258 #925748
>>925581-кун
Распишу свою проблему подробнее. Я хочу для себя писать программки, работающие без специальной ОС чтобы создать армию дронов-автоматчиков. И при этом мои программы будут, естественно больше 510 байт. Так как же загрузить в оперативную память код из участков памяти после первого (загрузочного) сектора?
925882
#259 #925882
>>925748-кун
Уже, похоже, решил проблему. Но я ещё не проверял, спать хочу. Вот здесь http://metanit.com/assembler/articles/MiniOS.php я нашёл код и загрузчика и ядра и даже программы для изменения текста.
Надеюсь меня не зобанют за рекламу сайта, на который только что наткнулся
927138
#260 #927128
Какие функции в биосе чтобы выводить пиксели, а не буковки?
927137
#261 #927137
>>927128
NEKOKIE. так в видеопамять напрямую и писали.
#262 #927138
>>925882
Посмотри ещё http://osdev.ru/viewtopic.php?f=4&t=808
Это загрузчик ядра OS/2 (кто-то помнит такую?) - со своей собственной функциональностью запуска модулей и проч... в итоге получился такой небольшой DOS. Может жить и отдельно от OS/2 - на FAT/FAT32 разделе.
#263 #927141
Опять протектор, VMProtect версии 2.07. Как пишут на васме, сложнее протектора нет. Определяет отладчик (OllyDbg с плагином StrongOD в Windows XP успешно скрывается), определяет виртуальную машину (а тут уже не знаю, что делать, разве что устанавливать второй ОС WinXP). Даже дамп не снять.
У кого-нибудь есть эта версия протектора? Сам нашёл только 2.1.0.
927215
49 Кб, 739x488
60 Кб, 580x570
138 Кб, 739x488
#264 #927188
Не понимаю. Почему у меня выходит бесконечный цикл? По идее cx должен уменьшаться.
927189927212927329
#265 #927189
>>927188
Случайно 2 одинаковые картинки прикрепил из-за бага двача
#266 #927212
>>927188
бамп, срочно надо. А то завтра смогу только после 15:00 вернуться к программе, но на завтра я запланировал просмотр анимы.
#267 #927215
>>927141

>Как пишут на васме


Он же лежит уже несколько месяцев?

АЛСО, отличный сайт для изучающих глубины Windows:
http://geoffchappell.com/
Описание структур со смещениями для всех версий венды от NT 3.5 до десяточки, функции и ещё много всего. Я охуел от полезности этого сайта и решил его себе скачать целиком.
927242927259955112
#268 #927242
>>927215

>Описание структур со смещениями для всех версий венды от NT 3.5 до десяточки


http://msdn.moonsols.com/winxpsp3_x86/PEB.html
927274955112
#269 #927259
>>927215

>Он же лежит уже несколько месяцев?


http://wasm.in/forum/threads/kto-nibud-lomal-vmprotect.20683/
927274
#270 #927274
>>927242
Там только до спермооси, десяточки тонет.
>>927259
Что и доказывает, что wasm.ru лежит.
А на том форуме проебали 4 года форума и весь сайт.
#271 #927329
>>927188-кун
Так и не понял в чём проблема, но решил тем что заменил
loop метка
на
dec cx
cmp cx,0
jz метка
927359927387
#272 #927338
Какие книги, ресурсы по ассемблеру посоветуете для начинающего?
927651
#273 #927359
>>927329

>Так и не понял в чём проблема


А где у тебя там было вычитание из cx?

>dec cx


>cmp cx,0


Нет нужды сравнивать с нулём.
927363
#274 #927363
>>927359

> А где у тебя там было вычитание из cx?


А что по-твоему делает loop?
мимо другой анон
927373
#275 #927373
>>927363

>А что по-твоему делает loop?


LOOP rCX
Decrement count; Jump short if count!=0
Ну да, не знал об этом. Ни разу не попадалась такая команда. В таком случае, у него cx = 0 в самом начале и не видно, чтобы ещё какая-то инициализация была, кроме той странной функции, что не приведена.
927470
#276 #927387
>>927329
Дональт Кнут.
#277 #927470
>>927373
proverka увеличивает значение cx
#278 #927650
В какой участок памяти записывать байты со значением RGB (24 битный), чтобы таким образом выводить информацию на экран? И какие функции биоса надо использовать?
927857
#279 #927651
>>927338
asmworld.ru, я там научился хелло ворлд делать в досе и простейший калькулятор. Потом походил по другим сайтам и теперь могу выводить и вводить буковки без специальной операционной системы (без линукса, виндовса).
#280 #927857
>>927650
Если ты про Windows, то забудь сразу. Если DOS, то научись сначала чем-нибудь попроще пользоваться, типа https://en.wikipedia.org/wiki/Mode_13h а потом уже научишься VESA ебать.
928266
#281 #928266
>>927857
Походу это тот же чел, что пишет на асме на голом железе:
>>925581
928447
sage #282 #928447
>>928266
В этом случае совет все равно в силе. int 10h/func 00h/mode 13h - это BIOS.
#283 #929857
Мне кажется, что мной выбран неправильный способ решения моей проблемы.
Мне нужно обойти защиту, которую так и не смог снять (VMProtect).
Защита контролирует контрольную сумму всех исполняемых файлов (легко обходится), наличие отладчика (тут уже никак не получилось) и, самое для меня трудное, проверяет, кто вызывает функцию из защищённой dll. Если вызывает нужный exe-файл (не знаю, как определяет, только по имени или как-то ещё), то всё в порядке. А если в стеке присутствует что-то другое (даже не на вершине стека, а предыдущая функция), то функция не срабатывает, как надо.
Идея у меня такая - увеличить виртуальный размер последней секции (не хочу, чтобы размер исполняемого файла менялся) и спроецировать на свободное место свою dll, которая будет вызывать нужные функции и которая заменит несколько функций в импорте исполняемого файла.
Чтобы избежать инъекции кода (как бы защита контролирует и этот способ, но не проверял, доверился описанию), добавил свою dll в импорт exe, которая при загрузке должна будет делать всю работу.
Как решаются подобные задачи?
930247930271930389
#284 #929894
В чём различия масма, фасма, тасма? Пойдёт ли код, написанный под один ассемблер, к другим?
929898
#285 #929898
>>929894D

> В чём различия масма, фасма, тасма?


В директивах компилятору. В способе записи адресов (все эти квадратные скобки, offset, addr, ptr и т. п.). В макроязыке. В основном, код от одного ассемблера можно преобразовать в другой очень быстро, вручную или какими-нибудь регэкспами. А еще есть AT&T-синтаксис, у них все через жопу.
#286 #930247
>>929857

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


Разве вмпротект позволит это сделать? Он же должен чекать контрольную сумму того исполняемого файла которым он накрыт. Или там только длл накрыта, а экзешник не накрыт?
930271930389
#287 #930271
>>930247

>Он же должен чекать контрольную сумму того исполняемого файла которым он накрыт.


>>929857

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

#288 #930389
>>929857
Всё сделал, как планировал. Увеличил виртуальный размер секции, модифицировал MemoryModule, чтобы можно было загружать исполняемый файл без выделения памяти, создал две dll, чтобы не было инъекции, одна загружается через импорт и проецирует вторую в нужную секцию. Вторая подменяет адреса нужных мне функций и реализует необходимый функционал. Всё успешно загружается, лог пишется. Но ничего не работает. Неужели протектор контролирует адрес вызываемой функции? Или контролирует границы секции, было так, а стало больше и вызывает кто-то за пределами? Ну что ему ещё не хватает?
>>930247

>Или там только длл накрыта


Накрыта dll, но защита контролирует целостность всех остальных модулей. Даже удаляет лишние dll, хорошо, что только по расширению проверяет, достаточно переименовать и такой файл не трогает. Размер не проверяется, только CRC32, что очень легко обходится.
931238
#289 #930397
Здравия желаю господа.
Так уж получилось, что у меня есть фетиш - писать ботов.
До этого ограничивался Cheat Engine-ом для поиска базовых адресов, оффсетов и т.д., но развиваться все же хочется.
Знаний минимум, ботов писал на простеньком Autoit, поначалу были обычные кликеры, потом бот работающий с пикселями, а теперь уже бот работающий с памятью.
Так уж получилось, что хочу поднять уровень своих знаний и доставать самую годноту с помощью Ollydbg(если я правильно понял, он имеет прямое отношение к ассемблеру).
Т.е., с Cheat Engine не напишешь бота с функцией Vac хака(функция вакуума, которая притягивает всех мобов к персонажу) и т.д., тут уже нужен Ollydbg для получения этих данных.
Будьте любезны, накидайте гайдиков и т.д., где затрагивают подобную тему.
Заранее премного благодарен.
930402
#290 #930402
>>930397
OllyDbg - это отладчик. С помощью него можно найти адреса необходимых тебе функций. Но вот писать своего бота ты будешь на каком-то языке программирования. Можешь выбрать любой язык, какой понравится.
930405
#291 #930405
>>930402
Спасибо за ответ анон, я это уже знаю.
Видимо я неправильно объяснил...
Я буду и дальше писать на Autoit, благо все нужное мне в нем есть, вплоть до инъекций, единственный его большой минус - отсутствие многопоточности.
Ну так вот, я просто хочу научиться доставать из Ollydbg данные, которые с помощью Cheat Engine не найти.
Пример:
Я вижу HP и MP своего персонажа и легко нахожу их базовые адреса и оффсеты с помощью Cheat Engine, делаю поиски этих данный с 4byte. Но и есть и такие вещи, которые я не вижу. Например, скорость атаки, скорость бега, расположения мобов на карте и т.д.
Вот для поиска именно таких значений мне и нужен Ollydbg.
#292 #930664
>>891716 (OP)
Да вытолко пиздеть умеете, а когда надо отреверсить блоб модуль ядра нвидия то говорите что нвидия ненужна.
930793
#293 #930793
>>930664
Это люнупс не нужен.
930797
Dmitry #294 #930797
>>930793
Without GNU/Linux there will not be 70% of jobs in IT.
930871
#295 #930871
>>930797
Ну да, люнупс своим требованием квалификации создаёт рабочие места на пустом месте.
Впрочем, мы отклонились от темы.
#296 #930908
рейт май код, двач.
http://pastebin.com/GHbjYV0h
Он должен предлагать ввести число, потом ввести второе число, потом ввсети + или - или * или / и вывести что получилось. Но не всегда можно увидеть что вводишь и делить нельзя.
на голой без ОС
931987
#297 #931238
>>930389
Следующий день подходит к концу, а борьба продолжается. Защита действительно проверяет адрес вызывающей функции и, если он не равен тому, что в исполняемом файле, функция не работает. Такое нагородил уже в exe, приходится убирать весь код вокруг вызова, размещать его в другом месте, а здесь уже делать возможность вызова нужной мне функции. Хорошо, хоть у "cmp eax, 0FFFFFFFFh", которая идёт сразу же после функции, и "ret xxx" размер опкодов одинаков, а то ещё большие костыли пришлось бы городить. И всё это вручную. Плохо быть мной.
931323
sage #298 #931323
>>931238
Какая-то идиотская, ни от чего не защищающая проверка. Ищется в .exe байт 0xc3, все функции из .exe вызываются через трамплин, заменяющий оригинальный адрес возврата на адрес байта 0xc3, а за ним уже push-ащий оригинальный адрес возврата, все это можно автоматически генерить.
931390
#299 #931390
>>931323

>Какая-то идиотская, ни от чего не защищающая проверка


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

>Ищется в .exe байт 0xc3


Не пойму, что ты имеешь в виду. Можешь в псевдокоде показать?
Вызываемая функция находится в защищённой dll, адрес возврата в этой функции проверяется и, если он не совпадает с тем, что в exe файле, функция просто не работает.
931408
sage #300 #931408
>>931390

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


Лолшто? Вмпротект сделал чувак с exelab (бывший cracklab) и как раз в реверсе он разбирается охуенно.

> Не пойму, что ты имеешь в виду. Можешь в псевдокоде показать?


Ну берешь и генерируешь себе для каждой вызываемой функции что-нибудь такое:
yoba:
pop edx ; Старый адрес возврата
mov eax,dword ptr[dll_base] ; Хэндл/базовый адрес DLL
add eax,RETN_RVA ; RVA любого байтика C3 из DLL
push eax
push edx
mov eax,dword ptr[dll_base] ; Хэндл/базовый адрес DLL
add eax,FUNC_YOBA_RVA ; RVA нужной функции в DLL
call eax
Функция вызывается, потом возвращает управление в DLL, но там C3 (retn), оно берет со стека следующий адрес и возвращается уже в твой код.
931451
#301 #931451
>>931408

>Вмпротект сделал чувак с exelab (бывший cracklab) и как раз в реверсе он разбирается охуенно


Нет, ты не понял. С VMProtect всё в порядке. Сам протектор использован для усложнения реверса dll. Но вот разработчик этой самой dll как раз в реверсе не очень-то и понимает. Вот он и продаёт свое поделие за даллары. Надеюсь, он не предусмотрел таймаут между вызовами функций.

>add eax,RETN_RVA ; RVA любого байтика C3 из DLL


В данном случае так не получится. Адрес возврата должен точно соответствовать определённому числу, тому, где находится вызов функции в exe. А после вызова идут проверки. Соответственно, чтобы вызов этой функции в самом exe работал, пришлось городить переходы в свободные области файла, а здесь делать нормальный вызов с возвратом прямо посередине существующей функции (а чтобы не мучаться с поиском этих функций, добавил их в экспорт).
#302 #931863
>>891716 (OP)
Поцоны, выручите ньюфага по ассемблеру, вернее ассемблеру в FASM. Хочу себе вывести на экран линию между двумя точками, как в пеинте. Пока что я только начал. Комментарии ставить не буду чтобы поучились реверс инженирингу.
Так не работает почему-то
http://pastebin.com/mFP1UZR6
931867
#303 #931867
>>931863

> Комментарии ставить не буду чтобы поучились реверс инженирингу.


Отвечать не будем, чтобы поучился гуглить.
#304 #931987
>>930908

>е число, потом вв


Неплоохо
#305 #933017
Анон, дай готовый алгоритм для подделки CRC32 путём внедрения байт в произвольное место. В статье КК мне не понятны два последних (и основных) пункта, а приведённые листинги не полные.
933037
sage #306 #933037
>>933017
Сходи по ссылкам в статье криса (если сдохли, есть веб.архив.орг). Там, в частности, упоминается CRC and how to reverse it, ее и читай. И там вроде код был.
933242
#307 #933242
>>933037

>CRC and how to reverse it


Моя благодарность тебе, анон. Не знал, как на английском задать подобный вопрос. Через него вышел на вот этот pdf https://sar.informatik.hu-berlin.de/research/publications/SAR-PR-2006-05/SAR-PR-2006-05_.pdf . Там есть исходный код.
Имя #308 #935318
>>924262
В общем продолжаем банкет. Надекомпилял тут файлик:
http://pastebin.com/dKrhniNV
Проблема в том, что при компиляции обратно секция PAGEVRFC объявляется как Read/Write, а в оригинале она просто Read. В итоге при линковке получается две секции с разными правами. Всякие там
#pragma comment(linker,"/SECTION:PAGEVRFC,R").
не катят, как и R!W.
В общем где я ошибся и как заставить компилировать в секцию с правильными правами?
Ну и ещё у меня только 240 строк, тогда как в оригинале больше 300, ну да пофиг.
937670
#309 #935428
Просто интересно, ради так сказать удовлетворения моей убогой любознательности. А вашим эти РЕ можно на доширак заработать? Или это только форма искусства?
935481
#310 #935481
>>935428
Что ещё за РЕ? Не пиши не понятными аббривеатурами.
935572
#311 #935483
Пожалуйста, дайте мне какой нибудь бесплатный дизассемблер.
935572
#312 #935486
Как я понимаю чтобы сделать таймер на ассемблере надо засечь число тактов и знать тактовую частоту процессоа. Как я понял число тактов можно засечь с помощью команды rdtsk, а как узнать тактовую частоту процессора?
#313 #935572
>>935481
Reverse Engineering очевидно же.
>>935483
Ida Pro 6.8, новее не утекали.
Ну или Ida 5.0 раздаётся бесплатно официально.
935680
4671 Кб, Webm
#314 #935676
#315 #935680
>>935572

>Reverse Engineering очевидно же


Написал бы РИ или RE.
С помощью реверст инжениринга можно пересобрать какую нибудь простую игру и выдать за свою. И продавать.
Но я так только думаю. И вообще нужны хорошие навыки как ассемблирования так и дезассемблирования.
#316 #935685
>>935676

>/ili niet?


Пофиксил коммент, не благодари.
sage #317 #935704
>>935676

> bandicam


Виртуалбокс умеет писать видео сам по себе (Устройства - Захват видео).
#318 #936632
>>935676
Для чего ты использовал rdtsc в своём коде?
937763
#319 #937670
>>935318
В общем пришлось вколачивать костыль в билд систему, чтобы перед линковкой снимать этот атрибут с помощью link.exe.
Вопрос, как обойтись тут без костылей, остаётся в силе.
937721
#320 #937721
>>937670

> #pragma data_seg("PAGEVRFC")


> #pragma const_seg("PAGEVRFC")


> в оригинале она просто Read


Зачем тогда ты создаешь в read-only секции перезаписываемые переменные? Тебе не кажется, что в этом есть какое-то противоречие?
937750
678 Кб, 824x364
#321 #937743
Как убрать надпись, выделенную желтым?
937773
#322 #937750
>>937721
Хмм... Логично. Впилил это, когда массивы не были объявлены константными. Как всегда, компилятор оказался умнее меня.
Блядь, 4 дня никто не мог посмотреть этот код и выявить эту мою тупейшую ошибку.
Спасибо, анон, добра тебе. С твоей помощью полные сырцы ядра Windows XP стали немного ближе.

Блин, куда бы вылить свои наработки? Всякие гитхабы и прочие битбэкеты выпилят результаты реверса винды на раз, кмк. А то вдруг кто присоединится.
937759943177
#323 #937759
>>937750
На гитхабе, и на битбакете овердохуя результатов реверса, всем похуй. Ну или купи шаред-хостинг за бакс и подними там какой-нибудь fossil.
937789
#324 #937763
>>936632
чтобы сделать шум
25 Кб, 639x471
#325 #937771
Я наконец почти доделал свой код. Эта программа запускает компьютер, вводит его в режим биоса 0x13 (графический режим) и рисует линию, координаты точнее номер пикселя концов, которой, записаны где то там в начале программы. Правда осталась парочка мааааленьких легкопоправимых багов линия может прорисоваться немного вниз от нижнего конца и непонятный баг виден если концы поставить в углах экрана
И ещё программа не оптимизирована. Если захотите оптимизировать, улучшить и всё такое то можете кидать ответом на мой пост код.
Чтобы запустить её надо сделать загрузочный диск наверное и флешку можно с файлом .BIN, который сделается в FASMе. Я делал образ загрузочного диска и вставлял в виртуальный дисковод виртуальной машины, сделанной с помощью виртуал бокса.
Вот ссылка на мой говнокод:
http://pastebin.com/TMKksb6P
822 байта.
955097
#326 #937773
>>937743
попробуй хекс эдитором открыть, найти эту надпись и заменить на пробел (0x20)
937823
#327 #937789
>>937759

>На гитхабе, и на битбакете овердохуя результатов реверса, всем похуй.


А вот сорцы Вин2000 или там движка престо выпилили. А мой код уже содержит части утёкшего кода Вин2000.

>fossil


Мне ртуть привычнее, ну да ладно.
#328 #937823
>>937773
Слово nodes заменил на casul, на casuls не получается заменить. Остальной текст хитрее закодирован, пока не удалось понять как.
937839
#329 #937839
>>937823

>Слово nodes заменил на casul, на casuls не получается заменить.


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

>Остальной текст хитрее закодирован, пока не удалось понять как.


Очевидно, что производитель этой фигни не хочет, чтобы удаляли пометку его авторства, и защитил её от нубов.
937883
35 Кб, 592x160
#330 #937883
>>937839
Всё, осилил. Возле nodes] был пробел, так что удалось вместить, а другие скрытые за кракозябрами слова, нашел по номеру версии и нику, они почему-то не было зашифрованы, заменил их пробелами.

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


Не понимаю, зачем так делать, вставлять себя любимого на видное место. По-моему лучше делать вывод информативным, но без излишеств.
937912
#331 #937912
>>937883

>Не понимаю, зачем так делать, вставлять себя любимого на видное место.


Напиши такую фигню сам, узнаешь.
Впрочем да, выводить прямо в окне лишнее, думаю, лучше бы при загрузке баннер там, да в реадми строчка.
#332 #938400
Nielsen database. Не понятно, как соединить всё воедино и каким образом кодируются числовые значения. Ни вьювера, ни средств по созданию и редактированию базы нет. Только сами файлы в количестве 5 штук. Буду рад любой информации.
#333 #938504
Как обнуляют регистр хакеры: xor eax, eax или sub eax, eax?
938525
#334 #938525
938543
#335 #938543
>>938525
Тогда почему зомби топил за sub?
938579
#336 #938579
>>938543
И где теперь Зомби, а?
#337 #938761
>>891716 (OP)
Какие функции биоса надо использовать чтобы записывать данные на жёсткий диск? А на периферию флешка, диск через дисковод. Правда я думаю что для периферии есть функции просто для пересылания сигнала.
#338 #938810
В программе есть поля для ввода, как написать dll что бы это перехватить?
#339 #938827
>>891716 (OP)
Хочу получить базовый адрес kernel32 на си так, чтобы было независимо от версии ОС. Для этого делаю поиск по хэшу модуля. Когда нахожу нужную запись в списке загруженных модулей (то, что это она, видно в олли), возвращаю значения поля DllBase, но вместо адреса кернеля мне возвращается число 11000. Что у меня не так?

Минимальный проверяемый кодес:

https://paste.ofcode.org/3axP4kLLgPS99fPtFuvMcGh
938883
#340 #938883
>>938827
Проверь структуру LDR_DATA_TABLE_ENTRY. Похоже, что у тебя там лишнее поле.
939066
#341 #939066
>>938883
Да вот, смотри, структуры отличаются, но количество зарезервированных байт одно и то же.

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa813708(v=vs.85).aspx
#342 #939558
>>893647
ты говоришь странными словами.
#343 #939576
Сап, реверсач. Есть одно говноизделие на базе модуля SIM900R и его Embbed AT. Помоги как дампнуть код с модуля. Плиз.
#344 #939620
Как использовать графический режим VBE 2.0 11Bh 1280x1024x16M, если в регистр al не помещается значение больше 100h (256d)?
940249940315
#345 #940249
>>939620
бамп
940262
sage #346 #940262
>>940249
Код покажи. Ты как режим меняешь? Почему al, а не bx?
940315
#347 #940315
>>940262
>>939620
Всё, я уже разобрался.
Надо сначала в al поместить 0x4F, вызвать перрывание 0x10, затем в ax поместить 0x4F02, в ич 0ч118 (номер режима. Я вібрал такой), вызвать опять 0x10, ну а дальше уже всё понятно. Начало экрана с памяти 0xA000
35 Кб, 1019x839
#348 #940373
Почему дальше пиксели не выводятся? У меня предположение что что-то с памятью. Может надо в другие участки записывать?
http://pastebin.com/0y7hXcCk
940382943192
#349 #940382
>>940373
1) Установи в BX кроме номера режиа еще и бит 14, считая с 0 (0x4000). Это включит режим линейного фреймбуфера.
2) Адрес фреймбуфера спросишь у функции 0x4f01.
3) К сожалению, этот адрес будет за пределами 640к, поэтому тебе понадобится 32-битный защищенный или нереальный режим (гугли unreal mode), чтобы работать с фреймбуфером.
4) Ну или рисуй по кускам, там вроде можно ебаться с окнами/банками (меня миновала эта участь, так что хуй знает, как там что). Гугли VBE switch bank.
940553940554
#350 #940553
>>940382
спасибо за помощь.
940554
#351 #940554
>>940382
>>940553
С защищенным режимом нужно ебаться больше, и стандартные прерывания там не работают. А VESA легко позволяет переключать окна в реальном режиме. Функция 4F01h возвращает в ES:DI описание видеорежима, по смещению 0Ch находится FAR адрес подпрограммы, переключающей окна (параметры те же, что и у функции 4F05h, но работает без лишних расходов).

См. статьи Сергея Андрианова в "Мире ПК" про VESA.
940823
#352 #940589
>>935676
Ох, лол, вчера (сегодня ночью) то же самое написал.
Правда я в твоём коде нихуя не понял.
sage #353 #940823
>>940554

> С защищенным режимом нужно ебаться больше


Поэтому unreal mode - наше все.
#354 #942056
Как в asm реализовать pointer ? Имея Base Address и нужный оффсет .
к примеру game.dll+6552E8 и offset 0x12E464
942075
sage #355 #942075
>>942056
mov ebx,[game_dll_base]
mov edx,[ebx+0x6552e8]
mov [edx+0x12e464],12345
всякие dword ptr расставить по вкусу, алсо можно сделать lea и сохранить адрес на будущее
#356 #943177
>>937750
В общем чтобы обо мне не забывали. Откопал в ntoswrk.lib объектник с названием mmcompress, пустой правда.
Интересно, это сжатая память планировалась ещё в XP (так как в 2000 я такого не нашёл)? Или я не так понял предназначение?
943189950005
#357 #943189
>>943177
Что вы ковыряете хрюшу?
Лучше бы дриснятку ковыряли и сделали швабодную реализацию DX12, а по проще это разобрать блоб нвидии и поудалять легаси затычки оттуда.
943193
#358 #943192
>>940373
На GNU/Linux гораздо проще на асме писать, куча инструментов, диссасемблеров, hexdump и все все.
944302
#359 #943193
>>943189

>Что вы ковыряете хрюшу?


Базу для сорцов дай, я хоть дристянку ковырять буду. Ковыряю что есть.
Впрочем имея на руках чуть более полные сорцы, что есть сейчас, можно их будет допилисвать до состояния дристы, спермооси, дристятки и более новых выкидышей МС. Это и планирую в будущем.
943287
#360 #943206
Как перейти в 32-битный защищённый режим в программе, работающей без ОС? И что делает селектор и как его назначить?
#361 #943208
Как перейти в 64-битный режим в программе, работающей без ОС?
943243943281
sage #362 #943243
>>943208
Идешь такой на сайт интела, качаешь Intel Architecture Software Development Manual, читаешь от корки до корки. В томе System Programming Guide тебе будет щастье.
943273
#363 #943273
>>943243

>Intel Architecture Software Development Manual


при чем тут Intel когда у меня Эльбрус?
943281
#364 #943281
>>943208
Писать 64 битными инструкциями.
amd64 например.
>>943273
att ассемблер универсален. Ну а если эльбрус не работает то иди на сайт эльбруса в поисках Эльбрус Architecture Software Development Manual
#365 #943287
>>943193
Какую базу для сорцов? Продукты майков ковырять очень тяжело должно быть.
Ну нвидии не менее тяжело, но у них хоть нет столько всякого дерьма.
http://www.geforce.com/drivers/results/114232
943289943362
#366 #943289
>>943287
Там основная часть - ненужно и шлак.
Но есть блоб - модуль ядра 30мб с копейками.
Вот его реверс индженерить было бы норм, было бы годно выпилить поддержку старых карт если там костыли, выпилить поддержку ксорга если там есть костыли для этого.
Оставить DRM EGL для вейланда.
943291943362
#367 #943291
>>943289

> есть блоб - модуль ядра 30мб с копейками.


Вот почему божественный модуль интела весит всего 1-2 мб, а нвидия накопила хуй знает сколько, в каком стиле они там драйвера пишут?
#368 #943362
>>943287

>Какую базу для сорцов?


Для XP это WRK да утёкшие сорцы Win2000. Ну и в ReactOS никто не мешает подглядывать, хотя это лишнее, они там накодили совсем не то.
>>943287

>нет столько всякого дерьма


>>943289

>блоб - модуль ядра 30мб с копейками


Ага конечно нет дерьма. Я из ntoswrk.lib только чуть больше 100кб среверсил, и то половина из Win2000 скомуниздил. А там всего-то 5мб. С копейками, ага.
943597
#369 #943576
Вечер добрый господа.
Накидайте недо-геймхакеру-новичку книжечек для изучения основ ассемблера.
Хотелось бы понимать, как работают все эти mov, call, ebx, esx и т.д.
Т.е., понимать все творящее в Cheat Engine и OllyDbg, ну и т.д.
Заранее очень благодарен вам.
943598943600
#370 #943597
>>943362

>олько чуть больше 100кб среверсил, и то половина из Win2000 скомуниздил. А там всего-то 5мб. С копейками, ага.


Ну главное среверсить низкоуровневые вызовы обращения к видеокарте и запросы, они же должны быть видимыми на асме то.
Методом тыка узнать что за что отвечает и сложить все докучи, целый драйвер это 3мб кода должно быть в случае нвидии.
#371 #943598
>>943576
Они разве не опеншорс?
Чит энжайны на C можно писать.
#373 #943963
>>891716 (OP)
Посоветуйте, пожалуйста, русскоязычный можно и україномовний учебник по ассемблеру для ARM
944097
sage #374 #944097
>>943963
В армы без знания английского лучше даже не пытаться лезть. Тебе придется читать гигантское количество разнообразных пдф, и никто для тебя переводить их не собирается.
944099
#375 #944099
>>944097
Ладно, похоже придётся английские читать. Просто так будет дольше раза в 1.5-2.5.
#376 #944302
>>943192
А на венду этого всего нету,да.И гуя в винде нема.
#377 #944422
>>893538
Лучше вак отлаживай. Там интереснее

мб дамп 2015го, который выложили в сеть уже устарел.
944936
#378 #944936
>>944422

>отлаживай


Наверное, разреверси. А чего там интересного? Бегло читал про него когда-то, защита так себе, учитывая такое количество читеров и читов. Он отладчик определяет, целостность файлов на диске и в памяти проверяет?
А ту игру бросил реверсить, не по умениям она мне оказалась. Даже не смог дойти до OEP.
945956
19 Кб, 798x534
#379 #945318
Как зарегить 2017 версию студии? Раньше в старых версиях можно было просто ввести ключ, который нагуглил в интернете.

Допустим я хочу просто перевести триал дату вперед. Сложная ли там защита? Никто не занимался этим вопросом?
945530
sage #380 #945530
>>945318
Зачем тебе интерпрайз? Чего не хватает в комьюнити?
#381 #945553
>>891716 (OP)
Какого фига на этой картинке структура сегментного дескриптора равна 32 битам, в то время когда на самом деле она равна 64 битам?
945555
11 Кб, 580x88
#382 #945555
>>945553
забыл картинку
945559945593
sage #383 #945559
>>945555
Здесь два 32-битных слова, посмотри внимательнее.
945661
#384 #945593
>>945555
Сука, всегда подгорает с этой картинки, за всю индустрию ПК, использующую этот ёбанный стыд и наслоение костылей в продакшене.
65 Кб, 629x460
#385 #945658
Не понимаю почему ошибка. FASM. gdtr — 48-битный регистр, dd — 32 бита, dw — 16 бит. В чём проблема?
http://pastebin.com/svUkdrsU
945809945811
19 Кб, 683x121
#386 #945661
>>945559
Теперь понятно. Какой же ужасный рисунок. Как понять нижнее это первое или второе?
Лучше этот.
sage #387 #945809
>>945658
У фасмы есть fword/pword и tbyte/tword для 48-битных и 80-битных операндов соответственно. Т.е., lgdt fword[GDT]. В качестве альтернативы можно оторвать размерность от GDT (GDT: dd 0x7e10 или label GDT_ at GDT перед lgdt [GDT_]).
945823
sage #388 #945811
>>945658
Ахда, а ошибка в том, что метка при определении данных получает тип (размер) от определяемых данных. У тебя GDT dd, значит метке GDT присваивается "тип"/размер 32 бита, и значит при lgdt [GDT] фасм пытается сделать lgdt dword[GDT], что, разумеется, неверно.
945823
#389 #945823
>>945809
>>945811
Спасибо, няша.
#390 #945956
>>944936

>отладчик определяет, целостность файлов на диске и в памяти проверяет



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

https://www.unknowncheats.me/wiki/Valve_Anti-Cheat

Свежее дампа нет, а на дворе уже 2017. Вот никак не могу понять: они вак вообще не обновляют или как?
20 Кб, 273x207
#391 #946177
>>891716 (OP)
Я уже почти перешёл в защищённый режим. Но после это команды всё прекращается. Ошибка в виртуал боксе. Может это потому что я использу. virtual box? Может надо qemu использовать?
http://pastebin.com/egDdQCM5
946201
#392 #946201
>>946177-кун
И в qemu проверил. Виртуальная машина просто перезапускается.
946299
#393 #946299
>>946201-кун
Всё, я похожу понял что было не так. У меня бит P был сброшен, а когда он установлен то ошибки нету. Но я не понимаю из-за чего так. Он же вроде бы как используется другими программами.
25 Кб, 279x385
31 Кб, 1026x819
#394 #946376
>>891716 (OP)
Я перешёл в защищённый режим, сделал глобальную дескрипторную таблицу, положил в сегментные регистры селекторы дескрипторов, но адресовать больше 1 МБ не могу. Защищённый режим вообще правда сущетсвует?
http://pastebin.com/TXpR2hfu
946524
sage #395 #946524
>>946376

> mov edi,0xA0000


Ты включил LFB, но адрес, по которому этот LFB начинается, так и не получил. Дергай 0x4f01, по офсету 0x28 от начала информации о режиме будет адрес буфера.

> mov cx


Не делай так. loop в 32-битном режиме использует ecx.
946583946932
#396 #946583
>>946524

>loop в 32-битном режиме использует ecx.


А в 64 битном RCX.
Ждём 128 бит, чтобы опять переписывать наш код на асме.
946584
#397 #946584
>>946583
Пишу с ноута, выполняющего 32-битную ОС, рядом 32-битные планшет и телефон. Вокруг меня куча железа с 8- и 16-битными контроллерами. Какие 128 бита, о чем ты вообще?
946585946908
#398 #946585
>>946584
Сейчас 64 бита норма даже для микроконтроллеров.
Есть нужда в 128 битах, потому как памяти надо все больше, и инструкций все больше появляется, а они опциональные а не стандарт.
AVX2 и все подобное должно войти в стандарт amd128
#399 #946908
>>946584

>Пишу с ноута, выполняющего 32-битную ОС, рядом 32-битные планшет и телефон


Нищеброд. Пишу с ПК х64 (24ГБ ОП), имею ноут х64(8ГБ ОП), даже телефон х64.
947274
#400 #946932
>>946524
Спасибо, но я уже передумал учить ассемблер для x86(-64). Буду для ARM изучать.
947274
#401 #947274
>>946908
Я пользуюсь железом, которое удовлетворяет мои потребности. В игори не играю.

>>946932
Лол, ну удачи. ARM-мирок с двумя десятками семейств, с фактически отсутствующими стандартами даже в пределах семейства, да еще без опыта доставит тебе множество веселых минут.
948431949452
#402 #948119
Совершенный, конечно, оффтоп, но все же.
http://www.news-journalonline.com/news/20170213/sky-diver-injured-in-deland-remains-hospitalized
948219
#403 #948219
>>948119
Совпадение?
948221
#404 #948221
>>948219
Страшусь спросить, с чем?
948222
#405 #948222
>>948221
>>948221
Прости, лень печатать
#406 #948431
>>947274

>Я пользуюсь железом, которое удовлетворяет мои потребности.


Нищебродские у тебя потребности. У меня сейчас две виртуалки крутятся, браузер с 9000 вкладок, система контроля версий с проектами в сумме с 1млн файлов, и прочий софт. И куча свободной памяти для файлового кеша, что делает работу быстрой как никогда ранее.
А у тебя своп своп нехватка памяти пидор.
948438948758949452
#407 #948438
>>948431
Тебя ебёт, какие у него потребности?

А не должно
948712
#408 #948712
>>948438
Просто из-за таких как ты прогресс стоит, а я не могу делать онли х64 софт. Давно бы выкинуть подсистему SysWOW64 из венды, она бы в полтора раза похудела со всех сторон.
948733948758
#409 #948733
>>948712

>Просто из-за таких как ты прогресс стоит



Прогресс стоит из-за таких как ты - которые срут на сосаче и выёбуются своим железом.

А мог бы делом заняться, инновации вводить себе в анус
#410 #948758
>>948431
>>948712
Бессмысленное увеличение разрядности регистров - это не прогресс. 64 бита для арифметики не так уж часто нужны. Это обычно либо финансы, где все равно свои типы с фикседпоинтом, и им похуй, на каком int они собраны, либо длинная целочисленная арифметика, которая тоже не зависит от размера регистров.

Увеличенный размер виртуального адресного пространства с одной стороны - штука хорошая, ASLR всякие, меньшая вероятность проблем с фрагментацией. С другой стороны, с увеличением разрядности возникают все более неприятные проблемы с TLB, которые решаются еще более хитрыми способами, и детерминированности в работу системы это нихуя не добавляет.

Браузер с 9000 вкладок - это тоже не прогресс, это полный фэйл интерфейса браузера, интернета и твой собственный ты их никогда не прочитаешь, но однажды проебешь без возможности восстановления.
949087
#411 #949087
>>948758

>Увеличенный размер виртуального адресного пространства


This.

> все более неприятные проблемы с TLB


Для вокрлоадов которые втискивались на старом адресном пространстве TLB хватит за глаза. А для тех, которым на 4GB тесно было лишний раз сходить в page table все равно лучше чем сходить в своп

> детерминированности в работу системы это нихуя не добавляет


Вообще заиваться о детерминированности после появления спекулятивного исполнения/бренч предикшена и гипертредов это как то уже моветон.
#412 #949278
Откуда он спёр сорцы винды?
https://www.youtube.com/watch?v=ka21Sk_5tdU
949284
#414 #949311
>>949284
Да я видел конкретный пост на svn репозиторий. Но он приватный был уже тогда, а сейчас кажется вообще не пашет.
Впрочем вопрос был в том, откуда они у него и как сделать так же. Если это конечно не подделка.
949351
#415 #949351
>>949311
Там есть упоминания WRK, значит взял отсюда: https://winehq.org.ru/Windows_Research_Kernel
949425
#416 #949398
>>891716 (OP)
Как правильно распаковать и запаковать rt.jar чтобы нормально потом воспринялся java-ой ? Мне нужно поменять строку в одном классе, но после того как упаковщик хоть как-то изменяет rt.jar - он перестает нормально восприниматься.
949430
#417 #949425
>>949351
Да не, на видео намного больше, чем есть в WRK, включая такие части, которые вообще никогда не утекали и попросту отсутствуют в коде Win2000 и уникальны для Win2003.
И как бы там типа 11ГБ сорцов.

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

В общем вдруг найдутся хакеры, которые взломают его хостинг, ПК и анальную девственность и сольют сорцы винды на радость анонимусу.
А то я ебусь с реверсом каждого килобайта кода, а кто-то располагает полными сорцами винды.
Я бы точно слил, и похуй, сколько меня потом будут иметь потом МС.
949449
#418 #949430
>>949398
Манифест удали.
949447949467
#419 #949447
>>949430
неа

Error occurred during initialization of VM
Unable to use shared archive.
An error has occurred while processing the shared archive file.
Unable to unmap shared space.
949467
#420 #949449
>>949425
Поржал с дэбила, хех.
949541
#421 #949452
>>947274
>>948431
Лошье малолетнее. Я на итаниуме работаю на силинок уоллей, уже десять лет все летает.
949533
#422 #949467
>>949430
>>949447
И так как бы я не менял его.
#423 #949533
>>949452

> Я на итаниуме работаю


Труп ты насилуешь. Его уже все закопали, даже Майкрософт, даже Интел, а ты до сих пор с ним забавляешься. Прекрати.
#424 #949541
>>949449
Поясни причину смеха.
949947
#425 #949620
>>891801
Не совсем понял сути. Ты хочешь запускать приложения, рассчитанные на win7, на более раннем ядре?
949706
#426 #949706
>>949620
Очевидно, что да. Так же портировать полезные вещи, типа улучшенного менеджера памяти, ALPC, подсистемы Linux приложений, DX10.
#427 #949944
>>894887
Как знал... Умер >>948063 (OP)
#428 #949947
>>949541
Зачем труп мамонта ковырять?
Возьмись за ум, ковыряй линукс.
Сейчас надо все графические либы на вулкан переводить.
949963
#429 #949949
Какие диссассемблеры юзаете? А декомпиляторов никаких нет?
#430 #949963
>>949947

>Зачем труп мамонта ковырять?


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

>Возьмись за ум, ковыряй линукс.


Скучно, он как бы открытый.
949990949992
#431 #949990
>>949963

>лучше


>работает больше пк


В голосину, там в хрюшемирке драйверов давно нет.

>открытое скучно


Дриснятку ковыряй, выпиливай зонды или дирекикс12 реверси.
950002
#432 #949992
>>949963
https://i.4cdn.org/g/1489035306330.png
Почистили бы говно со своей дриснятки, ато только умничаете что линукс не такой.
950002
#433 #950002
>>949990

>там в хрюшемирке драйверов давно нет


УМВР.

>Дриснятку ковыряй


Как ХР и спермоось сковыряю, так и за дристянку возьмусь.
>>949992

>Почистили бы говно со своей дриснятки


Она твоя, а не моя. Моя ОС- это ХР, в которой ни одного зонда, в отличии от какой-нибудь бубунты.
#434 #950005
>>943177
В общем продолжаем. Вот код:
http://pastebin.com/zjMJTxq1
что такое с этой переменной v9? Почему ей даётся тоже значение, что и до этой, и выполняется та же проверка? Вообще не разумею.
951622
#435 #950009
Есть ли годный ARM эмулятор для Андроида, кроме официального ПО? Или не годный, а хоть какой-нибудь. Нашёл статью про эмуляцию 64 битного ARM (Linaro), а мне бы 32. Или они обратно совместимы, как в Windows 64-bit возможность запуска 32 битных приложений? Или, может быть, кто подскажет, как дебажить приложения под Android?
950142
#436 #950125
По какой книге начать изучать ассемблер?
950143950287
#437 #950142
950164
#438 #950143
>>950125
http://asmworld.ru/page/5/
не книга, но годно.
950162
#439 #950162
>>950143
Спасибо, но все-таки там описывается дос, а где есть материалы по win32?
#440 #950164
>>950142
И как им воспользоваться? Где взять образ системы? Как запустить?
#441 #950287
>>950125
Сначала читаешь книгу Таненбаума про архитектуру компьютера, потом мануалы по конкретным интересующим процессорам (и операционным системам, если не под голое железо пишешь) от производителей. Например, вот Intel: https://software.intel.com/en-us/articles/intel-sdm
950288
#442 #950288
>>950287
Ах да, ещё почитай документацию на ассемблер, которым пользуешься:
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/
https://msdn.microsoft.com/en-us/library/afzk3475.aspx
#443 #950905
чуваки изучаю асм(насм, фасм)х86-64, добавляйтесь https://t.me/movebx для совместного изучения, хэлпа и обмена инфой
#444 #951622
>>950005
В общем забъём.
Самый интересный файл в ntoswrk.lib- это файл FOLTZ.obj. Размер его в 151 кб, а IDA там ничегошеньки не видит. Если его открыть в текстовом редакторе, то можно заметить целый вагон инклюдов и прочего, среди которых есть строка
d:\fw\base\oem\src\kernel\patchgd\pgd.c
В общем как бы намекает на то, что там зашифрован код патчгуарда. Я вообще не имею опыта расшифровки файлов с защитой, поэтому прошу помощи сообщества.
952044952448
#445 #952044
>>951622
Для начала узнать бы что за шифровка.
sage #446 #952448
>>951622

> там зашифрован код патчгуарда


лицорука.jpg. Вот что бывает, когда люди пользуются готовыми утилитами без малейшего понимания, как они работают.
1) Там две функции из пары инструкций и несколько массивов.
2) Все килобайты - это отладочная инфа, она в релизе даже не линкуется.
952847
#447 #952847
>>952448

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


Таки да, я сразу писал, что я макака, обмазался инструментами и надеюсь на результат. Пока чуть больше 300КБ среверсил, из почти 6МБ.

>Все килобайты - это отладочная инфа, она в релизе даже не линкуется.


Хорошо, её можно как-то использовать? Она же явно к патчгуарду относится. Вот список подключаемых заголовочных файлов, дохуя 155 штук. Вижу структурки, видимо, используются там.
Просто я видел код патчгуарда в IDA, там больше 11к строк, и любая информация должна помочь, поэтому нужно извлечь максимум информации из этого файла. Ведь не просто так его пытались спрятать, переименовав из pgd.obj в какой-то там foltz.obj.
952875952899
sage #448 #952875
>>952847

> Она же явно к патчгуарду относится


> Ведь не просто так его пытались спрятать


Это ты на основании одного хедера говоришь?

> Хорошо, её можно как-то использовать?


Конечно можно. https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe Если не сможешь пропатчить версию подсистемы для запуска утилиты под XP - тебе рано этим заниматься.
952950
#449 #952899
>>952847
А этот PatchGuard в WDK точно есть?
https://rebl0g.wordpress.com/2010/12/09/а-где-patchguard-в-wrk/
Или ты за оригинальное ядро взялся?
952950
7 Кб, 668x331
#450 #952950
>>952875

>Это ты на основании одного хедера говоришь?


Точнее на основании строки с именем объектного файла. При генерации объектника в него записывается имя этого объектника, и во всех объектных файлах WRK эта строка совпадает с именем самого файла. Кроме одного, угадайте какого.
К тому же размеры, ни один объектник с 3,5 функциями не весит столько, сколько этот. Он вообще один из самых больших, обычно же такие почти пустые весят от 2 до 10кб.
Функции, содержащиеся в нём, никак не могут генерировать столько отладочной информации. А вот код патчгуарда может, так как он лезет во все щели в ядре.

>Если не сможешь пропатчить версию подсистемы для запуска утилиты под XP


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

>А этот PatchGuard в WDK точно есть?


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

>Или ты за оригинальное ядро взялся?


Я потыкал палкой всю линейку ядер от Win2000 до Анального обновления десятки, по возможности так же посмотрев отладочные сборки.
#451 #953269
>>895188
ахахах, допрыгался
#452 #953683
Итак, анон, есть reg-файл.
Это вот дело служит паролем для базы данных.
Насколько я понимаю, dword 83 это какой-то сдвиг фразы "Увррфмсз", потому что когда я ставлю значение 0, то захожу в базу по этой фразе. Как узнать, какая фраза выходит после этого сдвига? Он как-то по ASCII вперед на 83 символа сдвигается или как?

[HKEY_CURRENT_USER\SOFTWARE\mtests]
"t"=dword:00000083
"validate"="Увррфмсз"
953771
sage #453 #953771
>>953683

> Увррфмсз


Там xor каждой буквы слова "Password" с 0x83.
#454 #953819
Как может быть отрицательное смещение у указателя с типом PKPRCB?
; void __fastcall PerfSetLogging(PVOID MaskAddress)
public PerfSetLogging
PerfSetLogging proc near
xor r8d, r8d
cmp byte ptr cs:KeNumberProcessors, r8b
jbe short locret_278
lea rdx, KiProcessorBlock
loc_25B:
mov rax, [rdx]
inc r8d
add rdx, 8
mov [rax-170h], rcx
movsx eax, byte ptr cs:KeNumberProcessors
cmp r8d, eax
jb short loc_25B
locret_278:
retn 0
953903
sage #455 #953903
>>953819
Указатель дереференсится же. KPRCB лежит в KPCR, к ней и идет обращение. Точнее сказать не могу, возьми символы и посчитай, что конкретно там лежит относительно офсета PrcbData.
953985
#456 #953985
>>953903

>дереференсится


Поясни, не понял. Всё равно не могу понять, как он выходит отрицательным.

У меня получается только такой код, который компилится с точностью вот до этого смещения, которое у меня всегда положительное.
VOID
PerfSetLogging(
PVOID MaskAddress
)
{
ULONG Index;
PKPRCB Prcb;
for (Index = 0; Index < (ULONG)KeNumberProcessors; Index += 1) {
Prcb = KiProcessorBlock[Index];
Prcb->SavedRsp = MaskAddress; // Наобум
}

}
953996954131
#457 #953996
>>953985
Отвечу за него.
Это значит, что KPCR лежит внутри KPRCB, в функцию передаётся (или каким он образом попадает) указатель на KPCR. А нужно получить указатель на KPRCB, т.е. на начало структуры. Скорее всего, это через макрос делается, что-то типа offsetof, отсюда и отрицательное смещение.
PKPRCB = PKPCR - offsetof(KPRCB, name);
В свою очередь, KPCR получается так:
PKPCR *name = &PKPRCB->name;
954131954438
61 Кб, 1280x1024
#458 #954118
Это с кодировкой шляпа или ватафак и как починить?
954131
sage #459 #954131
>>953985
>>953996

> KPCR лежит внутри KPRCB


Наоборот.

> Скорее всего, это через макрос делается


Да, только у Microsoft свой, более безопасный offsetof под названием CONTAINING_RECORD:
Prcb = KiProcessorBlock[Index];
CONTAINING_RECORD(Prcb, KPCR, PrcbData)->КакоеТоПолеKPCR = MaskAddress;

> Всё равно не могу понять, как он выходит отрицательным.


Офсет того поля, к которому идет обращение меньше, чем офсет PrcbData. Дельта отрицательная.

>>954118

> как починить


Не использовать это говно? В подсветку асма умеет каждый первый блокнот.
954133954135954438
sage #460 #954133
>>954131

> КакоеТоПолеKPCR


Погуглил за тебя (http://www.geoffchappell.com/studies/windows/km/ntoskrnl/structs/kpcr.htm):
0x0180: KPRCB Prcb; в 64-битной структуре, оказывается, не PrcbData, а просто Prcb
0x180 - 0x170 = 0x10
0x10: PVOID PerfGlobalGroupMask; late 5.2 only
954438
#461 #954135
>>954131
чё я бля непонял
я просто копипастнул сурс какойто тупой проги по дигностике пары партов и памяти на диплом, а запустить не запускается, я и строки кода не понимаю, первый раз асемблер вчера увидел

мне просто над что бы работало и показать мне дадут документ и я домой
#462 #954438
>>953996
>>954131
>>954133
Благодарю, оно самое. Суть метода понял.

Если кому интересен мой прогресс, на данный момент ntoswrk.lib похудел на 365кб (х64), или 327кб (i386), к коду WRK добавлено 577 КБ кода в 39 файлах плюс правки в некоторых исходных.
954454
#463 #954454
>>954438
Ты лучше скажи, ты пробовал компелировать ту срань от ReactOS, которая позволяет современный софт на XP запускать?
954462
#464 #954462
>>954454
One-Core-Api? Там используются файлы реактОС, но проект с ними не связан.
Нет, не пробовал, какая-то непонятная срань. Как вообще можно использовать файлы реактоса, который толком с ХР не совместим, для запуска приложений виста+?
1 Кб, 293x65
#465 #954684
Только осваиваю ассемблер.
То, что на пикрелейтед верно?
И почему когда выполняю xor reg,reg устанавливаются два флага ZF(потому что результат равен 0) и RF, причем четность?
954721954802
#466 #954721
>>954684
PF ставится, когда в младшем байте результата четное число единичных битов. Считай, что 0 - тоже четное число.
#467 #954802
>>954684
pf = parity flag
parity = четность
23 Кб, 951x390
#468 #955089
Problem: Failed to trace the value of the stack pointer

Посоны, смотрите пикрил. Хочу понять что делает функция + декомпилировать в си-псевдокод. Хекс-рейс не декомпилирует этот участок.

Если я запущу в отладчике этот участок, то эти проблемы исчезнут? Или это навсегда?

Есть ли туториал по отладке для суперньюфагов? Мне не надо ничего менять в программе -- только понять что делает эта функция.

Эта функция из dll, которую использует гуи-программа.
955103955210
#469 #955097
>>937771
Клево. По какой литературе ты научился так делать? Я в курсе про алгоритм Брезенхема, но не думал, что все вместе займет столь мало строк кода.
#470 #955103
>>955089

>Или это навсегда?


Это пока ты не определишь правильные параметры функции, или её границу, или там ещё чего. В общем в этом месте автоматика дала сбой, и ждёт, что человек решит её проблему.

>Эта функция из dll, которую использует гуи-программа.


А точнее? Нагуглилось вот такое, не оно?
https://docs.thefoundry.co.uk/nuke/63/ndkreference/Plugins/classDD_1_1Image_1_1Reader.html#88840f7e58934404af4d0c7c31c5dcbc
955132
#471 #955112
>>927215
>>927242
В туже копилку:
http://terminus.rewolf.pl/terminus/
Ссылка на шапку, чтобы не забыть после переката.
Вообще, нужно шапку накидать, и добавляться в официальные треды.
>>891716 (OP)
#472 #955132
>>955103

>Нагуглилось вот такое, не оно?


Оно. Но там все равно только доксиген на хедеры.

Сейчас запустил под отладчиком, а эта функция и не вызывается в реальном коде. Вызывается с тем же именем, но с другим набором параметров. Она вот нормально декомпилировалась. Но правда сноумен и хекс-рейс по-разному это сделали.

Буду дальше ковыряться.
955217
#473 #955210
>>955089
Убери прототип нахуй, посмотри, правда ли там функция по джампу или это кусок текущей (что вероятнее), проставь прототип для функции по джампу, проставь прототип для этой функции, и все будет.
#474 #955217
>>955132

>Но правда сноумен и хекс-рейс по-разному это сделали.


Было бы странно, если бы они это сделали одинаково.
#475 #955276
Похвалюсь исправлением глюка в программе Apowersoft Phone Manager. Глюк заключался в трёхдневном триал-режиме. Быстро справился с исправлением, поэтому и хвалюсь. Хотя, это не полноценное лечение, кейген работает, но нужно либо писать прокси-сервер, т.к. программа лезет в интернет для проверки, либо запрещать ей фаерволом доступ в интернет. Сам выбрал последний вариант. Через 3 дня узнаю, требуется ли обязательная проверка ключа, а сейчас время не охота переводить.
Но как глупо сделана защита. В папке "AppData\Roaming\Apowersoft\Apowersoft Phone Manager\" создаётся два скрытых файла, один из которых называется "trial". Мне не было нужды проверять, но догадываюсь, что удалением этого файла продлевается срок триала ещё на 3 дня. Программа (C#) при пошаговой трассировке сама выводит на модуль, в котором содержится проверка лицензии. Разработчик хоть чуть-чуть усложнил поиск этого места путём запуска модуля в памяти (не знаю, как правильно называется это в C#). При этом оставил все названия функций. Хотя бы мучаться не пришлось.
А мой вопрос так и остаётся в силе. Как дебажить ARM приложения? В программировании Android'а не знаком. Нашёл и скачал androl4b. Там есть эмулятор. Но, когда в него перетаскиваешь APK, то пишет INSTALL_FAILED_CONTAINER_ERROR. Погуглил, советуют изменять APK, добавлять какие-то опции в AndroidManifest.xml. Как всё сложно в нём.
11 Кб, 1229x205
#476 #955712
Поясните за пикрил. _DWORD и LODWORD -- что это за типы? _DWORD -- это какой-то двухбайтовый тип? Или что это значит?

Система x86-64. Программа тоже.
955717
#477 #955717
>>955712
Сам разобрался.
#478 #956429
чем можно начать реверсить DOS приложение? под линью. нужно ставить дос на виртуалку? вроде нужно исполнение, я же не знаю что ищу. и хотелось бы трахаться с radare2.
956470
#479 #956470
>>956429
r2 для хипстеров. Если тебе нужно не посмотреть пару функций и поправить пару байтов, а именно отреверсить - IDA без вариантов. Доса в досбоксе достаточно. IDA теоретически умеет в Bochs-отладку, практически я никогда не пробовал отлаживать 16-битный код. Алсо, можно собрать кастомный досбокс с их собственным говноотладчиком.
956492
#480 #956492
>>956470

>IDA


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

попробую фриидос на виртуалке загнать, пишут что что-то из венды поддерживают - наверно нужно ставить радар w32.

а как ты себе представляешь это на досбоксе? это ещё нужно отличать досбокс от программы? ну нахуй такое счастье.
956526
#481 #956526
>>956492

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


Но это единственный активно развивающийся дизасемблер, и вообще самая лучшая программа для реверса.
С радаром ты будешь ебаться в одиночку, потому что тут его никто не использует.
956556
#482 #956556
>>956526
Чем они отличаются то? Есть несколько свободных диссасемблеров.
956606
#483 #956606
>>956556

> Чем они отличаются то


IDA, конечно, тоже полное говно, но она умеет пикать, а если уж соберется что-то испортить, то хотя бы переспрашивает. Если серьезно, то реверсинг - это про восстановление информации. Если информации перед глазами мало, а чтобы получить ее, нужно сплясать на клавиатуре - это хуевая программа. Если единственный гуй у программы - это кривая вебморда, если вообще как-то затесалось слово "веб" в реверсинг, где могут быть сотни мегабайт листингов - это хуевая программа. Если уж есть какие-то претензии к IDA, надо смотреть не на r2, а на Hopper или Binary Ninja (оба платныеПРОПРИЕТАРНЫЕ) - там хотя бы разработчики понимают, какие могут быть требования и цели, а не сооружают вим с дизасмом и фортунками.
956901956910
28 Кб, 720x447
#484 #956621
http://help.fdos.org/en/hhstndrd/base/debug.htm
немного потыкал. в дебагинге я полный даун.

образы заебатые у фридоса - 400 мб ваще ахуеть.

я уже дико сомневаюсь в идее радара на досе, это же монопроцессная система - хер знает. я прост алкаш, поэтому такой ленивый, завтра разберусь. хотя, я помню тут разбирался в статических анализаторах - запала не на долго хватило...
956622
#485 #956622
>>956621

> debug.com


Возьми турбо дебаггер хотя бы. А вообще, я все еще настоятельно рекомендую посмотреть в сторону Bochs и/или встроенного отладчика досбокса. У Bochs по крайней мере есть GDB-стаб, и с этим уже можно жить.

Что реверсить-то пытаешься?
956625
#486 #956625
>>956622

> Что реверсить-то пытаешься?


не скажу, иначе точно не сделаю. но это графическая программа.
157 Кб, 1200x750
#487 #956901
>>956606

>Hopper


Лол, гламурный дизассемблер для пидорасов.
Dmitry #488 #956910
>>956606
Есть же просто утилиты что переведут код в ассемблерный файл, чем они плохи?
956919
#489 #956919
>>956910
Отсутствием интерактива. Они высрут свой ассемблерный файл, и делай с ним что хочешь.
ИДА же даёт классную навигацию по коду, построение графа вызовов.
Позволяет определить код как данные и данные как код, когда автоматика ошиблась. Определить, где константа, а где относительное смещение. И ИДА сама повторяет анализ изменившихся мест и дополняет ассемблерный листинг новой информацией, зачастую там, где ты даже не догадывался о связи.
Неинтерактивные дизассемблеры коррекцию анализа или вообще не позволяют, или это настолько неудобно, что тебя это заебёт на второй итерации.

В общем послушай умных людей, не выёбывайся и ставь IDA Pro 6.8.
957168
Dmitry #490 #957168
>>956919
Не мокрописька ли виндовая?
957178
#491 #957178
>>957168
Какой же ты люнупсоид, если не можешь спиратить винду в виртуальную машину и поставить туда пиратскую же иду?
957183
#492 #957183
>>957178
Да это же местный сумасшедший неймфаг. Поддакивай ему и старайся не обижать.
957216
#493 #957216
>>957183

>неймфаг


Вляпался не заметив.
#494 #959676
https://www.unknowncheats.me/wiki/Assembly

Для нуфажин, которые могут в ангельский. Всё расписано, разжевано, осталось только положить в рот и переварить.
#495 #959814
В исходнике был класс с массивом фиксированного размера. Надо увеличить размер этого массива. Как можно это сделать? Сам класс глобальный, расположен в секции не инициализированных данных. Поэтому даже передвинуть массив в конец не получится.
Сам вижу только один путь - переделать с фиксированного размера на динамический с выделением необходимого количества памяти.
959828
sage #496 #959828
>>959814
Отлови ссылки на текущий инстанс класса, добавь байтов к последней секции, положи туда новый инстанс. Если релоки в бинарнике есть - это делается чуть ли не автоматически. Если нет - IDA, в принципе, справляется, плюс можно PAGE_NO_ACCESS и VEH прилепить на всякий случай, который будет детектить ошибки обращения к старому инстансу, править указатель и писать лог источников, чтобы ты поправил бинарь.
960012
#497 #960012
>>959828
А если массив не в конце класса? Он идёт после таблицы виртуальных функций. Если изменить размер, это придётся править все относительные ссылки, все не отловишь. Ещё есть абсолютная адресация, т.к. класс глобальный, компилятор некоторые обращения к классу заменил на абсолютные адреса.
960092
sage #498 #960092
>>960012

> компилятор некоторые обращения к классу заменил на абсолютные адреса


Это не проблема, аболютные адреса IDA тебе найдет, ссылки на регион памяти можно скриптом перечислить.

> придётся править все относительные ссылки, все не отловишь


А вот тут проблема, да. Конечно, динамически (c PAGE_NO_ACCESS) можно отловить все, но из-за постоянной обработки исключений будут тормоза.
#499 #960280
Пилите перекат с шапкой
960363
#500 #960363
>>960280
Завтра запилю, без меня не начинать.
ОП
960364
sage #501 #960364
>>960363
Выложи шапку куда-нибудь, может чего добавлю.
960379
#502 #960379
>>960364
Так завтра и начну делать, лол.
#503 #960643
ПЕРЕКОТ
>>960640 (OP)
>>960640 (OP)
>>960640 (OP)
>>960640 (OP)
>>960640 (OP)
>>960640 (OP)
Хуй с ней, с шапкой, в следующем треде поправим.
ОП
#504 #960712
>>891716 (OP)
Спрошу тут может кто знает как в VS2017 С++ проект скомпилить в исполняемый файл с одной секцией. в 2013 получалось в 2017 всегда создает .rdata и .text
#505 #973929
Помогите сделать задачу "У гусей и кроликов вместе 64 лапы. Сколько может быть кроликов и гусей (подсчитать количество комбинаций)?"

Вот что я сделал и вроде как оно даже работает, но правильно ли я не знаю. Подскажите формулу по которой находятся подобные задачи. И да код должен быть универсальным т.е. может быть и 4000 лап и 6.

use16
org 100h

mov ax,64 ;остаток лап
mov cx,4 ; сколько лап у кроликов

div cx

lexa:
sub ax,1
add si,1 ; количество комбинаций
cmp ax,0
jne lexa

mov ax,4C00h
int 21h
130 Кб, 1206x672
104 Кб, 1372x727
#506 #983097
Неофит ИТТ. Поясните пж за следующую вещь. В hex-редакторе при анализе структуры PE файла (pic 1) вижу, что VA OEP = 10212, а ImageBase = 4194304, тогда абсолютный адрес точки входа = 4194304 + 10212 = 4204516 = 0x004027E4, и вроде как в дебаггере именно это число я и должен увидеть помеченным как entry point, но чому то в ollyDbg2.01 я вижу (pic 2) 0х00CE27E6. Я неправильно считаю точку входа? Неправильно трактую значение адресов в левом столбце в ollyDbg? Или еще что то делаю не так?
983125
#507 #983125
>>983097
Алсо, я понимаю, что в olly я вижу образ процесса, а не дизассемблированный исполняемый файл, и загрузчик может выравнивать образ по размеру страницы оперативной памяти, но не настолько много ж блеть. Или настолько?
И да, исполняемый файл не упакован/не зашифрован, т.к. написан мной.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 24 мая 2017 года.

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

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