<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922808</guid>
        <pubDate>Sat, 24 May 2025 14:16:17 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922808</link>
        <description><![CDATA[GAGARIN: Да это понятно всё. Я подумал, что это в AMD64 упразднили, ибо не видел, чтобы это использовалось.]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922806</guid>
        <pubDate>Sat, 24 May 2025 13:46:08 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922806</link>
        <description><![CDATA[macomics: Ну можете так же еще заметить, что после enter значение в rbp указывает на адрес в стеке где и лежит предыдущее его же значение.<br>
Обратной командой для <strong class='tag-b'>enter</strong> является команда <strong class='tag-b'>leave</strong> эквивалентная последовательности<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">mov rsp, rbp</div><div class="code_line">pop rbp</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>macomics</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922805</guid>
        <pubDate>Sat, 24 May 2025 13:27:43 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922805</link>
        <description><![CDATA[GAGARIN: Да? Ну да бог с ним, с этим rbp)]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922803</guid>
        <pubDate>Sat, 24 May 2025 13:02:21 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922803</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922801'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GAGARIN &#064; <time class="tag-quote__quoted-time" datetime="2025-05-24T12:11:37+00:00">24.05.25, 12:11</time></span><div class='quote '>И да, в X64, enter 32, 0 не помещает rbp в стек. Наверное поэтому эта инструкция и не используется, т.к. проще sub rsp сразу выделить сколько нужно.</div></div><br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">macomics@home-kde ~/testDir/testEnterPushRBP $ nano main.asm</div><div class="code_line">macomics@home-kde ~/testDir/testEnterPushRBP $ cat main.asm</div><div class="code_line">format ELF64 executable 3</div><div class="code_line">segment executable</div><div class="code_line">entry $</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp; rbp, $FEDCBA9876543210</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;enter 32, 0</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp;edx, mess.len</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;lea &nbsp;rsi, [mess]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;push 1</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;pop &nbsp;rdi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp;eax, edi</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;syscall</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;mov &nbsp;eax, 60</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;xor &nbsp;dil, dil</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;syscall</div><div class="code_line">&nbsp;</div><div class="code_line">mess db &#39;Wellcome text!&#39;, 0xa</div><div class="code_line">.len = $ - mess</div><div class="code_line">macomics@home-kde ~/testDir/testEnterPushRBP $ fasm main.asm</div><div class="code_line">flat assembler &nbsp;version 1.73.32 &nbsp;(16384 kilobytes memory, x64)</div><div class="code_line">2 passes, 178 bytes.</div><div class="code_line">macomics@home-kde ~/testDir/testEnterPushRBP $ gdb -q ./main</div><div class="code_line">Reading symbols from ./main...</div><div class="code_line">(No debugging symbols found in ./main)</div><div class="code_line">(gdb) define showstack</div><div class="code_line">Type commands for definition of &quot;showstack&quot;.</div><div class="code_line">End with a line saying just &quot;end&quot;.</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x00, *(unsigned long long *)($rsp+0x00)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x08, *(unsigned long long *)($rsp+0x08)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x10, *(unsigned long long *)($rsp+0x10)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x18, *(unsigned long long *)($rsp+0x18)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x20, *(unsigned long long *)($rsp+0x20)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x28, *(unsigned long long *)($rsp+0x28)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x30, *(unsigned long long *)($rsp+0x30)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x38, *(unsigned long long *)($rsp+0x38)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x40, *(unsigned long long *)($rsp+0x40)</div><div class="code_line">&#62;printf &quot;0x%016lX &nbsp;0x%016lX\n&quot;, $rsp+0x48, *(unsigned long long *)($rsp+0x48)</div><div class="code_line">&#62;end</div><div class="code_line">(gdb) define showcpu</div><div class="code_line">Type commands for definition of &quot;showcpu&quot;.</div><div class="code_line">End with a line saying just &quot;end&quot;.</div><div class="code_line">&#62;x /5i $pc</div><div class="code_line">&#62;info registers </div><div class="code_line">&#62;showstack</div><div class="code_line">&#62;end</div><div class="code_line">(gdb) define stepcmd</div><div class="code_line">Type commands for definition of &quot;stepcmd&quot;.</div><div class="code_line">End with a line saying just &quot;end&quot;.</div><div class="code_line">&#62;nexti</div><div class="code_line">&#62;showcpu</div><div class="code_line">&#62;end</div><div class="code_line">(gdb) shell readelf -h ./main</div><div class="code_line">Заголовок ELF:</div><div class="code_line">&nbsp;&nbsp;Magic: &nbsp; 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 </div><div class="code_line">&nbsp;&nbsp;Класс: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ELF64</div><div class="code_line">&nbsp;&nbsp;Данные: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;дополнение до 2, от младшего к старшему</div><div class="code_line">&nbsp;&nbsp;Version: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 (current)</div><div class="code_line">&nbsp;&nbsp;OS/ABI: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UNIX - GNU</div><div class="code_line">&nbsp;&nbsp;Версия ABI: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0</div><div class="code_line">&nbsp;&nbsp;Тип: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EXEC (Исполняемый файл)</div><div class="code_line">&nbsp;&nbsp;Машина: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Advanced Micro Devices X86-64</div><div class="code_line">&nbsp;&nbsp;Версия: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x1</div><div class="code_line">&nbsp;&nbsp;Адрес точки входа: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x400078</div><div class="code_line">&nbsp;&nbsp;Начало заголовков программы: &nbsp; &nbsp; &nbsp; 64 (байт в файле)</div><div class="code_line">&nbsp;&nbsp;Начало заголовков раздела: &nbsp; &nbsp; &nbsp; &nbsp; 0 (байт в файле)</div><div class="code_line">&nbsp;&nbsp;Флаги: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0</div><div class="code_line">&nbsp;&nbsp;Size of this header: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 64 (bytes)</div><div class="code_line">&nbsp;&nbsp;Size of program headers: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 56 (bytes)</div><div class="code_line">&nbsp;&nbsp;Number of program headers: &nbsp; &nbsp; &nbsp; &nbsp; 1</div><div class="code_line">&nbsp;&nbsp;Size of section headers: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 64 (bytes)</div><div class="code_line">&nbsp;&nbsp;Number of section headers: &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">&nbsp;&nbsp;Section header string table index: 0</div><div class="code_line">(gdb) break *0x400078</div><div class="code_line">Breakpoint 1 at 0x400078</div><div class="code_line">(gdb) run</div><div class="code_line">Starting program: /home/macomics/testDir/testEnterPushRBP/main </div><div class="code_line">&nbsp;</div><div class="code_line">Breakpoint 1, 0x0000000000400078 in ?? ()</div><div class="code_line">(gdb) showcpu</div><div class="code_line">=&#62; 0x400078: &nbsp; &nbsp;movabs rbp,0xfedcba9876543210</div><div class="code_line">&nbsp;&nbsp; 0x400082: &nbsp; &nbsp;enter &nbsp;0x20,0x0</div><div class="code_line">&nbsp;&nbsp; 0x400086: &nbsp; &nbsp;mov &nbsp; &nbsp;edx,0xf</div><div class="code_line">&nbsp;&nbsp; 0x40008b: &nbsp; &nbsp;lea &nbsp; &nbsp;rsi,[rip+0x11] &nbsp; &nbsp; &nbsp; &nbsp;# 0x4000a3</div><div class="code_line">&nbsp;&nbsp; 0x400092: &nbsp; &nbsp;push &nbsp; 0x1</div><div class="code_line">rax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rcx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rsi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0</div><div class="code_line">rsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x7fffffffd560 &nbsp; &nbsp; &nbsp;0x7fffffffd560</div><div class="code_line">r8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r11 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r13 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r14 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r15 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400078 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400078</div><div class="code_line">eflags &nbsp; &nbsp; &nbsp; &nbsp; 0x202 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ IF ]</div><div class="code_line">cs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x33 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;51</div><div class="code_line">ss &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x2b &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;43</div><div class="code_line">ds &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">es &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">0x00007FFFFFFFD560 &nbsp;0x0000000000000001</div><div class="code_line">0x00007FFFFFFFD568 &nbsp;0x00007FFFFFFFD9CC</div><div class="code_line">0x00007FFFFFFFD570 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD578 &nbsp;0x00007FFFFFFFD9F9</div><div class="code_line">0x00007FFFFFFFD580 &nbsp;0x00007FFFFFFFDA09</div><div class="code_line">0x00007FFFFFFFD588 &nbsp;0x00007FFFFFFFDA5F</div><div class="code_line">0x00007FFFFFFFD590 &nbsp;0x00007FFFFFFFDA71</div><div class="code_line">0x00007FFFFFFFD598 &nbsp;0x00007FFFFFFFDA85</div><div class="code_line">0x00007FFFFFFFD5A0 &nbsp;0x00007FFFFFFFDAC1</div><div class="code_line">0x00007FFFFFFFD5A8 &nbsp;0x00007FFFFFFFDAD6</div><div class="code_line">(gdb) stepcmd</div><div class="code_line">0x0000000000400082 in ?? ()</div><div class="code_line">=&#62; 0x400082: &nbsp; &nbsp;enter &nbsp;0x20,0x0</div><div class="code_line">&nbsp;&nbsp; 0x400086: &nbsp; &nbsp;mov &nbsp; &nbsp;edx,0xf</div><div class="code_line">&nbsp;&nbsp; 0x40008b: &nbsp; &nbsp;lea &nbsp; &nbsp;rsi,[rip+0x11] &nbsp; &nbsp; &nbsp; &nbsp;# 0x4000a3</div><div class="code_line">&nbsp;&nbsp; 0x400092: &nbsp; &nbsp;push &nbsp; 0x1</div><div class="code_line">&nbsp;&nbsp; 0x400094: &nbsp; &nbsp;pop &nbsp; &nbsp;rdi</div><div class="code_line">rax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rcx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rsi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0xfedcba9876543210 &nbsp;0xfedcba9876543210</div><div class="code_line">rsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x7fffffffd560 &nbsp; &nbsp; &nbsp;0x7fffffffd560</div><div class="code_line">r8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r11 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r13 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r14 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r15 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400082 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400082</div><div class="code_line">eflags &nbsp; &nbsp; &nbsp; &nbsp; 0x202 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ IF ]</div><div class="code_line">cs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x33 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;51</div><div class="code_line">ss &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x2b &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;43</div><div class="code_line">ds &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">es &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">0x00007FFFFFFFD560 &nbsp;0x0000000000000001</div><div class="code_line">0x00007FFFFFFFD568 &nbsp;0x00007FFFFFFFD9CC</div><div class="code_line">0x00007FFFFFFFD570 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD578 &nbsp;0x00007FFFFFFFD9F9</div><div class="code_line">0x00007FFFFFFFD580 &nbsp;0x00007FFFFFFFDA09</div><div class="code_line">0x00007FFFFFFFD588 &nbsp;0x00007FFFFFFFDA5F</div><div class="code_line">0x00007FFFFFFFD590 &nbsp;0x00007FFFFFFFDA71</div><div class="code_line">0x00007FFFFFFFD598 &nbsp;0x00007FFFFFFFDA85</div><div class="code_line">0x00007FFFFFFFD5A0 &nbsp;0x00007FFFFFFFDAC1</div><div class="code_line">0x00007FFFFFFFD5A8 &nbsp;0x00007FFFFFFFDAD6</div><div class="code_line">(gdb) stepcmd</div><div class="code_line">0x0000000000400086 in ?? ()</div><div class="code_line">=&#62; 0x400086: &nbsp; &nbsp;mov &nbsp; &nbsp;edx,0xf</div><div class="code_line">&nbsp;&nbsp; 0x40008b: &nbsp; &nbsp;lea &nbsp; &nbsp;rsi,[rip+0x11] &nbsp; &nbsp; &nbsp; &nbsp;# 0x4000a3</div><div class="code_line">&nbsp;&nbsp; 0x400092: &nbsp; &nbsp;push &nbsp; 0x1</div><div class="code_line">&nbsp;&nbsp; 0x400094: &nbsp; &nbsp;pop &nbsp; &nbsp;rdi</div><div class="code_line">&nbsp;&nbsp; 0x400095: &nbsp; &nbsp;mov &nbsp; &nbsp;eax,edi</div><div class="code_line">rax &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rcx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rsi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rdi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rbp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x7fffffffd558 &nbsp; &nbsp; &nbsp;0x7fffffffd558</div><div class="code_line">rsp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x7fffffffd538 &nbsp; &nbsp; &nbsp;0x7fffffffd538</div><div class="code_line">r8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r9 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r10 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r11 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r12 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r13 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r14 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">r15 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">rip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400086 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0x400086</div><div class="code_line">eflags &nbsp; &nbsp; &nbsp; &nbsp; 0x202 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ IF ]</div><div class="code_line">cs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x33 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;51</div><div class="code_line">ss &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x2b &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;43</div><div class="code_line">ds &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">es &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">k7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">fs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">gs_base &nbsp; &nbsp; &nbsp; &nbsp;0x0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0</div><div class="code_line">0x00007FFFFFFFD538 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD540 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD548 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD550 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD558 &nbsp;0xFEDCBA9876543210</div><div class="code_line">0x00007FFFFFFFD560 &nbsp;0x0000000000000001</div><div class="code_line">0x00007FFFFFFFD568 &nbsp;0x00007FFFFFFFD9CC</div><div class="code_line">0x00007FFFFFFFD570 &nbsp;0x0000000000000000</div><div class="code_line">0x00007FFFFFFFD578 &nbsp;0x00007FFFFFFFD9F9</div><div class="code_line">0x00007FFFFFFFD580 &nbsp;0x00007FFFFFFFDA09</div><div class="code_line">(gdb) continue</div><div class="code_line">Continuing.</div><div class="code_line">[Inferior 1 (process 30131) exited normally]</div><div class="code_line">(gdb) q</div></ol></div></div></div></div></div></div>Вот я вам наглядно показываю как действует enter. Как можете видеть сначала я распечатал состояние регистров и стека до выполнения команды<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">mov rbp, 0xFEDCBA9876543210</div></ol></div></div></div></div><br>
И там мы видим 0 в rbp<br>
После выполнения команды <strong class='tag-b'>mov</strong> как и ожидалось в rbp появляется 0xFEDCBA9876543210<br>
Ну и после команды enter 32, 0 мы видим, что значение rbp изменилось и стало равно rsp - 32.<br>
И в стеке у нас появилось место для 32 байт плюс то самое значение из rbp (0xFEDCBA9876543210). Итого в стек положили 40 байт, из которых 8 это старое значение rbp до выполнения команды enter]]></description>
        <author>macomics</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922801</guid>
        <pubDate>Sat, 24 May 2025 12:11:37 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922801</link>
        <description><![CDATA[GAGARIN: Ну так никто не делает. Во всяком случае MS компилер делает так:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo proc</div><div class="code_line">&nbsp;&nbsp; sub rsp, 28h ; (+ сколько там нужно на локальные переменные)</div><div class="code_line">&nbsp;&nbsp; ...</div></ol></div></div></div></div><br>
<br>
И да, в X64, <strong class='tag-b'>enter 32, 0</strong> не помещает <strong class='tag-b'>rbp </strong>в стек. Наверное поэтому эта инструкция и не используется, т.к. проще <strong class='tag-b'>sub rsp</strong> сразу выделить сколько нужно. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-05-24T12:13:20+00:00">24.05.25, 12:13</time></span></span><br>
Сделал так.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;.CODE</div><div class="code_line">&nbsp;</div><div class="code_line">extrn &nbsp; ExitProcess:proc</div><div class="code_line">extrn &nbsp; MessageBoxW:proc</div><div class="code_line">extrn &nbsp; MessageBeep:proc</div><div class="code_line">&nbsp;</div><div class="code_line">header &nbsp;dw &nbsp;&#39;A&#39;, &#39;M&#39;, &#39;D&#39;, &#39;6&#39;, &#39;4&#39;, 0</div><div class="code_line">message dw &nbsp;&#39;H&#39;, &#39;e&#39;, &#39;l&#39;, &#39;l&#39;, &#39;o&#39;, &#39; &#39;, &#39;W&#39;, &#39;o&#39;, &#39;r&#39;, &#39;l&#39;, &#39;d&#39;, &#39;!&#39;, 0</div><div class="code_line">&nbsp;</div><div class="code_line">beep &nbsp; &nbsp; &nbsp; &nbsp;proc</div><div class="code_line">&nbsp;&nbsp; &nbsp;sub rsp, 28h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor rcx, rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;dec rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;MessageBeep</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;add rsp, 28h</div><div class="code_line">&nbsp;&nbsp; &nbsp;ret</div><div class="code_line">beep &nbsp; &nbsp; &nbsp; &nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">EntryPoint &nbsp;proc</div><div class="code_line">&nbsp;&nbsp; &nbsp;sub rsp, 28h</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;beep</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor rcx, rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea rdx, message</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea r8, header</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor r9, r9</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;MessageBoxW</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor rcx, rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;ExitProcess</div><div class="code_line">EntryPoint &nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;END</div></ol></div></div></div></div><br>
<br>
Нраицца&#33;]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922798</guid>
        <pubDate>Sat, 24 May 2025 11:30:11 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922798</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922794'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GAGARIN &#064; <time class="tag-quote__quoted-time" datetime="2025-05-24T10:41:47+00:00">24.05.25, 10:41</time></span><div class='quote '>rbp там не пушается. 8 байт - это адрес возврата, который, собственно, и сбивает 16-байтное выравнивание стека.</div></div><br>
rbp запушит enter. <strong class='tag-b'>enter N,0</strong> эквивалентна последовательности<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">; enter N, 0</div><div class="code_line">push rbp ; этот push rbp вместе с push rip как часть call label как раз и дадут выравнивание стека (8+8)</div><div class="code_line">mov rbp, rsp</div><div class="code_line">sub rsp, N</div></ol></div></div></div></div>]]></description>
        <author>macomics</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922794</guid>
        <pubDate>Sat, 24 May 2025 10:41:47 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922794</link>
        <description><![CDATA[GAGARIN: Всё понятно. Вопрос закрыт. Большое спасибо. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-05-24T10:43:12+00:00">24.05.25, 10:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922792'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-05-24T09:27:35+00:00">24.05.25, 09:27</time></span><div class='quote '>028h этот как раз 32 байта + 8 байт на push rbp, которую положит enter 32, 0</div></div><br>
rbp там не пушается. 8 байт - это адрес возврата, который, собственно, и сбивает 16-байтное выравнивание стека.]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922792</guid>
        <pubDate>Sat, 24 May 2025 09:27:35 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922792</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922786'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GAGARIN &#064; <time class="tag-quote__quoted-time" datetime="2025-05-23T23:29:01+00:00">23.05.25, 23:29</time></span><div class='quote '>Но не понял, зачем выделять в стеке 32 байта для вызовов MessageBoxW и ExitProcess. Почём я знаю, сколько им нужно выделить? Разве они сами не должны этим заниматься?<br>
Поэтому я попробовал инструкцию enter 0, 0 - все нормально.</div></div><br>
Прям <a class='tag-url' href='https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170#calling-convention-defaults' target='_blank'>самый</a> первый же абзац. Первые 4 параметра передаются через регистры, но под них все равно надо выделять место в стеке. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-05-24T09:28:54+00:00">24.05.25, 09:28</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922786'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>GAGARIN &#064; <time class="tag-quote__quoted-time" datetime="2025-05-23T23:29:01+00:00">23.05.25, 23:29</time></span><div class='quote '>Ну и дальше пошагал - как правило первая инструкция sub rsp, минимум 28h</div></div><br>
028h этот как раз 32 байта + 8 байт на push rbp, которую положит enter 32, 0]]></description>
        <author>macomics</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922786</guid>
        <pubDate>Fri, 23 May 2025 23:29:01 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922786</link>
        <description><![CDATA[GAGARIN: Ух ты&#33; Заработало&#33; Спасибо.<br>
<br>
Но не понял, зачем выделять в стеке 32 байта для вызовов MessageBoxW и ExitProcess. Почём я знаю, сколько им нужно выделить? Разве они сами не должны этим заниматься?<br>
Поэтому я попробовал инструкцию <strong class='tag-b'>enter 0, 0</strong> - все нормально.<br>
<br>
Т.е. можно быть уверенным, что инструкция enter однозначно выровняет стек на 16 байт? Заглянул что C-Runtime делает<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">extern &quot;C&quot; DWORD wWinMainCRTStartup(LPVOID)</div><div class="code_line">{</div><div class="code_line">00007FF6AA37A6F0 &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; qword ptr [rsp+8],rcx &nbsp;</div><div class="code_line">00007FF6AA37A6F5 &nbsp;sub &nbsp; &nbsp; &nbsp; &nbsp; rsp,28h &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return __scrt_common_main();</div><div class="code_line">00007FF6AA37A6F9 &nbsp;call &nbsp; &nbsp; &nbsp; &nbsp;__scrt_common_main (07FF6AA37A450h) &nbsp;</div><div class="code_line">}</div><div class="code_line">00007FF6AA37A6FE &nbsp;add &nbsp; &nbsp; &nbsp; &nbsp; rsp,28h &nbsp;</div><div class="code_line">00007FF6AA37A702 &nbsp;ret</div></ol></div></div></div></div><br>
<br>
Ну и дальше пошагал - как правило первая инструкция <strong class='tag-b'>sub rsp, минимум 28h</strong><br>
<br>
Или я не прав и таки надо 32 байта для чего-то выделять?<br>
<br>
<br>
З.Ы. отладчик я использую Visual Studio. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-05-23T23:40:13+00:00">23.05.25, 23:40</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=461428&view=findpost&p=3922785'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2025-05-23T22:55:27+00:00">23.05.25, 22:55</time></span><div class='quote '>Как минимум нужно убедиться, что стек выровнен на 16 байт. Добавь в начало<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">and &nbsp; &nbsp; rsp, not 0Fh</div></ol></div></div></div></div>Вообще, у x64 API немало отличий от x86 API</div></div><br>
Ага, когда вызывается функция, выравнивание сбивается, ибо в стек помещается как минимум 8 байт адреса возврата. В общем с выравниванием понятно. Вопрос только про 32 байта - нужны ли они?]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922785</guid>
        <pubDate>Fri, 23 May 2025 22:55:27 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922785</link>
        <description><![CDATA[Qraizer: Как минимум нужно убедиться, что стек выровнен на 16 байт. Добавь в начало<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">and &nbsp; &nbsp; rsp, not 0Fh</div></ol></div></div></div></div>Вообще, у x64 API немало отличий от x86 API]]></description>
        <author>Qraizer</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922784</guid>
        <pubDate>Fri, 23 May 2025 22:19:22 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922784</link>
        <description><![CDATA[macomics: 1) Надо выделять в стеке место для параметров MessageBoxW<br>
2) Стек необходимо выравнивать на 16 байт<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">EntryPoint:</div><div class="code_line">&nbsp;&nbsp; &nbsp;enter 32, &nbsp;0 ; Выравнивает стек запихивая туда rbp и выделяет 32 байта для вызовов MessageBoxW и ExitProcess</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor &nbsp; r9, &nbsp;r9</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea &nbsp; r8, &nbsp;header</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea &nbsp; rdx, message</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor &nbsp; ecx, ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp;MessageBoxW</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor &nbsp; ecx, ecx</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp;ExitProcess</div></ol></div></div></div></div><br>
<br>
ADD: чтобы не спрашивать про такие ошибки надо использовать отладчик. Скажем <a class='tag-url' href='https://x64dbg.com/' target='_blank'>x64dbg</a>]]></description>
        <author>macomics</author>
        <category>Assembler</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922783</guid>
        <pubDate>Fri, 23 May 2025 22:12:30 +0000</pubDate>
        <title>Валится MessageBoxW</title>
        <link>https://forum.sources.ru/index.php?showtopic=461428&amp;view=findpost&amp;p=3922783</link>
        <description><![CDATA[GAGARIN: Вот такая программулька.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;.CODE</div><div class="code_line">&nbsp;</div><div class="code_line">extrn &nbsp; ExitProcess:proc</div><div class="code_line">extrn &nbsp; MessageBoxW:proc</div><div class="code_line">&nbsp;</div><div class="code_line">header &nbsp;dw &nbsp;&#39;A&#39;, &#39;M&#39;, &#39;D&#39;, &#39;6&#39;, &#39;4&#39;, 0</div><div class="code_line">message dw &nbsp;&#39;H&#39;, &#39;e&#39;, &#39;l&#39;, &#39;l&#39;, &#39;o&#39;, &#39; &#39;, &#39;W&#39;, &#39;o&#39;, &#39;r&#39;, &#39;l&#39;, &#39;d&#39;, &#39;!&#39;, 0</div><div class="code_line">&nbsp;</div><div class="code_line">EntryPoint &nbsp;proc</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor rcx, rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea rdx, message</div><div class="code_line">&nbsp;&nbsp; &nbsp;lea r8, header</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor r9, r9</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;MessageBoxW</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xor rcx, rcx</div><div class="code_line">&nbsp;&nbsp; &nbsp;call &nbsp; &nbsp;ExitProcess</div><div class="code_line">EntryPoint &nbsp;endp</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;END</div></ol></div></div></div></div><br>
<br>
И валится при вызове MessageBoxW: Exception thrown at 0x00007FFB8012971C (user32.dll) in msgbox.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.<br>
<br>
Коллстек такой:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;user32.dll!GetMessageBoxFontForDpi(unsigned int)</div><div class="code_line">&nbsp;&nbsp; &nbsp;user32.dll!SoftModalMessageBox()</div><div class="code_line">&nbsp;&nbsp; &nbsp;user32.dll!MessageBoxWorker(struct _MSGBOXDATA *)</div><div class="code_line">&nbsp;&nbsp; &nbsp;user32.dll!MessageBoxTimeoutW()</div><div class="code_line">&nbsp;&nbsp; &nbsp;user32.dll!MessageBoxW()</div><div class="code_line">&nbsp;&nbsp; &nbsp;msgbox.exe!EntryPoint() Line 16</div></ol></div></div></div></div><br>
<br>
Может надо какую-то инициализацию для USER32.DLL дополнительную делать?]]></description>
        <author>GAGARIN</author>
        <category>Assembler</category>
      </item>
	
      </channel>
      </rss>
	