跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

Mastodon

一键转换 Json 数据 至 TypeScript Interface 结构

用法很简单,把获取到的 Json 数据拷贝进去,单击转换,生成可供 TypeScript 使用的 Interface 接口。

样例输入:

{
  "url": "https://jixun.moe/",
  "posts": [
    { "title": "日记", "date": "2016.06.08" },
    { "title": "随笔", "date": "2016.06.09" }
  ],
  "last-update": 1465388410306
}

样例输出:

继续阅读 »

.net 4.0 代码注入 (C# & C++)

首先写一个注入用的 DLL:

// stdafx.h
#include <objbase.h>
#include <MetaHost.h>
#include <cassert>
// ProxyDll.cpp

#define ASSEMBLY_NAME   L"Launcher.exe"
#define LOADER_TYPE     L"moe.jixun.Inject"
#define LOADER_FUNCTION L"Init"

__declspec(dllexport) void Bootstrap() {
    CoInitializeEx(0, COINIT_MULTITHREADED);

    ICLRMetaHost *pMetaHost = nullptr;
    HRESULT hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost, (LPVOID*)&pMetaHost);
    ICLRRuntimeInfo *pRuntimeInfo = nullptr;
    pMetaHost->GetRuntime(L"v4.0.30319", IID_ICLRRuntimeInfo, (LPVOID*)&pRuntimeInfo);

    ICLRRuntimeHost *pClrRuntimeHost = nullptr;
    pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID*)&pClrRuntimeHost);

    pClrRuntimeHost->Start();

    DWORD dReturnValue;
    hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(ASSEMBLY_NAME, LOADER_TYPE, LOADER_FUNCTION, L"Test", &dReturnValue);
    assert(hr == S_OK);
}

因为 .net 的 exe 可以当做库来用,可以直接把代码写到我们的 exe 然后注入进去执行。

继续阅读 »