Сейчас на форуме: _MBK_ (+7 невидимых) |
eXeL@B —› Основной форум —› Inqsoft Sign 0f Misery глюк проераммы или я туплю |
Посл.ответ | Сообщение |
|
Создано: 20 октября 2010 22:19 · Личное сообщение · #1 Подскажите, может кто сталкивался с подобным. В версии 2.7(тоже-самое и в ранних версиях) нужно вычесть из четырех байтного 004029f0 четырех байтное 0137e204, если произвести вычитание в калькуляторе, то ответ FF0847EC. В программе команда вычитания блока двоичных данных отсутствует, поэтому выполняю следующие команды: перевожу вышеуказанные блоки в десятичную систему счисления произвожу вычитание перевожу результат в блок двоичных данных В результате FE0847EC, соответственно сравнивая ответ с калькулятором- разница на 01000000 (в калькуляторе два старших байта FF, а в программе FE). Что я делаю не так и как можно решить данную проблему?? |
|
Создано: 20 октября 2010 22:23 · Личное сообщение · #2 |
|
Создано: 20 октября 2010 22:35 · Личное сообщение · #3 |
|
Создано: 20 октября 2010 22:44 · Личное сообщение · #4 |
|
Создано: 20 октября 2010 22:45 · Личное сообщение · #5 |
|
Создано: 20 октября 2010 22:49 · Личное сообщение · #6 |
|
Создано: 20 октября 2010 22:54 · Личное сообщение · #7 |
|
Создано: 20 октября 2010 23:15 · Личное сообщение · #8 reversecode не надо писать ересь. Меня интересует как решить проблемму не переписывая 5 тыс строк. В сом есть масса глюков и ограничений, но их благополучно обхожу, а в данной ситуации значения динамически меняются и немогу указать явное значение 014029f0 дабы обойти данную проблему. Меня интересует решение вопроса и совет, а не глупые бесмысленные посты. |
|
Создано: 20 октября 2010 23:32 · Поправил: PE_Kill · Личное сообщение · #9 Явно баг в том, что s0m не умеет вычитать по модулю. Надо подумать как обойти. Подумал. Попробуй такой вариант: Переводишь всё в десятичную систему. Отнимаешь от числа 0137e204 число 004029f0. Отнимаешь от 0 то, что получилось выше. Переводишь результат в блок двоичных данных. ----- Yann Tiersen best and do not fuck |
|
Создано: 20 октября 2010 23:37 · Личное сообщение · #10 vlad312131 ересь несете вы с самого начала еще в топике темы или я туплю если уверены что глюк программы нужно с того и начинать - программа глючит как исправить а вы начинаете свои рассуждения кто из трех, программа, калькулятор или вы - глючит я вам и предложил, пересчитат на бумаге в ручную - что бы точно быть увереным кто их вас троих не голючит int для начала я пытаюсь разобратся что хочет ТС телепатическими способностями для угадывания желания - я не обладаю |
|
Создано: 20 октября 2010 23:44 · Личное сообщение · #11 |
|
Создано: 20 октября 2010 23:50 · Личное сообщение · #12 |
|
Создано: 21 октября 2010 00:01 · Личное сообщение · #13 reversecode я нерассуждал кто из трех программ глючит. Я интересовался что в программе я делаю нетак (например неправильно использую команды прграммы , учитывая ее ограничения) А начинать топик с уверенности, что глючит программа- слишком самонадеяно, я привык искать проблему в правильном использование функцирнала проги а пото грешить на нее. Фраза "или я туплю " относилась к возможному моему непониманию реализации и использования комманд программы. Вам лучше не отвечать на вопроссы, так-как у вас отсутсвует элементарная логика и завышенна самооценка. PE-Kill, BoRoV спасибо попробую, но значения динамичны и зачастую разица не 01000000 а например 00000100 или 00100000. |
|
Создано: 21 октября 2010 00:06 · Личное сообщение · #14 |
|
Создано: 21 октября 2010 01:24 · Поправил: vlad312131 · Личное сообщение · #15 PE-Kill Подумал. Попробуй такой вариант: Переводишь всё в десятичную систему. Отнимаешь от числа 0137e204 число 004029f0. Отнимаешь от 0 то, что получилось выше. Переводишь результат в блок двоичных данных. неподходит при вычетании чисел получаем E7B814 должно F7B814 Переводишь всё в десятичную систему. Отнимаешь от числа 4294967295 число 0137e204 (<-в десятичной только системе) Отнимаешь от полученного числа 004029f0 (<-в десятичной только системе) Прибавляешь единичку Переводишь результат в блок двоичных данных. неподходит BoRoV а чо не сделать так? Записать целое число в переменную 0 4205040 Записать целое число в переменную 1 20439556 Вычесть вторую переменную из первой 0 1 может я что-то упустил, но в первом посте этот метод и использован, только я не указываю явное значение в десятичном, потому, как получаю значение в шестнадцетиричном формате и перевожу в десятичный- неподходит как мне кажется в случае если одно из чисел равно или больше 01000000(16) то сом к старшему байту вычетаемому большему чем 0 прибавляет 1 пример 01100000(16) вычетаем 00100000(16) в результате должно быть 01000000(16) а получится 0F00000(16) так-как вычтется 00200000(16) в итоге у меня на примере 4029f0-137E204- сом вычетает 237E204, вот и получаем старший байт FE вместо FF, если вычетать 137E204 - 4029f0 - сом вычитает 5029f0, также получаем старший байт E7 вместо F7 Как это обойти?(кажется никак?) |
|
Создано: 21 октября 2010 03:34 · Поправил: PE_Kill · Личное сообщение · #16 |
|
Создано: 21 октября 2010 08:34 · Личное сообщение · #17 vlad312131 vlad312131 пишет: 004029f0 четырех байтное 0137e204 Про то что число получается отрицательное надеюсь не забыл? при получении отрицательного числа срабатывает флаг СF, vlad312131 пишет: неподходит при вычетании чисел получаем E7B814 должно F7B814 потом добавь комманду not E7B814 inc E7B814 ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 21 октября 2010 10:04 · Личное сообщение · #18 |
|
Создано: 21 октября 2010 12:09 · Поправил: SWR · Личное сообщение · #19 |
|
Создано: 21 октября 2010 12:10 · Личное сообщение · #20 сом не работает с командами асма, А проверить число средствами сома - проблимотично в следствии ограничений сома, я и так часть переписал на асме, а если я вычисления адреса jmp буду переписывать на асм то тогда и все остальное стоит переписать и вообще сом ненужен. Хочется решить проблему с спомощи сом. |
|
Создано: 21 октября 2010 12:14 · Личное сообщение · #21 |
|
Создано: 21 октября 2010 13:39 · Поправил: ClockMan · Личное сообщение · #22 |
|
Создано: 21 октября 2010 13:44 · Личное сообщение · #23 |
|
Создано: 21 октября 2010 17:23 · Личное сообщение · #24 Ещё можно попробовать ----- AutoIt |
|
Создано: 21 октября 2010 22:16 · Личное сообщение · #25 Спасибо за советы. Neo Sign 0f Misery- действительно обладает мощным по сравнению с сом функционалом и постоянно обновляется (последняя от 12.6.2010), но конвертора из старой версии в нее нет. В предыдущих версиях neo небыло функций записи по адресу динамическе меняющемуся, а в соме с помощью трех команд реализуемо, именно этим и был обусловлен выбор сом вместо neo, а теперь переписывать все на нео или куда еще -трудоемко(4 скрипта по 5-6 тыс строк и несколько тысяч строк асма напрямую заточенные под особенности сом) AutoIt - не пишет в память выбранного прцесса, не читает и в ней не возможно вычеслять адреса переходов, соответственно сделать инжект кода в процесс невозможно.( а может я просто незнаю? поправте если не прав) |
|
Создано: 22 октября 2010 07:46 · Личное сообщение · #26 Многое, что не умеет автоит изначально реализуется с помощю UDF (User Defined Function) Для памяти существует Но раз уже столько написано на S0M, геморно всё переписывать. ----- AutoIt |
eXeL@B —› Основной форум —› Inqsoft Sign 0f Misery глюк проераммы или я туплю |