Андрей
Программист .Net, C++, 1С
Contact information
The job seeker has entered a phone number and email.
Name, contacts and photo are only available to registered employers. To access the candidates' personal information, log in as an employer or sign up.
You can get this candidate's contact information from https://www.work.ua/resumes/4211824/
Work experience
.Net developer
from 03.2023 to 09.2023
(7 months)
Devart, Дистанційно (IT)
C# (.NET) developer
from 10.2022 to now
(3 years 5 months)
Ulyss.Club, Дніпро (IT)
Backend development of web application (https://ulyss.club).
Разработчик
from 01.2022 to now
(4 years 2 months)
Проект 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) передающей управление инструкции, перед которой поток был заморожен.
Библиотека поддерживает любое количество хуков с любым количеством целевых процессов, сохраняя информацию о них и обеспечивая корректное межпроцессное и межпоточное взаимодействие с помощью средств синхронизации: событий, мьютексов и межпроцессной общей памяти.
Разработчик
from 01.2022 to now
(4 years 2 months)
Проект 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.)
Разработчик
from 01.2022 to now
(4 years 2 months)
Проект 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, содержащий пути к файлам, записанным на диск на предыдущем этапе.
Разработчик
from 01.2022 to now
(4 years 2 months)
Проект 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
from 01.2019 to 08.2022
(3 years 8 months)
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.
Разработчик
from 01.2013 to 12.2014
(2 years)
Партнеры фирмы "1С": "Wise Advice", "Infosuite", Дистанційно (IT)
Разработка разнообразных многоцелевых решений на платформе "1С: Предприятие".
Разработчик, консультант
from 04.2011 to now
(14 years 11 months)
AGRONOVA EUROPE AG, Zug, Швейцария (Минеральные удобрения: производство и торговля)
Разработка и внедрение оригинальной бухгалтерской конфигурации на базе платформы "1С: Предприятие 8", ориентированной на международные стандарты бухгалтерского учета, интеграция с другими информационными системами.
Разработчик, консультант
from 01.2011 to now
(15 years 2 months)
SUEK AG, St. Gallen, Швейцария (Добыча и продажа угля)
Разработка и внедрение оригинальной учетной системы для трейдеров на платформе "1С:Предприятие 8", интеграция с другими информационными системами.
Разработчик, консультант
from 01.2010 to 12.2011
(2 years)
Bovis Lend Lease, Москва, РФ (Строительство, архитектура, дизайн интерьера)
Внедрение и доработка типовых решений "Бухгалтерия предприятия КОРП" и "Зарплата и управление персоналом".
Разработчик, консультант
from 10.2008 to 10.2009
(1 year)
Zeppelin - Russland, Москва, РФ (Машиностроение)
Внедрение и сопровождение решения "Зарплата и управление персоналом" ("1С: Предприятие 8.1"). Модификация и доработка типовой конфигурации. Широкий спектр внешних отчетов и обработок. Интеграция с другими информационными системами.
Разработчик, консультант
from 09.2007 to 10.2008
(1 year 2 months)
Консалтинговая компания "Киода", Москва, РФ (Бизнес-консалтинг)
Разнообразная работа с клиентами компании в части разработки оригинальных и поддержки и доработки типовых решений на базе "1С: Предприятия 8".
Разработчик
from 09.2004 to 01.2005
(5 months)
Фирма "1С", Москва, РФ (IT)
Разработка первых Web-приложений для платформы "1С: Предприятие 8" с использованием Web-расширения (C#).
Ведущий программист, технический руководитель проекта
from 09.2001 to 08.2007
(6 years)
Группа компаний "Полипластик", Москва, РФ (Производство полимеров)
Разработка и внедрение оригинальных учетных систем на базе "1С: Предприятие 7 - 8" (производство, продажи, кадровый учет), интеграция с другими информационными системами.
Education
Днепропетровский государственный университет
Механико-математический, Днепр (Днепропетровск)
Higher, from 1981 to 1986 (5 years)
1986 — 1989: аспирантура; 1989 — 1993: преподавание и научная работа.
Language proficiencies
English — above average
Additional information
https://github.com/kachamkin
Помимо опыта разработки в среде "1С" имею опыт web-разработки (PHP, JavaScript), а также опыт разработки Windows-приложений (native C++, .NET C#).
Telegram, Skype, Whatsapp: @kachamkin +38 99 602 90 15
Предпочтительный способ связи — Telegram
Similar candidates
-
.Net developer
100000 UAH, Other countries, Remote -
Full stack software engineer
Lviv, Remote -
Full-stack програміст PHP, JS, Python, C++ (впровадження ШІ)
Dnipro, Vinnytsia , more 7 cities -
Angular 2+, .NET Developer
Kyiv, Kharkiv, Remote -
.Net-програміст
Remote -
Fullstack Developer (Python, C#, .NET, JavaScript, Next.js, React, Laravel)
110000 UAH, Vinnytsia, Kyiv , more 6 cities