<?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=374739&amp;view=findpost&amp;p=3295837</guid>
        <pubDate>Tue, 02 Apr 2013 07:06:02 +0000</pubDate>
        <title>перехват recv</title>
        <link>https://forum.sources.ru/index.php?showtopic=374739&amp;view=findpost&amp;p=3295837</link>
        <description><![CDATA[Rouse_: Причина в процедуре SpliceLockJmp, не смотря на то что VirtualProtect выполняется успешно, атрибуты защиты иногда возвращаются обратно (из-за одновременного вызова функций из разных нитей) и инструкция lock xchg word ptr [ecx], ax выполняется с ошибкой. На этом моменте я кстати заострял внимание в статье - не внимательно читаешь.<br>
<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">function InterceptedSend(S:Cardinal;var Buf;Len:Integer;flags:integer):integer;stdcall;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TSend = function(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;_send: TSend;</div><div class="code_line">begin</div><div class="code_line">// &nbsp;SpliceLockJmp(HotPathSpliceRec[P_SEND].FuncAddr, HotPathSpliceRec[P_SEND].LockJmp);</div><div class="code_line">// &nbsp;Result := send(s,buf,len,flags);</div><div class="code_line">// &nbsp;SpliceLockJmp(HotPathSpliceRec[P_SEND].FuncAddr, LOCK_JMP_OPKODE);</div><div class="code_line">&nbsp;&nbsp;@_send := PAnsiChar(HotPathSpliceRec[P_SEND].FuncAddr) + 2;</div><div class="code_line">&nbsp;&nbsp;Result := _send(s,buf,len,flags);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function InterceptedRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TRecv = function(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;_recv: TRecv;</div><div class="code_line">begin</div><div class="code_line">// &nbsp;SpliceLockJmp(HotPathSpliceRec[P_RECV].FuncAddr, HotPathSpliceRec[P_RECV].LockJmp);</div><div class="code_line">// &nbsp;Result := recv(s, Buf, len, flags);</div><div class="code_line">// &nbsp;SpliceLockJmp(HotPathSpliceRec[P_RECV].FuncAddr, LOCK_JMP_OPKODE);</div><div class="code_line">&nbsp;&nbsp;@_recv := PAnsiChar(HotPathSpliceRec[P_RECV].FuncAddr) + 2;</div><div class="code_line">&nbsp;&nbsp;Result := _recv(s, Buf, len, flags);</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Здесь не производится снятие перехватчика, а сразу идет вызов на саму функцию.<br>
<br>
ЗЫ: а вообще хотел этот подход на вторую часть статьи оставить, не думал что кто-то наткнется :)]]></description>
        <author>Rouse_</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=374739&amp;view=findpost&amp;p=3295037</guid>
        <pubDate>Sat, 30 Mar 2013 13:56:15 +0000</pubDate>
        <title>перехват recv</title>
        <link>https://forum.sources.ru/index.php?showtopic=374739&amp;view=findpost&amp;p=3295037</link>
        <description><![CDATA[quloya: Добрый день. Пытаюсь перехватить вызов recv в своей программе из браузер IE. Но иногда происходит падение приложения. Никак не могу разобраться в чём же ошибка. Помогите пожалуйста. Проект прикрепил.<br>
<span class="b-attach" data-size="29628" data-hits="137" data-attach-id="28370" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=28370' title='Скачать файл' target='_blank'>recv.rar</a> (, : 137)
		</span>]]></description>
        <author>quloya</author>
        <category>Delphi: Система, Windows API</category>
      </item>
	
      </channel>
      </rss>
	