Вы можете использовать Camera.ScreenToWorldPoint .
Затем вам может потребоваться изменить координату z результата на 0 или что-то еще, что вам нужно, чтобы поместить куб на нужной высоте над плоскостью.
OllyDbg is an awesome tool that disassembles an EXE into readable instructions and allows you to execute the instructions one-by-one. It also tells you what API functions the program uses and if possible, the arguments that it provides (as long as the arguments are found on the stack).
Generally speaking, CPU instructions are of variable length, some are one byte, others are two, some three, some four etc. It mostly depends on the kind of data that the instruction expects. Some instructions are generalised, like "mov" which tells the CPU to move data from a CPU register to a place in memory, or vice versa. In reality, there are many different "mov" instructions, ones for handling 8-bit, 16-bit, 32-bit data, ones for moving data from different registers and so on.
You could pick up Dr. Paul Carter's PC Assembly Language Tutorial which is a free entry level book that talks about assembly and how the Intel 386 CPU operates. Most of it is applicable even to modern day consumer Intel CPUs.
The EXE format is specific to Windows. The entry-point (i.e. the first executable instruction) is usually found at the same place within the EXE file. It's all kind of difficult to explain all at once, but the resources I've provided should help cure at least some of your curiosity! :)
ACD Вероятно, See использует тот факт, что .EXE-файлы не проверяют длину файла или что-либо, превышающее ожидаемую часть файла. Из-за этого вы можете создать .EXE-файл, который откроет себя и загрузит все данные за пределы заданной точки в виде данных. Это полезно, потому что вы можете затем создать .EXE, который работает с данным набором данных, просто прикрепив эти данные к концу надлежащим образом написанного .EXE
(я понятия не имею, что именно ACD See означает, так что принимайте это с большая доля соли, но я знаю , что некоторые программы создаются таким образом.)
И ваше любопытство, и ваш уровень понимания именно там, где я был в какой-то момент. Я настоятельно рекомендую Код: Скрытый язык аппаратного и программного обеспечения . Это не ответит на все вопросы, которые вы здесь задаете, но проливает свет на некоторые аспекты черной магии компьютеров. Это толстая книга, но очень удобочитаемая.
Win32 exe формат на MSDN
Я бы предложил взять немного исходного кода Windows C и собрать и начать отладку в Visual Studio. Переключитесь на вид разборки и перешагните через команды. Вы можете увидеть, как код C был скомпилирован в машинный код - и посмотреть, как он выполняется пошагово.
Содержимое файла EXE описано в Portable Executable . Он содержит код, данные и инструкции для ОС по загрузке файла.
Между машинным кодом и сборкой существует соотношение 1: 1. Программа дизассемблера выполнит обратную операцию.
На i386 нет фиксированного количества байтов на инструкцию. Некоторые - это один байт, некоторые - намного длиннее.
Просто по этому вопросу, кто-нибудь еще читал такие вещи, как CD 21?
Я вспомнил Сандру Баллок в одном шоу, на самом деле читая скрин с шестнадцатеричными числами и выясняя, что делает программа. Вроде как текущая версия чтения кода Matrix.
Если вы читаете такие вещи, как CD 21, как вы помните различные комбинации?
If it's as foreign to you as it seems, I don't think a debugger or disassembler is going to help - you need to learn assembler programming first; study the architecture of the processor (plenty of documentation downloadable from Intel). And then since most machine code is generated by compilers, you'll need to understand how compilers generate code - the simplest way to write lots of small programs and then disassemble them to see what your C/C++ is turned into.
A couple of books that'll help you understand:-
You can use debug from the command line, but that's hard.
C:\WINDOWS>debug taskman.exe
-u
0D69:0000 0E PUSH CS
0D69:0001 1F POP DS
0D69:0002 BA0E00 MOV DX,000E
0D69:0005 B409 MOV AH,09
0D69:0007 CD21 INT 21
0D69:0009 B8014C MOV AX,4C01
0D69:000C CD21 INT 21
0D69:000E 54 PUSH SP
0D69:000F 68 DB 68
0D69:0010 69 DB 69
0D69:0011 7320 JNB 0033
0D69:0013 7072 JO 0087
0D69:0015 6F DB 6F
0D69:0016 67 DB 67
0D69:0017 7261 JB 007A
0D69:0019 6D DB 6D
0D69:001A 206361 AND [BP+DI+61],AH
0D69:001D 6E DB 6E
0D69:001E 6E DB 6E
0D69:001F 6F DB 6F
Вы видите исполняемый файл в формате Microsoft (переносимый исполняемый файл) Microsoft. По сути, это контейнер, который содержит некоторые специфические для операционной системы данные о программе, а сами данные программы разбиты на несколько разделов. Например, код, ресурсы, статические данные хранятся в отдельных разделах.
Формат раздела зависит от того, что в нем. Раздел кода содержит машинный код в соответствии с исполняемой целевой архитектурой. В наиболее распространенных случаях это Intel x86 или AMD-64 (так же, как EM64T) для двоичных файлов Microsoft PE. Формат машинного кода - CISC и восходит к 8086 и ранее. Важным аспектом CISC является то, что размер его инструкций не является постоянным, вы должны начать читать в нужном месте, чтобы извлечь из него что-то ценное. Intel публикует хорошие руководства по набору команд x86 / x64.
Вы можете использовать дизассемблер для непосредственного просмотра машинного кода. В сочетании с руководствами вы можете угадывать исходный код большую часть времени.
И еще есть MSIL EXE: исполняемые файлы .NET, содержащие промежуточный язык Microsoft, не содержат машинный код, а код .NET CIL. Спецификации для этого доступны онлайн в ECMA.
Их можно просмотреть с помощью такого инструмента, как Reflector.
Вам нужен дизассемблер, который превратит машинный код в язык ассемблера. Эта ссылка на Википедию описывает процесс и предоставляет ссылки на бесплатные дизассемблеры. Конечно, поскольку вы говорите, что не понимаете язык ассемблера, это может быть не очень информативно - что именно вы пытаетесь сделать здесь?
Чтобы получить представление, установите точку останова для некоторого интересного кода, а затем перейдите в окно ЦП. .
Если вас интересует больше, проще скомпилировать короткие фрагменты с помощью Free Pascal с помощью параметра -al.
FPC позволяет выводить сгенерированный ассемблер во множестве форматов ассемблера (TASM, MASM, GAS) используя параметр -A, и вы можете иметь исходный код паскаля, чередующийся в комментариях (и более) для легкой перекрестной ссылки.
Поскольку это ассемблер, сгенерированный компилятором, в отличие от ассемблера из дизассемблированного .exe, он более символичен и проще следовать.
Знакомство с сборкой низкого уровня (я имею в виду сборку низкого уровня, а не «макросы» и этого быка), вероятно, необходимо. Если вы действительно хотите напрямую читать необработанный машинный код, обычно вы используете для этого шестнадцатеричный редактор. Однако, чтобы понять, что делают инструкции, большинство людей использовали бы дизассемблер, чтобы преобразовать это в соответствующие инструкции сборки. Если вы относитесь к меньшинству, желающему понимать сам машинный язык, я думаю, вам понадобятся Руководства для разработчиков по архитектурам Intel® 64 и IA-32 . Том 2 специально посвящен набору команд, который относится к вашему запросу о том, как читать сам машинный код и как с ним связана сборка.