Aiwan \ (•◡•) / _bot
да
Aiwan \ (•◡•) / _bot
WriteConsole
Aiwan \ (•◡•) / _bot
на данном этапе пока так
в длине строки проблема, она вычисляется на этапе компиляции, а в коде изза того что мы использвем маску, в тех местах выводится больше символов
Aiwan \ (•◡•) / _bot
значит надо считать длину стоки програмно до завершающего нуля
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
wsprintf возвращает как раз длину.
не в этом так в другом я накосячу
Aiwan \ (•◡•) / _bot
но вопрос с %hd %hu остается открыт
Aiwan \ (•◡•) / _bot
електр🟢нік ✙🟠рчбеч ඞ
но вопрос с %hd %hu остается открыт
u работает просто с 32 битным целым, а d с two's complement
Viktor
u работает просто с 32 битным целым, а d с two's complement
Уже второй раз прошу тебя прочитать чат дальше прежде чем писать :)
s54820
но вопрос с %hd %hu остается открыт
Ну мы же вчера все выяснили. Хочешь печатать шорты так, чтобы не обижать wsprintf — делай movzx/movsx в полноценный dword и клади в аргументы уже его.
Aiwan \ (•◡•) / _bot
Aiwan \ (•◡•) / _bot
ща поробую написать костыль
Aiwan \ (•◡•) / _bot
чтоб неуходить от макроса cinvoke и вывод был правльный
Aiwan \ (•◡•) / _bot
там просто надо занулить область памяти куда кладутся параметры, иногда там остается мусор после выполнения предыдущих функций
Aiwan \ (•◡•) / _bot
и %hu будет работать правильно
s54820
Можно считать так: wsprintf написан на Си и предназначен для Си. В Си для функций с переменным числом аргументов делаются argument promotions, превращающие в том числе и short в int. wsprintf закладывается на цитату с картинки. А у тебя в старших битах int мусор, вот и получается, что получается.
Aiwan \ (•◡•) / _bot
пора писать томашу
s54820
пора писать томашу
Он скажет, что ты сам должен передавать правильный аргумент.
s54820
Нет, тут проблема глубже. Имеет значение, что фасм кладет ворд как есть, а не делает movzx. И заодно имеет значение то, что в 32-битном коде это бы не скомпилировалось, потому что в 32-битном cinvoke явно делается pushd, перекладывая проблему на твои плечи, а вот в 64-битном cinvoke делаются mov в стек, которые вполне счастливы делать это с word.
Aiwan \ (•◡•) / _bot
так если в данных у мя 2а байта смысл мне передавать 4?
Aiwan \ (•◡•) / _bot
или вообще свою функцию писать вывода на экран
Ask
айва, а че не получается у тя?
Aiwan \ (•◡•) / _bot
айва, а че не получается у тя?
уже получилось, но а если глубже в проблему взглянуть то надо переписать макрос cinvoke в фасме чтоб он занулял область стека от мусора,куда в дальнейшем будут класться параметры, и не забывать про r-регистры.
Aiwan \ (•◡•) / _bot
или как говорили выше - использовали внутри не mov а movsx при складывании параметров в стек
s54820
или как говорили выше - использовали внутри не mov а movsx при складывании параметров в стек
А как макрос должен определить, signed short или unsigned short должен лежать в твоём аргументе? Для фасма-то всё едино.
Yura
Кстати, тут недавно наткнулся на статью, что компиляторы не такие уж и жёсткие в плане оптимизации. И что про то что на асме можно писать гораздо оптимизированнее. Что об этом думаете? Насколько высокоуровневые грамматические анализаторы реально хороши?
Aiwan \ (•◡•) / _bot
вроде
Aiwan \ (•◡•) / _bot
он разве незануляет?
он передает параметры так как в нем и заложено, а wsprintf в си расширяет параметр до 4 байт
Aiwan \ (•◡•) / _bot
... а не использует то что ему дали, 2 байта
Ask
пример кинь в личку)
🦥Alex Fails
годболт в помощь?
/godbolt #include <stdio.h> int testprintf() { int value = 15; char buf[20]; sprintf(buf, "%d", 15); }
🦥Alex Fails
хм. тут моего бота нет. Куда он делся
🦥Alex Fails
.LC0: .string "%d" _Z10testprintfv: push rbp mov rbp, rsp sub rsp, 32 mov DWORD PTR [rbp-4], 15 lea rax, [rbp-32] mov edx, 15 mov esi, OFFSET FLAT:.LC0 mov rdi, rax mov eax, 0 call sprintf nop leave ret
електр🟢нік ✙🟠рчбеч ඞ
он умеет в флаги компилятора?
🦥Alex Fails
можно научить
🦥Alex Fails
я позже этим займусь, напомните мне через две недели примерно, пожалуйста
електр🟢нік ✙🟠рчбеч ඞ
и в переключение синтаксиса
електр🟢нік ✙🟠рчбеч ඞ
ок
Иван
Всем привет, кто нить вкурсе как распаковать exe с Themida?
­
Эээ, стоп! @AlexFails групбаттлерреборн не настроенный?
🦥Alex Fails
gbdummy2_bot настроен же
Иван
Та нет, просто интересно стало, есть игруха одна под debug пишет что мол Themida обнаружила х...ню (L2phx) и вот подумал а есть ли распаковщики
🦥Alex Fails
можно пошерстить какой-н tuts4you
­
gbdummy2_bot настроен же
Я вчера тоже смотрел настройки, всё было включено. Единственное, конфиг антифлуда поправил малость.
Иван
искал, не помогло, и дампинг снять не смог
dukeBarman
Вирусню пилишь?
у них какое-то сезонное обострение :) уже не первый человек ищёт как Темиду снять
🦥Alex Fails
случаем, не от эпик геймов? тут чувак говорил (если я не ошибаюсь), что они юзают темиду
Иван
Я иногда играю в свободное время но хочется ломануть игрулю, но вот тем по избавлению от темиды так и не нашёл + там фрост
Nikolai
Я иногда играю в свободное время но хочется ломануть игрулю, но вот тем по избавлению от темиды так и не нашёл + там фрост
Этот фрост лочит игру, даже если я какой-то скрип делаю в фоне. Меня это дико бесит.
Nikolai
банально, пишешь на опенсв прогурмульку для детекта хп в игре) Как только там уровень падает - эмулируешь нажатие на одну из фок, где у тебя есть хилка. Но блин, и это лочится.
Иван
Фрост меня особо не беспокоит, мне бы игрулю от тимиды избавить
Nikolai
Что за птичий язык?
Христианская Сишечка, есть еще реализация на питоне, но я плохо знатю это)
kitsu
А бывают для 32-битных x86 процессоров расширения AVX (именно оно, не SSE)?
Nikolai
я про тот, на котором вы общаетесь
А про это. Ну я немного сленгольнуль на игровом языке. Привычка описывать игровой процесс им осталось. Извиняюсь.
k0rs4r
А бывают для 32-битных x86 процессоров расширения AVX (именно оно, не SSE)?
Думаю что нет. avx впервые появились в микроархитектуре Sandy Bridge. Sandy Bridge была представлена Intel Core * линейкой. Насколько знаю в них не было моделей с отсутствием поддержки x64
Vladimir
Даже на атомах и целеронах есть x86-64. AVX там нет
kitsu
Можно как-нибудь в gdb (ну lldb в целом тоже сойдет) показать diff для переменной для двух стейтов? e.g gdb$ p a $1 = { b = 2, c = 3, } gdb$ c $ p a $2 = { b = 3, c = 3, } gdb# diff $1 $2 - b = 2, + b = 3,
kitsu
ну, прям такая команда конечн вряд ли есть, но мб есть способы для достижения этого результата
kitsu
как я понял логгинг не очень заходит с интерактивной отладкой
Ned
народ
Ned
скиньте что-нить по gdb или lldb
Ned
я напрочь не умею отлаживаться
kitsu
скиньте что-нить по gdb или lldb
http://users.ece.utexas.edu/~adnan/gdb-refcard.pdf
kitsu
и вот это https://github.com/longld/peda
Ned
а есть вообще смысл осваивать гдб, если есть ллдб?