- PRO
Андрей
Программист .Net, C++, 1С
- Вид занятости:
- полная
- Возраст:
- 60 лет
- Город проживания:
- Днепр
- Готов работать:
- Днепр, Удаленно
Контактная информация
Соискатель указал телефон , эл. почту и адрес.
Фамилия, контакты и фото доступны только для зарегистрированных работодателей. Чтобы получить доступ к личным данным кандидатов, войдите как работодатель или зарегистрируйтесь.
Получить контакты этого кандидата можно на странице https://www.work.ua/resumes/4211824/
Опыт работы
.Net developer
с 03.2023 по 09.2023
(6 месяцев)
Devart, Дистанційно (IT)
C# (.NET) developer
с 10.2022 по наст. время
(2 года 5 месяцев)
Ulyss.Club, Дніпро (IT)
Backend development of web application (https://ulyss.club).
Разработчик
с 01.2022 по наст. время
(3 года 2 месяца)
Проект AnyHook (C++, https://github.com/kachamkin/AnyHook), Дистанційно (IT)
x64-библиотека (dll), позволяющая устанавливать произвольные Windows-хуки на вызовы произвольных функций любых модулей Windows. Хук может быть:
1)локальным, — когда целевая функция и заменяющий ее обработчик находятся в адресном пространстве одного процесса;
2)удаленным, — когда устанавливается перехват вызова целевой функции из другого процесса, отличного от процесса, в адресном пространстве которого находится обработчик;
3)глобальным, — когда устанавливается перехват вызова целевой функции всеми процессами в пределах одной сессии (вернее, всеми процессами сессии, вызывающими функцию получения оконных сообщений Windows GetMessage).
Библиотека может быть использована как управляемым (.NET Framework, .NET Core, .NET), так и неуправляемым приложением (напр., разработанным на C++); более того, допустимы любые комбинации «целевая функция -> обработчик»: native target -> managed callback, native target -> native callback, managed target -> managed callback, managed target -> managed callback.
Установка хука может производится любым из способов: передачей имени модуля и имени функции (и имени делегата для управляемого кода); передачей адреса функции в адресном пространстве целевого или устанавливающего хук процесса (для управляемого кода — адреса делегата); передачей самого экземпляра делегата для вызова из управляемого кода.
И native-, и managed- части проекта реализованы в пределах единственной dll (она содержит и экспортируемые Win32 методы и свойства, и метаданные об управляемых методах и свойствах, доступных извне).
Хук устанавливается путем замены первых четырнадцати байтов целевой функции («трамплин») инструкцией перехода по адресу функции-обработчика:
ff 25 00 00 00 00 <8 байтов адреса обработчика>. т. е. JMP <адрес обработчика>.
Для «прыжка» могут быть также использованы инструкции вида MOV RAX + JMP RAX или PUSH + RET, но использование JMP кажется предпочтительным: 1) одна инструкция вместо двух; 2) не меняется состояние системы (ни регистры процессора, ни стек).
При удалении хука «трамплин» возвращается на свое место.
Установкой свойства UseStealth = true включается “stealth”-режим: для подключения библиотеки к целевому процессу не используется функция CreateRemoteThread, поскольку ее вызов может показаться подозрительным anti-malware приложениям. Вместо этого берется любой активный поток целевого процесса, замораживается, состояние регистров и стека на этот момент сохраняется, RIP-регистр процессора заполняется адресом первой инструкции функции: 1) загружающей библиотеку во вновь созданном потоке целевого процесса; 2) возвращающей на место исходное состояние стека и регистров процессора; 3) передающей управление инструкции, перед которой поток был заморожен.
Библиотека поддерживает любое количество хуков с любым количеством целевых процессов, сохраняя информацию о них и обеспечивая корректное межпроцессное и межпоточное взаимодействие с помощью средств синхронизации: событий, мьютексов и межпроцессной общей памяти.
Разработчик
с 01.2022 по наст. время
(3 года 2 месяца)
Проект SignTool (C#, https://github.com/kachamkin/SignTool), Дистанційно (IT)
.NET 6 cryptographic utility
Attached and detached digital file signatures (CMS/PKCS#7): signing and verification.
Self-signed certificates creation: RSA and ECDSA.
AES: file encryption and decryption.
Certificate formats conversion: PFX, PEM, CRT, CER.
RSA: direct file encryption and decryption (by blocks).
ECDH keys generation.
GUID creation.
File hash computing: MD5, SHAxxx.
String conversion tool ("Text Wizard").
Cryptographic library (managed and COM-available).
Applications signing (.exe, .dll, .msi etc.)
Разработчик
с 01.2022 по наст. время
(3 года 2 месяца)
Проект DragDropRemoteHook (https://github.com/kachamkin/DragDropRemoteHook), Дистанційно (IT)
Задача: обеспечить пользователю способ прикреплять к документам «1С» файлы-вложения, представляющие собой почтовые сообщения MS Outlook целиком, или выбранные пользователем attachments. Способ должен требовать от пользователя минимального количества действий мышью и клавишами.
Очевидно, что простейшее решение — это перетаскивание сообщения или вложения мышью или импорт его в «1С» через буфер обмена (Ctrl + C / Ctrl + V). Оказалось, однако, что Outlook помещает в данные перетаскивания (или в буфер) не привычный file drop list, распознаваемый большинством приложений-приемников (в частности, «1С»), а объекты, структурированные как compound-файлы, — т. е. реализующие интерфейсы IStream & IStorage.
Задача решается внедрением в процесс Oulook хука, который:
- перехватывает вызов Windows-функций OleSetClipboard (Ctrl + C) и DoDragDrop (начало перетаскивания);
- читает содержимое compound-файла через интерфейсы IStream & IStorage;
- записывает прочитанное содержимое в физические файлы на диске (в каталог временных файлов);
- заменяет содержимое буфера или данных перетаскивания (IDataObject) на обычный file drop list, содержащий пути к файлам, записанным на диск на предыдущем этапе.
Разработчик
с 01.2022 по наст. время
(3 года 2 месяца)
Проект RunAsSvc (C++, https://github.com/kachamkin/RunAsSvc), RunAsClient (C#, https://github.com/kachamkin/RunAsClient), Дистанційно (IT)
Проект предоставляет средства удаленного управления компьютером-сервером с компьютера-клиента через TCP/IP. Серверная часть написана на C++ как служба Windows, запускаемая с максимальными локальными правами (от имени NTAuthority\LocalSystem). Клиентская часть реализована как Desktop-приложение .NET 6.
Обмен данными между клиентом и сервером полностью безопасен. На каждый запрос клиент формирует новый ключ симметричного шифрования AES 256; содержимое запроса шифруется этим ключом, сам ключ шифруется с помощью RSA-сертификата, хранящегося как ресурс клиента и сервера, и прилагается к запросу. Ответ сервера на текущий запрос клиента шифруется тем же ключом AES. Сертификат и соответствующий ему закрытый ключ хранятся в виде PFX-пакета, зашифрованного паролем пользователя. Вход в клиентское приложение осуществляется с помощью этого пароля: допуск разрешается, если с помощью введенного пароля удалось расшифровать PFX-пакет и создать на его основе сертификат. Т. обр., ни пароль, ни какой-либо его хэш не хранятся клиентским приложением.
Клиент может с наивысшими правами:
- запустить любой процесс на сервере (если нужно, предварительно загрузив на сервер исполняемый файл);
- получить список процессов, выполняющихся на сервере, и управлять ими (в т. ч. принудительно прекратить выполнение любого процесса, изменить его приоритет etc.); получить списки потоков процесса и загруженных им модулей;
- получить список пользователей, выполнивших вход на удаленный компьютер, и управлять ими (в т. ч. принудительно завершить сессию пользователя, отправить сообщение пользователю etc.);
- получить информацию об удаленной системе;
- получить использование памяти удаленной системой;
- перезагрузить удаленную систему или завершить ее работу;
- управлять файловой системой удаленного компьютера (реализован интерфейс, принципиально не отличающийся от стандартного интерфейса проводника Windows, — в т. ч. перетаскивание мышью и работа с буфером обмена);
- управлять пользователями удаленной системы (создание/удаление пользователей и групп, назначение прав, включение в группы/исключение из групп, пароли);
- управлять любыми характеристиками системы, доступ к которым можно получить средствами WMI, и выполнять любые доступные методы WMI с заданием параметров для них.
Реализован механизм предотвращения остановки работы службы (в т. ч. через TerminateProcess) или изменения параметров ее запуска (Automatic -> Manual, System -> different user).
Middle .NET & C++ Developer
с 01.2019 по 08.2022
(3 года 7 месяцев)
PM SoftSuite, Дніпро (IT)
Development of .NET Core MVC web applications and services, interfaces for MS SQL databases. Development of Windows services (C++) and desktop applications (C# .NET Core): automatic encrypted data transfer between computers in local network and through Internet, tools of remote control and cryptographic tools. Creation of complex installers for Windows desktop products.
Разработчик
с 01.2013 по 12.2014
(1 год 11 месяцев)
Партнеры фирмы "1С": "Wise Advice", "Infosuite", Дистанційно (IT)
Разработка разнообразных многоцелевых решений на платформе "1С: Предприятие".
Разработчик, консультант
с 04.2011 по наст. время
(13 лет 11 месяцев)
AGRONOVA EUROPE AG, Zug, Швейцария (Минеральные удобрения: производство и торговля)
Разработка и внедрение оригинальной бухгалтерской конфигурации на базе платформы "1С: Предприятие 8", ориентированной на международные стандарты бухгалтерского учета, интеграция с другими информационными системами.
Разработчик, консультант
с 01.2011 по наст. время
(14 лет 2 месяца)
SUEK AG, St. Gallen, Швейцария (Добыча и продажа угля)
Разработка и внедрение оригинальной учетной системы для трейдеров на платформе "1С:Предприятие 8", интеграция с другими информационными системами.
Разработчик, консультант
с 01.2010 по 12.2011
(1 год 11 месяцев)
Bovis Lend Lease, Москва, РФ (Строительство, архитектура, дизайн интерьера)
Внедрение и доработка типовых решений "Бухгалтерия предприятия КОРП" и "Зарплата и управление персоналом".
Разработчик, консультант
с 10.2008 по 10.2009
(1 год)
Zeppelin - Russland, Москва, РФ (Машиностроение)
Внедрение и сопровождение решения "Зарплата и управление персоналом" ("1С: Предприятие 8.1"). Модификация и доработка типовой конфигурации. Широкий спектр внешних отчетов и обработок. Интеграция с другими информационными системами.
Разработчик, консультант
с 09.2007 по 10.2008
(1 год 1 месяц)
Консалтинговая компания "Киода", Москва, РФ (Бизнес-консалтинг)
Разнообразная работа с клиентами компании в части разработки оригинальных и поддержки и доработки типовых решений на базе "1С: Предприятия 8".
Разработчик
с 09.2004 по 01.2005
(4 месяца)
Фирма "1С", Москва, РФ (IT)
Разработка первых Web-приложений для платформы "1С: Предприятие 8" с использованием Web-расширения (C#).
Ведущий программист, технический руководитель проекта
с 09.2001 по 08.2007
(5 лет 11 месяцев)
Группа компаний "Полипластик", Москва, РФ (Производство полимеров)
Разработка и внедрение оригинальных учетных систем на базе "1С: Предприятие 7 - 8" (производство, продажи, кадровый учет), интеграция с другими информационными системами.
Образование
Днепропетровский государственный университет
Механико-математический, Днепр (Днепропетровск)
Высшее, с 1981 по 1986 (4 года 9 месяцев)
1986 — 1989: аспирантура; 1989 — 1993: преподавание и научная работа.
Знание языков
Английский — выше среднего
Дополнительная информация
https://github.com/kachamkin
Помимо опыта разработки в среде "1С" имею опыт web-разработки (PHP, JavaScript), а также опыт разработки Windows-приложений (native C++, .NET C#).
Telegram, Skype, Whatsapp: @kachamkin +38 99 602 90 15
Предпочтительный способ связи — Telegram
Похожие кандидаты
-
.Net-програміст, C++ developer, front end розробник
Днепр, Удаленно -
C++, Blueprints Developer, разработчик VR/AR
75000 грн, Киев, Удаленно -
Programmer, Game developer (С++, С#, Unity, Unreal Engine, QT)
Луцк, Удаленно -
Программист-разработчик 1С
Киев, Удаленно -
Software Developer (C++, C#, .Net, JavaScript)
Удаленно