<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Изменение данных в адресе процесса и их применение.]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=11289</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11289&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Изменение данных в адресе процесса и их применение.».]]></description>
		<lastBuildDate>Fri, 05 Feb 2016 15:45:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100867#p100867</link>
			<description><![CDATA[<p><strong>Alectric</strong>, cсылка, которую вы дали, мне не помогла. В том вопросе похожая проблема, но не совсем.<br />Вопрос все ещё актуален.</p>]]></description>
			<author><![CDATA[null@example.com (tuma4ok)]]></author>
			<pubDate>Fri, 05 Feb 2016 15:45:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100867#p100867</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100866#p100866</link>
			<description><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?id=7735">Работа с памятью.</a></p><p><a href="https://www.google.ru/search?newwindow=1&amp;espv=2&amp;q=site:forum.script-coding.com+write+memory&amp;spell=1&amp;sa=X&amp;ved=0ahUKEwjmi4vE9ODKAhUHnHIKHS9vDKoQBQgZKAA&amp;biw=1280&amp;bih=899">Метод поиска.</a></p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 05 Feb 2016 15:14:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100866#p100866</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100865#p100865</link>
			<description><![CDATA[<p><strong>tuma4ok</strong>, вопросы сортируются по темам для удобства поиска теми, кто сталкивается с аналогичными проблемами. Замена данных в памяти обычно интересует как раз любителей игр, так что всё логично.</p><p>Что же по сабжу, то, честно говоря, не думаю, что кто-то сможет вам помочь до тех пор, пока вы не придумаете более простой пример для вопроса, чётко демонстрирующий проблему, и не будете отсылать людей разбираться в коде в несколько тысяч строк. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 05 Feb 2016 15:13:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100865#p100865</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100863#p100863</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, но ведь суть - изменить данные в памяти процесса. Ну я и подумал что можно в этом разделе создать, ну раз вы перенесли, то я не против.</p>]]></description>
			<author><![CDATA[null@example.com (tuma4ok)]]></author>
			<pubDate>Fri, 05 Feb 2016 14:59:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100863#p100863</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100862#p100862</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, Ага. Gta <strong>s</strong>an <strong>a</strong>ndreas <strong>m</strong>ulti<strong>p</strong>layer.</p>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Fri, 05 Feb 2016 14:41:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100862#p100862</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100861#p100861</link>
			<description><![CDATA[<p><strong>tuma4ok</strong>, SAMP — это ведь игра, если я не ошибаюсь?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 05 Feb 2016 14:35:53 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100861#p100861</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=100858#p100858</link>
			<description><![CDATA[<p>Здравствуйте, столкнулся с такой проблемой. Не получается записать в адрес новое значение. Но как сказать, записать получается, но вот применить, эти изменения, не получается.<br />Что я использовал, использовал я <a href="https://github.com/SAMP-UDF/SAMP-UDF-for-AutoHotKey/blob/master/SAMP.ahk">SAMP UDF (нажмите чтобы перейти к исходному файлу).</a></p><p>И так, вот моя функция которую я пытался написать:</p><div class="codebox"><pre><code>
newFunc(id) {
    if(!checkHandles())
        return false
    
    dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
    if(ErrorLevel || dwAddress==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
    if(ErrorLevel || dwAddress==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwLocalPlayer := readDWORD(hGTA, dwAddress + 0x22)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    PlayerAnimID := readMem(hGTA, dwLocalPlayer + 4, 2) 
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return -1
    }
    
    stOnFootData1 := ReadFloat(hGTA, dwLocalPlayer + 233 + id)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return -2
    }
    
    dwFunc := dwLocalPlayer + 233 + 5
    
    VarSetCapacity(nop, 4, 0)
    NumPut(&quot;0.4&quot;, nop, 0, &quot;Float&quot;)
    NumPut(0xB9, injectData, 4, &quot;UChar&quot;)
    NumPut(dwFunc, injectData, 5, &quot;UInt&quot;)
    
    NumPut(0xE8, injectData, 9, &quot;UChar&quot;)
    offset := dwFunc - (pInjectFunc + 14)
    NumPut(offset, injectData, 10, &quot;Int&quot;)
    NumPut(0xC3, injectData, 14, &quot;UChar&quot;)
    
    writeRaw(hGTA, pInjectFunc, &amp;nop, dwLen)
    if(ErrorLevel)
        return false
    
    hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
    if(ErrorLevel)
        return false
    
    waitForSingleObject(hThread, 0xFFFFFFFF)
    closeProcess(hThread)

    return stOnFootData
}
</code></pre></div><p>Основной код записи в адрес: Вот это нужно отредактировать.<br /></p><div class="codebox"><pre><code>
dwFunc := dwLocalPlayer + 233 + 5
    
    VarSetCapacity(nop, 4, 0)
    NumPut(&quot;0.4&quot;, nop, 0, &quot;Float&quot;)
    NumPut(0xB9, injectData, 4, &quot;UChar&quot;)
    NumPut(dwFunc, injectData, 5, &quot;UInt&quot;)
    
    NumPut(0xE8, injectData, 9, &quot;UChar&quot;)
    offset := dwFunc - (pInjectFunc + 14)
    NumPut(offset, injectData, 10, &quot;Int&quot;)
    NumPut(0xC3, injectData, 14, &quot;UChar&quot;)
    
    writeRaw(hGTA, pInjectFunc, &amp;nop, dwLen)
    if(ErrorLevel)
        return false
    
    hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
    if(ErrorLevel)
        return false
    
    waitForSingleObject(hThread, 0xFFFFFFFF)
    closeProcess(hThread)
</code></pre></div><p>Структура просчитана верно и адрес со значением верный:<br /></p><div class="codebox"><pre><code>dwFunc := dwLocalPlayer + 233 + 5</code></pre></div><p>Просто не получается применить эти изменения. Может у кого-то есть идеи как это все записать, исходный код SAMP UDF приложил выше, чтобы вы видели как что работает. </p><p>Теперь о адресе:<br />Адрес содержит в себе значение от 0 до 1 и его тип FLOAT</p><p>Если Вам нужно ещё больше информации, спрашивайте, постараюсь ответить на то что знаю.</p>]]></description>
			<author><![CDATA[null@example.com (tuma4ok)]]></author>
			<pubDate>Fri, 05 Feb 2016 12:54:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=100858#p100858</guid>
		</item>
	</channel>
</rss>
