コード例 #1
0
        private bool IsRootCall(INktHookCallInfo aCallInfo)
        {
            var count = NestedFunctionCallCountOf(aCallInfo);

            // This is the only function call for aCallInfo.ThreadId. So, it's the root call.
            return(count == 1);
        }
コード例 #2
0
        private FunctionCall FunctionCallFrom(INktHookCallInfo aCallInfo)
        {
            var functionCallOrder = _functionCallsOrder.Value(aCallInfo);
            var aFunctionCall     = FunctionCall.From(aCallInfo, functionCallOrder);

            return(aFunctionCall);
        }
コード例 #3
0
        private void OnFunctionCalledPrinterStart(INktHook hhook, INktProcess proc, INktHookCallInfo callInfo)
        {
            if (IsWorkedPrintStart)
            {
                IsWorkedPrintStart = false;
                return;
            }

            int exitcode = 0;

            TypressService.eventLog1.WriteEntry("Printer Request Event!");
            PageCnt = 0;
            if (TypressService.packet.IsLogin == false)
            {
                TypressService.eventLog1.WriteEntry("LoginForm 띄움");
                //System.Diagnostics.Debugger.Launch();
            }
            string applicationName = "C:\\Users\\jklh0\\source\\github\\Typress\\InterruptLogin\\InterruptLoginView\\InterruptLoginView\\bin\\x64\\Debug\\InterruptLoginView.exe";

            ApplicationLoader.PROCESS_INFORMATION procInfo;
            ApplicationLoader.StartProcessAndBypassUAC(applicationName, out procInfo);

            WaitForSingleObject(procInfo.hProcess, 100000);

            GetExitCodeProcess(procInfo.hProcess, ref exitcode);
            //Process P = Process.Start("C:\\Users\\jklh0\\source\\github\\Typress\\InterruptLogin\\InterruptLoginView\\InterruptLoginView\\bin\\x64\\Debug\\InterruptLoginView.exe");
            //P.WaitForExit(); // IsLogin 변수 바꼈는지?
            IsWorkedPrintStart = true;
            return;
        }
コード例 #4
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        //Checks entropy of buffer, and that path is not REG or appdata
        private void writeFileH(INktHookCallInfo callInfo)
        {
            //Get written path from file handle
            NktTools tool = new NktTools();
            string   path = tool.GetFileNameFromHandle(callInfo.Params().GetAt(0).PointerVal, callInfo.Process());

            //If path is relevant check entropy
            if (!path.Contains("\\appdata\\", StringComparison.OrdinalIgnoreCase) &&
                !path.Contains("\\REGISTRY\\"))
            {
                INktParam pBuf   = callInfo.Params().GetAt(1); //Data to write
                INktParam pBytes = callInfo.Params().GetAt(2); //Length of data

                uint   bytesToWrite = pBytes.ULongVal;
                double entropy      = 0;
                if (pBuf.PointerVal != IntPtr.Zero && bytesToWrite > 0)
                {
                    INktProcessMemory procMem      = process.Memory();
                    byte[]            buffer       = new byte[bytesToWrite];
                    GCHandle          pinnedBuffer = GCHandle.Alloc(buffer, GCHandleType.Pinned);
                    IntPtr            pDest        = pinnedBuffer.AddrOfPinnedObject();
                    procMem.ReadMem(pDest, pBuf.PointerVal, (IntPtr)bytesToWrite);
                    pinnedBuffer.Free();
                    var str = System.Text.Encoding.UTF8.GetString(buffer);
                    //Get per-byte entropy
                    entropy = getEntropy(buffer);
                }
                if (entropy > 6)
                {
                    intelligence.writeFileS();
                }
            }
        }
コード例 #5
0
        private static FunctionCall FromPostCall(INktHookCallInfo aCallInfo, int order)
        {
            var inspectedParameters = InspectParametersFrom(aCallInfo);
            var inspectedResult     = InspectResultFrom(aCallInfo);
            var summary             = CreateSummaryFrom(inspectedParameters);

            return(From(aCallInfo, order, inspectedResult, inspectedParameters, summary));
        }
コード例 #6
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
        private static FunctionCall FromPostCall(INktHookCallInfo aCallInfo, int order)
        {
            var inspectedParameters = InspectParametersFrom(aCallInfo);
            var inspectedResult = InspectResultFrom(aCallInfo);
            var summary = CreateSummaryFrom(inspectedParameters);

            return From(aCallInfo, order, inspectedResult, inspectedParameters, summary);
        }
