<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)? форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 28 Apr 2026 03:57:07 +0300</pubDate>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29282/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_WxziQxYo" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />То, что производит декомпилятор - LUA только формально. Компилятор или интерпретатор примут его и выполнят все, что в таком скрипте написано. <br />Но мало кто работает с такими скриптами. Многим они будут непонятны. Они обычно раза в два раздуты в сравнении с оригинальным скриптом, мешает обезличенность, трудности с пониманием замыканий и Upvalue. <br />Хорошо, когда есть вспомогательные вкрапления, типа имен файлов, каких-то штатных или системных функций, сообщений. Вам повезло, что Вы в целом и в некоторых деталях представляете предметную область и что &nbsp;декомпилятор не навернулся или не выдал много ошибок, как в последнем dis.txt. <br />Скорее всего, Вам придется ориентироваться на собственные силы, свою наблюдательность и сообразительность, сопоставление результатов разных декомпиляторов и общие соображения. В тяжелых случаях дойдете и до дисассемблирования (опция -dis в Luadec). <br />А LUA можно и со словарем.<br />=============<br />Это точно, я уже заметил, по нескольку раз переопределяются переменные) Передо мной стоит задача залить мою мод прошивку в данную экшн камеру, но при обновлении не прохожу проверку, попробую декомпилированную версию адаптировать чтобы получать итоговую строку, которую нужно будет занести в прошивку, надеюсь получится, еще раз спасибо за помощь. <br />
			<i>19.02.2018 23:13:52, Aleksey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29282/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29282/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 23:13:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29278/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			То, что производит декомпилятор - LUA только формально. Компилятор или интерпретатор примут его и выполнят все, что в таком скрипте написано. <br />Но мало кто работает с такими скриптами. Многим они будут непонятны. Они обычно раза в два раздуты в сравнении с оригинальным скриптом, мешает обезличенность, трудности с пониманием замыканий и Upvalue. <br />Хорошо, когда есть вспомогательные вкрапления, типа имен файлов, каких-то штатных или системных функций, сообщений. Вам повезло, что Вы в целом и в некоторых деталях представляете предметную область и что &nbsp;декомпилятор не навернулся или не выдал много ошибок, как в последнем dis.txt. <br />Скорее всего, Вам придется ориентироваться на собственные силы, свою наблюдательность и сообразительность, сопоставление результатов разных декомпиляторов и общие соображения. В тяжелых случаях дойдете и до дисассемблирования (опция -dis в Luadec). <br />А LUA можно и со словарем. &nbsp; <br />
			<i>19.02.2018 22:45:45, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29278/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29278/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 22:45:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29276/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_TX7jEPJG" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />LUA я тоже не знаю, только немного со словарем.<br /><br />Поэтому примите за гипотезу, <br />В L14_14 io.popen запускает программу sha256sum в отдельном процессе и возвращает дескриптор файла /tmp/update_sd-getsum.tmp, который можно использовать для записи данных к этой программе.<br /><br />Кусками по 4К переписывает туда файл прошивки с начала (в L21_21 перед вызовом L14_14 было seek-&quot;set&quot;), по длине, да, за минусом 32 байтов, последний может быть неполным 4К.<br />Закрывает записанный файл (что сделает sha256sum - даже не догадываюсь) и открывает его для чтения на предмет match(&quot;%x+&quot;), что получится, то и вернет в L21_21, но сначала закроет его и удалит <br />(os.remove(&quot;/tmp/update_sd-getsum.tmp&quot;)).<br /><br />Короче, поработал я немного за интерпретатор, разобраться можно, все вроде складывается. Формальные текстовые подстановки. Декомпиляцию можно поджать, сотни 2 строк будет, <br /><br />P.S. Вам надо на другой форум, здесь больше про расширение LUA для взаимодействия с биржей.<br />=============<br />Спасибо большое за участие, я тоже до этого всего докопался, удалось &quot;кастрированно&quot; запустить скрипт, и я понял что в &quot;/tmp/update_sd-getsum.tmp&quot; записывается sha256sum конкретного обрабатываемого куска по 4096 байт, а в конце, когда остаток меньше 4096 - sha256 берется от него. В итоге у нас получается листинг sha-256 чексумм в одном файле, который сперва проверяется на предмет match(&quot;%x+&quot;) - совпадение по hex, а после передается целиком в другую функцию, где с ней работают еще более дремучие функции, сначала происходит string.rep(&quot;\000&quot;, 16), а дальше вообще ужас...<br /><br />Простите, я попал на ваш форум из поиска &quot;Форум LUA&quot;, т.к. с профильными форумами по данному языку незнаком, не подскажите? <br />
			<i>19.02.2018 22:03:33, Aleksey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29276/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29276/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 22:03:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29272/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			LUA я тоже не знаю, только немного со словарем.<br /><br />Поэтому примите за гипотезу, <br />В L14_14 io.popen запускает программу sha256sum в отдельном процессе и возвращает дескриптор файла /tmp/update_sd-getsum.tmp, который можно использовать для записи данных к этой программе.<br /><br />Кусками по 4К переписывает туда файл прошивки с начала (в L21_21 перед вызовом L14_14 было seek-&quot;set&quot;), по длине, да, за минусом 32 байтов, последний может быть неполным 4К.<br />Закрывает записанный файл (что сделает sha256sum - даже не догадываюсь) и открывает его для чтения на предмет match(&quot;%x+&quot;), что получится, то и вернет в L21_21, но сначала закроет его и удалит <br />(os.remove(&quot;/tmp/update_sd-getsum.tmp&quot;)).<br /><br />Короче, поработал я немного за интерпретатор, разобраться можно, все вроде складывается. Формальные текстовые подстановки. Декомпиляцию можно поджать, сотни 2 строк будет, <br /><br />P.S. Вам надо на другой форум, здесь больше про расширение LUA для взаимодействия с биржей. &nbsp; <br />
			<i>19.02.2018 21:27:03, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29272/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29272/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 21:27:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29265/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добавил дизасемблированный файл с помощью luadec с ключом -s<br /><noindex><a href="https://aya.webhop.me/dis.txt" target="_blank" rel="nofollow">dis.txt</a></noindex> <br />
			<i>19.02.2018 17:51:26, Aleksey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29265/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29265/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 17:51:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29264/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VmhO3sl3" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Одна из возможных технологий в реинжиниринге (reverse engineering) примерно такая:<br />- находите LUADEC для LUA 5.3<br />- дисассемблируете Ваш бинарник (опция -dis), результат получается без кривизны, но он в кодах VM LUA - это эталон<br />- то, что у Вас криво получилось - это декомпиляция (декомпиляторы бывают разные, некоторые иногда даже срабатывают правильно), она пригодится &nbsp;- ее можно взять за основу для внесения правок<br />- визуально сравниваете (сопоставляете) тексты дисассемблера и декомпиляции <br />- при параллельном сравнении находите кривизну в декомпиляции, догадываетесь в чем она и вносите правки в декомпиляцию, обычно это достаточно прозрачно<br />- декомпиляцию с правками пропускаете через компилятор, получаете бинарник, его дисассемблируете и сравниваете с эталоном (можно визуально, можно программами сравнения файлов), при успехе сравнения - работаете с полученной декомпиляцией (смотрите алгоритм скрипта), при желании ее текст можно сильно подсократить очевидным сворачиванием, получите совсем компактный исходник, но придется контролировать через дисассемблирование и сравнение с эталоном &nbsp; &nbsp; &nbsp; <br />- для простых случаев большего не требуется<br />- если не справились - ищете документацию на коды-инструкции VM LUA (их десятка 4)<br />- углубляетесь и приходите в состояние просветления, даже находите возможности улучшения качества написания скриптов<br /><br />Работа в значительной степени механическая, но требует аккуратности. Процесс может оказаться и творческим, и итеративным, но здесь простая программа<br /><br />P.S. Даже если декомпилятор сразу дал правдоподобный текст, его все равно стоит проверить на совпадение с эталоном (по кодам VM LUA)<br />=============<br />Здравствуйте, спасибо за подробный ответ. Luadec необходимой версии уже был опробован, но он, к сожалению, не справляется со stripped кодом, в данном скрипте им можно вытащить только несколько функций, и это не дает лучших результатов, чем при использовании декомпиляции, т.к. вытаскиваются они с большими пропусками и ошибками. К тому же сам скрипт использует расширение luaext, расположение данного файла рядом со скриптом не дает результатов. Я даже собрал это все на ARM эмуляторе, думал проблема в совместимости архитектур, но результат не поменялся.<br /><br />С языком LUA я не знаком и создал тему, с надеждой сэкономить время и на то, что люди знающие данный язык, легко просмотрят логику и с декомпилированного кода. По факту, что я уже смог разобрать, так это то, что в функцию L14_14 поступает исходный файл прошивки за минусом 32 байта (где прописана sha256sum). Данный файл циклом repeat-until режется на блоки по 4096 байт, пока не станет равным 0, но с какой стороны, не ясно и что происходит с этими блоками дальше пока не понимаю... <br />
			<i>19.02.2018 17:13:20, Aleksey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29264/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29264/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 17:13:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29262/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Одна из возможных технологий в реинжиниринге (reverse engineering) примерно такая:<br />- находите LUADEC для LUA 5.3<br />- дисассемблируете Ваш бинарник (опция -dis), результат получается без кривизны, но он в кодах VM LUA - это эталон<br />- то, что у Вас криво получилось - это декомпиляция (декомпиляторы бывают разные, некоторые иногда даже срабатывают правильно), она пригодится &nbsp;- ее можно взять за основу для внесения правок<br />- визуально сравниваете (сопоставляете) тексты дисассемблера и декомпиляции <br />- при параллельном сравнении находите кривизну в декомпиляции, догадываетесь в чем она и вносите правки в декомпиляцию, обычно это достаточно прозрачно<br />- декомпиляцию с правками пропускаете через компилятор, получаете бинарник, его дисассемблируете и сравниваете с эталоном (можно визуально, можно программами сравнения файлов), при успехе сравнения - работаете с полученной декомпиляцией (смотрите алгоритм скрипта), при желании ее текст можно сильно подсократить очевидным сворачиванием, получите совсем компактный исходник, но придется контролировать через дисассемблирование и сравнение с эталоном &nbsp; &nbsp; &nbsp; <br />- для простых случаев большего не требуется<br />- если не справились - ищете документацию на коды-инструкции VM LUA (их десятка 4)<br />- углубляетесь и приходите в состояние просветления, даже находите возможности улучшения качества написания скриптов<br /><br />Работа в значительной степени механическая, но требует аккуратности. Процесс может оказаться и творческим, и итеративным, но здесь простая программа<br /><br />P.S. Даже если декомпилятор сразу дал правдоподобный текст, его все равно стоит проверить на совпадение с эталоном (по кодам VM LUA) <br />
			<i>19.02.2018 16:44:34, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29262/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29262/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 16:44:34 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29246/topic3406/">Как высчитывается sha256sum при обновлении прошивки YI Lite action camera (LUA дизасемблинг)?</a></b> <i>Помогите разобраться со скриптом обновления прошивки</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Устройство или ОС, прошивка: YI Lite Action Camera, Linux, ARM<br /><br />Прошу помощи в дизасемблинге скрипта написанного на LUA и понимании алгоритма расчета hash-суммы. Сама хэш-сумма представляет собой SHA-256 и прописывается в последние 32 байта самого файла прошивки, но она не соответствует sha256sum всего файла, а также файла за вычетом последних 32 байт. Рассчитывается как-то по хитрому. Ниже привожу скрипт обновления, в котором это все и происходит и криво-дизасемблированный файл.<br /><br />1) Исходник <noindex><a href="https://aya.webhop.me/update_sd.lua" target="_blank" rel="nofollow">update_sd.lua</a></noindex> (LUA, версия 5.3)<br />2) Мной криво-дизасемблированный файл (<noindex><a href="https://aya.webhop.me/update_sd.lua.txt" target="_blank" rel="nofollow">update_sd.lua.txt</a></noindex>) <br />
			<i>19.02.2018 11:24:01, Aleksey.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29246/topic3406/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29246/topic3406/</guid>
			<pubDate>Mon, 19 Feb 2018 11:24:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