コード例 #7
0
        private void ProcessPreCall(INktHookCallInfo preCallInfo)
        {
            AssignFunctionCallOrderTo(preCallInfo);
            IncrementNestedFunctionsCalledByThreadOf(preCallInfo);

            var functionCall = FunctionCallFrom(preCallInfo);
            Dispatch(preCallInfo,functionCall);
        }
コード例 #8
0
        private static ParameterInspectorVisitor CreateParameterInspectorFor(INktHookCallInfo callInfo)
        {
            var parameterInspector = new ParameterInspectorVisitor(callInfo.Hook().FunctionName)
            {
                Depth = new ApplicationSettings().MaximumParameterInspectionDepth
            };

            return(parameterInspector);
        }
コード例 #9
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        private void regCreateKeyExH(INktHookCallInfo callInfo)
        {
            string path = callInfo.Params().GetAt(1).ReadString();

            if (path.Contains("Windows\\CurrentVersion\\Run") || path.Contains("Windows\\CurrentVersion\\RunOnce"))
            {
                intelligence.foundStartup();
            }
        }
コード例 #10
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        private void cryptAcquireContextH(INktHookCallInfo callInfo)
        {
            string csp = callInfo.Params().GetAt(2).Value;

            if (csp.Contains("Microsoft Enhanced RSA and AES Cryptographic Provider"))
            {
                intelligence.cryptAcquireContextS();
            }
        }
コード例 #11
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        private void deleteFileH(INktHookCallInfo callInfo)
        {
            string path = callInfo.Params().GetAt(0).Value;

            if (!path.Contains("\\appdata\\", StringComparison.OrdinalIgnoreCase))
            {
                intelligence.deleteFileS();
            }
        }
コード例 #12
0
        private void ProcessPreCall(INktHookCallInfo preCallInfo)
        {
            AssignFunctionCallOrderTo(preCallInfo);
            IncrementNestedFunctionsCalledByThreadOf(preCallInfo);

            var functionCall = FunctionCallFrom(preCallInfo);

            Dispatch(preCallInfo, functionCall);
        }
コード例 #13
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        //Checks if vssadmin or bcdedit
        private void winExecH(INktHookCallInfo callInfo)
        {
            string path = callInfo.Params().GetAt(0).Value;

            if (path.Contains("vssadmin", StringComparison.OrdinalIgnoreCase) ||
                path.Contains("bcdedit", StringComparison.OrdinalIgnoreCase))
            {
                intelligence.createProcessS();
            }
        }
コード例 #14
0
        private void Dispatch(INktHookCallInfo aCallInfo, FunctionCall aFunctionCall)
        {
            if (IsRootCall(aCallInfo))
            {
                _dispatchDispatchRootCall(aFunctionCall);
                return;
            }

            _dispatchDispatchChildCall(aFunctionCall);
        }
コード例 #15
0
 private void OnFunctionCalledPrinterEnd(INktHook hhook, INktProcess proc, INktHookCallInfo callInfo)
 {
     if (IsWorkedPrintEnd)
     {
         IsWorkedPrintEnd = false;
         return;
     }
     TypressService.eventLog1.WriteEntry("최종출력물 갯수 : ");
     TypressService.eventLog1.WriteEntry(PageCnt.ToString());
     TypressService.eventLog1.WriteEntry("인쇄작업 종료!");
     IsWorkedPrintEnd = true;
 }
コード例 #16
0
        public void Dispatch(INktHookCallInfo aCallInfo)
        {
            lock (_dataLock)
            {
                if (aCallInfo.IsPreCall)
                {
                    ProcessPreCall(aCallInfo);
                    return;
                }

                ProcessPostCall(aCallInfo);
            }
        }
コード例 #17
0
        public void Dispatch(INktHookCallInfo aCallInfo)
        {
            lock (_dataLock)
            {
                if (aCallInfo.IsPreCall)
                {
                    ProcessPreCall(aCallInfo);
                    return;
                }

                ProcessPostCall(aCallInfo);
            }
        }
コード例 #18
0
        private static InspectedParameter InspectResultFrom(INktHookCallInfo aCallInfo)
        {
            if (aCallInfo.IsPreCall)
            {
                return(InspectedParameter.Empty());
            }

            var result    = aCallInfo.Result();
            var inspector = CreateParameterInspectorFor(aCallInfo);

            inspector.Inspect(new[] { result });

            return(inspector.InspectedParameters.First());
        }
コード例 #19
0
 private void OnFunctionCalledPrinter(INktHook hhook, INktProcess proc, INktHookCallInfo callInfo)
 {
     MyNewService.eventLog1.WriteEntry("Event.");
     if (num == "100")
     {
         MyNewService.eventLog1.WriteEntry("출력됩니당.");
         num = "0";
         return;
     }
     MessageBox.Show("로그인");
     if (num == "100")
     {
         MyNewService.eventLog1.WriteEntry("에엥?");
         //hhook.Unhook(true);
     }
 }
コード例 #20
0
        private static List <InspectedParameter> InspectParametersFrom(INktHookCallInfo callInfo)
        {
            if (callInfo.IsPreCall)
            {
                return(new List <InspectedParameter>());
            }

            var functionParameters = callInfo.Params().CollectAll();

            var parameterInspector = CreateParameterInspectorFor(callInfo);

            parameterInspector.Inspect(functionParameters);

            var fn = callInfo.Hook().FunctionName;

            return(parameterInspector.InspectedParameters);
        }
コード例 #21
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
        private void findFirstFileH(INktHookCallInfo callInfo)
        {
            //Path to search
            string path = callInfo.Params().GetAt(0).Value;

            //Distiguishes between 2 methods of scanning:
            //1:Search for all files, filter later
            if (path.EndsWith("*") && !path.Contains("\\appdata\\", StringComparison.OrdinalIgnoreCase))
            {
                intelligence.findFirstFileS();
            }
            //2:Search for each extension separately
            if (path.EndsWith("*.txt") && !path.Contains("\\appdata\\", StringComparison.OrdinalIgnoreCase))
            {
                intelligence.findFirstFileTxtS();
            }
        }
コード例 #22
0
        private void OnNtWriteFile(INktHook hook, INktProcess proc, INktHookCallInfo callInfo)
        {
            var fileHandle = callInfo.Params().GetAt(0).SizeTVal;
            var fileName   = ReadFileInfo(proc.Handle(WinEnum.PROCESS_WM_READ), fileHandle);

            if (fileName == null)
            {
                return;
            }

            lock (fileNames)
            {
                if (!fileNames.Contains(fileName))
                {
                    fileNames.Add(fileName);
                }
            }
        }
コード例 #23
0
ファイル: ProcessWatcher.cs プロジェクト: aroes/cryptaware
    //When a hooked function executes (reflection)
    private void OnFunctionCalled(NktHook hook, INktProcess proc, INktHookCallInfo callInfo)
    {
        //Call the function specific handler from string
        //1:Split function name to the right of '!' and add the handler tag
        string mn = hook.FunctionName.Substring(hook.FunctionName.LastIndexOf('!') + 1) + 'H';

        //2:Lowercase first letter
        mn = Char.ToLowerInvariant(mn[0]) + mn.Substring(1);
        //3:Invoke
        try
        {
            //3.1:Get correct hookmanager
            HookManager h = hManagers[proc.Id];
            //3.2:Get its function handler
            MethodInfo mi         = h.GetType().GetMethod(mn, BindingFlags.Instance | BindingFlags.NonPublic);
            Object[]   funcParams = { callInfo };
            mi.Invoke(h, funcParams);
        }
        catch (NullReferenceException)
        {
            Debug.WriteLine(mn + " has no handler");
        }
    }
コード例 #24
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void createRemoteThreadExH(INktHookCallInfo callInfo)
 {
     createRemoteThreadH(callInfo);
 }
コード例 #25
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 //Send all
 private void suspendThreadH(INktHookCallInfo callInfo)
 {
     intelligence.suspendThreadS();
 }
コード例 #26
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 //Send all
 private void createRemoteThreadH(INktHookCallInfo callInfo)
 {
     intelligence.createRemoteThreadS();
 }
コード例 #27
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
        private static List<InspectedParameter> InspectParametersFrom(INktHookCallInfo callInfo)
        {
            if (callInfo.IsPreCall) return new List<InspectedParameter>();

            var functionParameters = callInfo.Params().CollectAll();

            var parameterInspector = CreateParameterInspectorFor(callInfo);
            parameterInspector.Inspect(functionParameters);

            var fn = callInfo.Hook().FunctionName;
            return parameterInspector.InspectedParameters;
        }
コード例 #28
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void getComputerNameH(INktHookCallInfo callInfo)
 {
     intelligence.getComputerNameS();
 }
コード例 #29
0
        private bool IsRootCall(INktHookCallInfo aCallInfo)
        {
            var count = NestedFunctionCallCountOf(aCallInfo);

            // This is the only function call for aCallInfo.ThreadId. So, it's the root call.
            return count == 1;
        }
コード例 #30
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void deleteFileWH(INktHookCallInfo callInfo)
 {
     deleteFileH(callInfo);
 }
コード例 #31
0
        private FunctionCall FunctionCallFrom(INktHookCallInfo aCallInfo)
        {
            var functionCallOrder = _functionCallsOrder.Value(aCallInfo);
            var aFunctionCall = FunctionCall.From(aCallInfo, functionCallOrder);

            return aFunctionCall;
        }
コード例 #32
0
 private void Dispatch(INktHookCallInfo aCallInfo, FunctionCall aFunctionCall)
 {
     if (IsRootCall(aCallInfo))
     {
         _dispatchDispatchRootCall(aFunctionCall);
         return;
     }
     
     _dispatchDispatchChildCall(aFunctionCall);
 }
コード例 #33
0
 private void AssignFunctionCallOrderTo(INktHookCallInfo preCallInfo)
 {
     var functionCallOrder = Interlocked.Increment(ref _functionCallsCount);
     _functionCallsOrder.Update(preCallInfo, i => functionCallOrder);
 }
コード例 #34
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
 public static FunctionCall FromPreCall(INktHookCallInfo aPreCallInfo, int order)
 {
     return From(aPreCallInfo, order, InspectedParameter.Empty(), new List<InspectedParameter>(), string.Empty);
 }
コード例 #35
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
 private static FunctionCall From(INktHookCallInfo aCallInfo, int order, InspectedParameter inspectedResult, List<InspectedParameter> inspectedParameters, string summary)
 {
     return new FunctionCall(aCallInfo.GetHashCode(), aCallInfo.ThreadId, order, aCallInfo.Hook().ModuleName(), aCallInfo.Hook().FunctionNameWithoutModule(), summary, inspectedParameters, inspectedResult);
 }
コード例 #36
0
 private void ProcessPostCall(INktHookCallInfo postCallInfo)
 {
     UpdateFunctionCall(postCallInfo);
     DecrementNestedFunctionsCalledByThreadOf(postCallInfo);
 }
コード例 #37
0
 private void IncrementNestedFunctionsCalledByThreadOf(INktHookCallInfo aCallInfo)
 {
     _functionCallCountByThread.Update(aCallInfo, i => i + 1);
 }
コード例 #38
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void createFileWH(INktHookCallInfo callInfo)
 {
     createFileH(callInfo);
 }
コード例 #39
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
        private static InspectedParameter InspectResultFrom(INktHookCallInfo aCallInfo)
        {
            if (aCallInfo.IsPreCall) return InspectedParameter.Empty();

            var result = aCallInfo.Result();
            var inspector = CreateParameterInspectorFor(aCallInfo);

            inspector.Inspect(new[] { result });

            return inspector.InspectedParameters.First();
        }
コード例 #40
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void findFirstFileExWH(INktHookCallInfo callInfo)
 {
     findFirstFileH(callInfo);
 }
コード例 #41
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 //Send all
 private void cryptDestroyKeyH(INktHookCallInfo callInfo)
 {
     intelligence.cryptDestroyKeyS();
 }
コード例 #42
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
 private static ParameterInspectorVisitor CreateParameterInspectorFor(INktHookCallInfo callInfo)
 {
     var parameterInspector = new ParameterInspectorVisitor(callInfo.Hook().FunctionName) { Depth = new ApplicationSettings().MaximumParameterInspectionDepth };
     return parameterInspector;
 }
コード例 #43
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void getComputerNameExWH(INktHookCallInfo callInfo)
 {
     getComputerNameH(callInfo);
 }
コード例 #44
0
ファイル: FunctionCall.cs プロジェクト: subTee/Deviare2
 public static FunctionCall From(INktHookCallInfo aCallInfo, int order)
 {
     return aCallInfo.IsPreCall ? FromPreCall(aCallInfo, order) : FromPostCall(aCallInfo, order);
 }
コード例 #45
0
 private int NestedFunctionCallCountOf(INktHookCallInfo aCallInfo)
 {
     return _functionCallCountByThread.ValueOrInitialize(aCallInfo);
 }
コード例 #46
0
ファイル: HookManager.cs プロジェクト: aroes/cryptaware
 private void createProcessWH(INktHookCallInfo callInfo)
 {
     createProcessH(callInfo);
 }
コード例 #47
0
 private void UpdateFunctionCall(INktHookCallInfo postCallInfo)
 {
     var aFunctionCall = FunctionCallFrom(postCallInfo);
     _dispatchRootCallUpdate(aFunctionCall);
 }