冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 17507|回覆: 18
打印 上一主題 下一主題

[原創] x64 Dll + Asm + NT Api hook VC++ sample code

  [複製鏈接]

46

主題

6

好友

144

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
15835
帖子
2025
主題
46
精華
0
積分
144
楓幣
2209
威望
125
存款
0
贊助金額
0
推廣
0
GP
164
閱讀權限
100
性別
保密
在線時間
371 小時
註冊時間
2012-10-23
最後登入
2022-4-21
跳轉到指定樓層
1
發表於 2022-2-27 04:12:23 |只看該作者 |倒序瀏覽
本帖最後由 kkmomo 於 2022-2-27 04:16 編輯

Tested for TwMs 241.1 MapleStory.exe
全部5個檔案,下面直接貼 source ,不另附檔案下載

範例中數據皆取自本站的 新 楓之谷(MapleStory) 遊戲代碼分享區

檔案列表:
Assembly.asm
dllmain.cpp
X64AsmSample.sln
X64AsmSample.vcxproj
X64AsmSample.vcxproj.filters

此範例實作:
1. CRC bypass (沒用到 asm)
    注入 dll 後直接寫入

2. Boss 無敵 Asm + 開關
    預設為關
    call SetBossInvincibleEnable(BOOLEAN Enable) 設定開/關

3. 全職業攻擊技能無延遲 Asm + 開關
    預設為關,速度5
    call SetAttackNoDelay(BOOLEAN Enable)  設定開/關
    call SetAttackNoDelayValue(DWORD Value) 設定速度

4. Nt Api Hook Asm + hook function
    以 Hook NtQuerySystemInformation 為例
    當 SystemInformationClass == SystemProcessInformation 時
    印出 pid 跟 process image name

Assembly.asm
  1. ; ASSEMBLE CODE

  2. ; Exportation
  3. PUBLIC BossInvincible
  4. PUBLIC AttackNoDelay
  5. PUBLIC NtQuerySystemInformation_Orig


  6. ; Importation
  7. EXTERN g_controlData_Enable_BossInvincible:QWORD
  8. EXTERN g_controlData_Enable_NoDelay:QWORD
  9. EXTERN g_controlData_NoDelayValue:QWORD

  10. ; Declaration
  11. .DATA
  12. g_noDelayCount DB 00H


  13. ; Implementation
  14. .CODE

  15. BossInvincible PROC
  16.   mov rcx, [g_controlData_Enable_BossInvincible]
  17.   cmp byte ptr [rcx], 01H
  18.   je BossInvincible_Enable
  19.   mov rcx, 140531EC0H
  20.   push rcx
  21.   mov ecx, [rcx+00000850H]
  22.   ret
  23. BossInvincible_Enable:
  24.   mov eax,01H
  25.   ret
  26. BossInvincible ENDP

  27. AttackNoDelay PROC
  28.   mov rcx, [g_controlData_Enable_NoDelay]
  29.   cmp byte ptr [rcx], 01H
  30.   jne AttackNoDelay_Orig
  31.   mov rcx, [g_controlData_NoDelayValue]
  32.   mov al, byte ptr [rcx]
  33.   cmp byte ptr [g_noDelayCount], al
  34.   jae AttackNoDelay_Orig
  35.   inc byte ptr [g_noDelayCount]
  36.   jmp SkipSetAction
  37. AttackNoDelay_Orig:
  38.   mov byte ptr [g_noDelayCount], 0
  39.   mov [rsi+00000864H],r13d
  40. SkipSetAction:
  41.   mov rax,[r14]
  42.   mov [rsp+20H],ebx
  43.   mov rcx,1434F9CD7H
  44.   jmp rcx
  45. AttackNoDelay ENDP

  46. NtQuerySystemInformation_Orig PROC
  47.   mov r10,rcx
  48.   mov eax,00000036H
  49.   syscall
  50.   ret
  51. NtQuerySystemInformation_Orig ENDP

  52. END
複製代碼
dllmain.cpp
  1. #define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from windows headers
  2. // Windows Header Files
  3. #define WIN32_NO_STATUS
  4. #include <windows.h>
  5. #undef WIN32_NO_STATUS
  6. #include <ntstatus.h>
  7. #include <shlwapi.h>
  8. #include <winternl.h>
  9. #include <tchar.h>
  10. #include <stdio.h>

  11. #pragma comment(lib, "Shlwapi.lib")

  12. #define _DEBUG_TAG_ L"sample"
  13. #define _FMT_PREFIX_ _DEBUG_TAG_ L": %s L%d "
  14. #define _FMT_NEWLINE_ L"\r\n"
  15. #define my_log(fmt, ...) mylog(_FMT_PREFIX_ _T(fmt) _FMT_NEWLINE_, __FUNCTIONW__, __LINE__, __VA_ARGS__)
  16. #define TARGET_PROCESS_NAME L"MapleStory.exe"

  17. #ifndef RtlOffsetToPointer
  18. #define RtlOffsetToPointer(B,O)  ((PCHAR)( ((PCHAR)(B)) + ((ULONG_PTR)(O))  ))
  19. #endif

  20. typedef struct _SYSTEM_PROCESS_INFO
  21. {
  22.     ULONG                   NextEntryOffset;
  23.     ULONG                   NumberOfThreads;
  24.     LARGE_INTEGER           Reserved[3];
  25.     LARGE_INTEGER           CreateTime;
  26.     LARGE_INTEGER           UserTime;
  27.     LARGE_INTEGER           KernelTime;
  28.     UNICODE_STRING          ImageName;
  29.     ULONG                   BasePriority;
  30.     HANDLE                  ProcessId;
  31.     HANDLE                  InheritedFromProcessId;
  32. } SYSTEM_PROCESS_INFO, * PSYSTEM_PROCESS_INFO;

  33. struct CONTROL_DATA
  34. {
  35.     BOOLEAN Enable_BossInvincible;
  36.     BOOLEAN Enable_NoDelay;
  37.     DWORD NoDelayValue;
  38. };

  39. CONTROL_DATA g_controlData{ 0 };

  40. typedef union tagpfnNtQuerySystemInformation {
  41.     NTSTATUS(NTAPI* func_ptr)(
  42.         IN      SYSTEM_INFORMATION_CLASS SystemInformationClass,
  43.         IN OUT  PVOID SystemInformation,
  44.         IN      ULONG SystemInformationLength,
  45.         OUT     PULONG ReturnLength OPTIONAL
  46.         );
  47. } pfnNtQuerySystemInformation;

  48. pfnNtQuerySystemInformation pNtQuerySystemInformation = { 0 };

  49. void mylog(LPCWSTR Format, ...)
  50. {
  51.     WCHAR buf[1024] = L"";
  52.     va_list args;
  53.     va_start(args, Format);
  54.     vswprintf_s(buf, _countof(buf), Format, args);
  55.     OutputDebugStringW(buf);
  56.     va_end(args);
  57. }

  58. NTSTATUS NtQuerySystemInformation_Hook(
  59.     SYSTEM_INFORMATION_CLASS SystemInformationClass,
  60.     PVOID SystemInformation,
  61.     ULONG SystemInformationLength,
  62.     PULONG ReturnLength)
  63. {
  64.     NTSTATUS Status;
  65.     PSYSTEM_PROCESS_INFO SystemProcess;
  66.     PSYSTEM_PROCESS_INFO NextSystemProcess;
  67.     Status = pNtQuerySystemInformation.func_ptr(SystemInformationClass, SystemInformation, SystemInformationLength, ReturnLength);
  68.     if (NT_SUCCESS(Status) && SystemInformationClass == SystemProcessInformation)
  69.     {
  70.         SystemProcess = (PSYSTEM_PROCESS_INFO)SystemInformation;
  71.         NextSystemProcess = (PSYSTEM_PROCESS_INFO)((PBYTE)SystemProcess + SystemProcess->NextEntryOffset);
  72.         my_log("Query ProcessId=%llu ImageName=%wZ", NextSystemProcess->ProcessId, &NextSystemProcess->ImageName);
  73.     }
  74.     return Status;
  75. }

  76. extern "C"
  77. {
  78.     DWORD64 g_controlData_Enable_BossInvincible = 0;
  79.     DWORD64 g_controlData_Enable_NoDelay = 0;
  80.     DWORD64 g_controlData_NoDelayValue = 0;

  81.     void BossInvincible();
  82.     void AttackNoDelay();
  83.     NTSTATUS NtQuerySystemInformation_Orig(
  84.         SYSTEM_INFORMATION_CLASS SystemInformationClass,
  85.         PVOID SystemInformation,
  86.         ULONG SystemInformationLength,
  87.         PULONG ReturnLength);
  88. }

  89. void WriteMem(const DWORD64 lpAddress, PBYTE Buffer, unsigned Length)
  90. {
  91.     BOOL res;
  92.     DWORD OldProtection;
  93.     res = VirtualProtect((LPVOID)lpAddress, Length, PAGE_EXECUTE_READWRITE, &OldProtection);
  94.     if (res == TRUE)
  95.     {
  96.         memcpy((LPBYTE)lpAddress, Buffer, Length);
  97.         res = VirtualProtect((LPVOID)lpAddress, Length, OldProtection, &OldProtection);
  98.         if (res != TRUE)
  99.         {
  100.             my_log("Restore mem protect fail %lu", GetLastError());
  101.         }
  102.     }
  103.     else
  104.     {
  105.         my_log("Set mem protect fail %lu", GetLastError());
  106.     }
  107. }

  108. void AsmJumpFar(const DWORD64 lpAddress, LPCVOID Function, SIZE_T Nops)
  109. {
  110.     DWORD OldProtection;
  111.     VirtualProtect((LPVOID)lpAddress, 14ULL + Nops, PAGE_EXECUTE_READWRITE, &OldProtection);
  112.     *(LPWORD)lpAddress = 0x25FFU;
  113.     *(PDWORD)(lpAddress + 2) = 0;
  114.     *(PDWORD64)(lpAddress + 6) = (DWORD64)Function;
  115.     if (!!Nops)
  116.     {
  117.         memset(((LPBYTE)lpAddress + 14), 0x90, Nops);
  118.     }
  119.     VirtualProtect((LPVOID)lpAddress, 14ULL + Nops, OldProtection, &OldProtection);
  120. }

  121. void SetBossInvincibleEnable(BOOLEAN Enable)
  122. {
  123.     g_controlData.Enable_BossInvincible = Enable;
  124. }

  125. void SetAttackNoDelay(BOOLEAN Enable)
  126. {
  127.     g_controlData.Enable_NoDelay = Enable;
  128. }

  129. void SetAttackNoDelayValue(DWORD Value)
  130. {
  131.     g_controlData.NoDelayValue = Value;
  132. }

  133. void MyRoutine()
  134. {
  135.     g_controlData_Enable_BossInvincible = (DWORD64)RtlOffsetToPointer(&g_controlData, FIELD_OFFSET(CONTROL_DATA, Enable_BossInvincible));
  136.     g_controlData_Enable_NoDelay = (DWORD64)RtlOffsetToPointer(&g_controlData, FIELD_OFFSET(CONTROL_DATA, Enable_NoDelay));
  137.     g_controlData_NoDelayValue = (DWORD64)RtlOffsetToPointer(&g_controlData, FIELD_OFFSET(CONTROL_DATA, NoDelayValue));
  138.    
  139.     HMODULE ntdll = GetModuleHandleA("ntdll.dll");
  140.     if (ntdll)
  141.     {
  142.         DWORD64 NtQuerySystemInformation_Addr = (DWORD64)GetProcAddress(ntdll, "NtQuerySystemInformation");
  143.         *(DWORD64*)(&pNtQuerySystemInformation) = (DWORD64)NtQuerySystemInformation_Orig;
  144.         my_log("NtQuerySystemInformation_Addr=%p", NtQuerySystemInformation_Addr);
  145.         AsmJumpFar(NtQuerySystemInformation_Addr, NtQuerySystemInformation_Hook, 2);
  146.     }
  147.     else
  148.     {
  149.         my_log("Get ntdll module handle fail %lu", GetLastError());
  150.     }

  151.     BYTE bypassPatch[] =
  152.     {
  153.         //xor eax,eax
  154.         0x31, 0xC0,
  155.         //ret
  156.         0xC3,
  157.         // nops
  158.         0x90, 0x90
  159.     };
  160.     DWORD64 function_addr = 0x143B7E0E0U;
  161.     WriteMem(function_addr, bypassPatch, sizeof(bypassPatch));
  162.     AsmJumpFar(0x141B01AD0U, BossInvincible, 0);
  163.     AsmJumpFar(0x1434F9CC9U, AttackNoDelay, 0);
  164.     SetAttackNoDelayValue(5);
  165.     SetBossInvincibleEnable(FALSE);
  166.     SetAttackNoDelay(FALSE);
  167. }

  168. BOOL APIENTRY DllMain( HMODULE hModule,
  169.                        DWORD  ul_reason_for_call,
  170.                        LPVOID lpReserved
  171.                      )
  172. {
  173.     DWORD len;
  174.     WCHAR processName[MAX_PATH] = { 0 };

  175.     switch (ul_reason_for_call)
  176.     {
  177.     case DLL_PROCESS_ATTACH:
  178.         len = GetModuleFileNameW(GetModuleHandleA(NULL), processName, MAX_PATH);
  179.         if (len > 0)
  180.         {
  181.             if (StrStrW(processName, TARGET_PROCESS_NAME))
  182.             {
  183.                 my_log("CreateThread");
  184.                 CreateThread(0, 0, (LPTHREAD_START_ROUTINE)MyRoutine, 0, 0, 0);
  185.             }
  186.         }
  187.         else
  188.         {
  189.             my_log("Get moudle file name fail %lu.", GetLastError());
  190.         }
  191.         break;
  192.     case DLL_PROCESS_DETACH:
  193.         FreeLibrary(hModule);
  194.         break;
  195.     }
  196.     return TRUE;
  197. }
複製代碼
X64AsmSample.sln
  1. Microsoft Visual Studio Solution File, Format Version 12.00
  2. # Visual Studio Version 16
  3. VisualStudioVersion = 16.0.31911.196
  4. MinimumVisualStudioVersion = 10.0.40219.1
  5. Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "X64AsmSample", "X64AsmSample.vcxproj", "{BE72125F-805E-4DF1-B8BE-80DFC1C1AA83}"
  6. EndProject
  7. Global
  8.         GlobalSection(SolutionConfigurationPlatforms) = preSolution
  9.                 Debug|x64 = Debug|x64
  10.                 Release|x64 = Release|x64
  11.         EndGlobalSection
  12.         GlobalSection(ProjectConfigurationPlatforms) = postSolution
  13.                 {BE72125F-805E-4DF1-B8BE-80DFC1C1AA83}.Debug|x64.ActiveCfg = Debug|x64
  14.                 {BE72125F-805E-4DF1-B8BE-80DFC1C1AA83}.Debug|x64.Build.0 = Debug|x64
  15.                 {BE72125F-805E-4DF1-B8BE-80DFC1C1AA83}.Release|x64.ActiveCfg = Release|x64
  16.                 {BE72125F-805E-4DF1-B8BE-80DFC1C1AA83}.Release|x64.Build.0 = Release|x64
  17.         EndGlobalSection
  18.         GlobalSection(SolutionProperties) = preSolution
  19.                 HideSolutionNode = FALSE
  20.         EndGlobalSection
  21.         GlobalSection(ExtensibilityGlobals) = postSolution
  22.                 SolutionGuid = {CB2CD138-098F-465E-A9B3-17033E4BA7F0}
  23.         EndGlobalSection
  24. EndGlobal
複製代碼
X64AsmSample.vcxproj
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3.   <ItemGroup Label="ProjectConfigurations">
  4.     <ProjectConfiguration Include="Debug|x64">
  5.       <Configuration>Debug</Configuration>
  6.       <Platform>x64</Platform>
  7.     </ProjectConfiguration>
  8.     <ProjectConfiguration Include="Release|x64">
  9.       <Configuration>Release</Configuration>
  10.       <Platform>x64</Platform>
  11.     </ProjectConfiguration>
  12.   </ItemGroup>
  13.   <PropertyGroup Label="Globals">
  14.     <VCProjectVersion>16.0</VCProjectVersion>
  15.     <Keyword>Win32Proj</Keyword>
  16.     <ProjectGuid>{be72125f-805e-4df1-b8be-80dfc1c1aa83}</ProjectGuid>
  17.     <RootNamespace>X64AsmSample</RootNamespace>
  18.     <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
  19.   </PropertyGroup>
  20.   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  21.   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
  22.     <ConfigurationType>DynamicLibrary</ConfigurationType>
  23.     <UseDebugLibraries>true</UseDebugLibraries>
  24.     <PlatformToolset>v142</PlatformToolset>
  25.     <CharacterSet>Unicode</CharacterSet>
  26.   </PropertyGroup>
  27.   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  28.     <ConfigurationType>DynamicLibrary</ConfigurationType>
  29.     <UseDebugLibraries>false</UseDebugLibraries>
  30.     <PlatformToolset>v142</PlatformToolset>
  31.     <WholeProgramOptimization>true</WholeProgramOptimization>
  32.     <CharacterSet>Unicode</CharacterSet>
  33.   </PropertyGroup>
  34.   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  35.   <ImportGroup Label="ExtensionSettings">
  36.     <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
  37.   </ImportGroup>
  38.   <ImportGroup Label="Shared">
  39.   </ImportGroup>
  40.   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  41.     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  42.   </ImportGroup>
  43.   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  44.     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  45.   </ImportGroup>
  46.   <PropertyGroup Label="UserMacros" />
  47.   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  48.     <LinkIncremental>true</LinkIncremental>
  49.   </PropertyGroup>
  50.   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  51.     <LinkIncremental>false</LinkIncremental>
  52.   </PropertyGroup>
  53.   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  54.     <ClCompile>
  55.       <WarningLevel>Level3</WarningLevel>
  56.       <SDLCheck>true</SDLCheck>
  57.       <PreprocessorDefinitions>_DEBUG;X64ASMSAMPLE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  58.       <ConformanceMode>true</ConformanceMode>
  59.       <PrecompiledHeader>NotUsing</PrecompiledHeader>
  60.       <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
  61.     </ClCompile>
  62.     <Link>
  63.       <SubSystem>Windows</SubSystem>
  64.       <GenerateDebugInformation>true</GenerateDebugInformation>
  65.       <EnableUAC>false</EnableUAC>
  66.     </Link>
  67.   </ItemDefinitionGroup>
  68.   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  69.     <ClCompile>
  70.       <WarningLevel>Level3</WarningLevel>
  71.       <FunctionLevelLinking>true</FunctionLevelLinking>
  72.       <IntrinsicFunctions>true</IntrinsicFunctions>
  73.       <SDLCheck>true</SDLCheck>
  74.       <PreprocessorDefinitions>NDEBUG;X64ASMSAMPLE_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  75.       <ConformanceMode>true</ConformanceMode>
  76.       <PrecompiledHeader>NotUsing</PrecompiledHeader>
  77.       <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
  78.     </ClCompile>
  79.     <Link>
  80.       <SubSystem>Windows</SubSystem>
  81.       <EnableCOMDATFolding>true</EnableCOMDATFolding>
  82.       <OptimizeReferences>true</OptimizeReferences>
  83.       <GenerateDebugInformation>true</GenerateDebugInformation>
  84.       <EnableUAC>false</EnableUAC>
  85.     </Link>
  86.   </ItemDefinitionGroup>
  87.   <ItemGroup>
  88.     <ClCompile Include="dllmain.cpp" />
  89.   </ItemGroup>
  90.   <ItemGroup>
  91.     <MASM Include="Assembly.asm">
  92.       <FileType>Document</FileType>
  93.     </MASM>
  94.   </ItemGroup>
  95.   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  96.   <ImportGroup Label="ExtensionTargets">
  97.     <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
  98.   </ImportGroup>
  99. </Project>
複製代碼
X64AsmSample.vcxproj.filters
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3.   <ItemGroup>
  4.     <Filter Include="Source Files">
  5.       <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
  6.       <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
  7.     </Filter>
  8.     <Filter Include="Header Files">
  9.       <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
  10.       <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
  11.     </Filter>
  12.     <Filter Include="Resource Files">
  13.       <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
  14.       <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
  15.     </Filter>
  16.   </ItemGroup>
  17.   <ItemGroup>
  18.     <ClCompile Include="dllmain.cpp">
  19.       <Filter>Source Files</Filter>
  20.     </ClCompile>
  21.   </ItemGroup>
  22.   <ItemGroup>
  23.     <MASM Include="Assembly.asm">
  24.       <Filter>Source Files</Filter>
  25.     </MASM>
  26.   </ItemGroup>
  27. </Project>
複製代碼
已有 11 人評分楓幣 威望 骰子 GP 收起 理由
阿斯頓的 + 1 太神啦~!
qqwwerwe + 1 + 1 + 1 有神快拜!
willyyyyy + 1 + 1 + 1
依然卡卡 + 1 有神快拜!
dilelomo23 + 2 + 1 + 1 興奮到模糊
gnefgnibOvO + 1 + 1 + 1 有神快拜!
Anonymous_Leo + 20 + 2 + 1 + 2 有神快拜!
bflt123 + 1 + 1 + 1 太神啦!
麗麗 + 2 + 1 + 1 太神啦!
rhg59321 + 2 太神啦!

總評分: 楓幣 + 49  威望 + 3  骰子 + 10  GP + 10   查看全部評分

收藏收藏1 推6 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
頭像被屏蔽

17

主題

0

好友

114

積分

禁止訪問

UID
191744
帖子
155
主題
17
精華
0
積分
114
楓幣
18076
威望
109
存款
0
贊助金額
0
推廣
0
GP
18
閱讀權限
0
性別
在線時間
96 小時
註冊時間
2017-6-13
最後登入
2022-7-28

Android勳章

2
發表於 2022-2-27 16:12:42 |只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽,只有管理員或有管理權限的成員可見
請問大大怎麼使用
不懂 嗚嗚

點評

kkmomo  "官方網站"  發表於 2022-2-28 14:48
kkmomo  用 vc++ 自己編譯成 dll 檔,官方網店跟網路上都有很多教學文,我連sln都貼了,我想不會有什麼問題  發表於 2022-2-28 14:47
簽名被屏蔽
點評回覆

使用道具 舉報

3

主題

0

好友

235

積分

初級贊助會員

Rank: 5Rank: 5

UID
264726
帖子
95
主題
3
精華
0
積分
235
楓幣
1662
威望
105
存款
1500
贊助金額
500
推廣
0
GP
307
閱讀權限
60
性別
保密
在線時間
93 小時
註冊時間
2019-6-14
最後登入
2023-12-8

Apple勳章 2019年紀念勳章 太陽勳章 神手勳章 VIP會員 高級客戶 音樂勳章 性別(男) 幼兒勳章 懶人勳章 2020年紀念勳章 積分勳章 2021年紀念勳章

3
發表於 2022-2-27 23:00:10 |只看該作者
太强了
點評回覆

使用道具 舉報

18

主題

0

好友

117

積分

註冊會員

Rank: 2

UID
98470
帖子
33
主題
18
精華
0
積分
117
楓幣
1710
威望
96
存款
0
贊助金額
0
推廣
0
GP
30
閱讀權限
20
性別
保密
在線時間
428 小時
註冊時間
2015-4-9
最後登入
2024-3-22

2022端午節紀念勳章

4
發表於 2022-3-14 21:55:22 |只看該作者
大大 其他数据怎么改
點評回覆

使用道具 舉報

76

主題

2

好友

293

積分

初級贊助會員

Rank: 5Rank: 5

UID
245214
帖子
618
主題
76
精華
0
積分
293
楓幣
2212
威望
127
存款
0
贊助金額
650
推廣
0
GP
4
閱讀權限
60
在線時間
77 小時
註冊時間
2018-8-19
最後登入
2024-4-5

Android勳章 懶人勳章 太陽勳章 神手勳章 發帖達人 2020年紀念勳章 幼兒勳章 2020端午節紀念勳章 2021年紀念勳章 VIP會員 高級客戶 積分勳章 2023年紀念勳章

5
發表於 2022-3-20 12:52:22 |只看該作者
謝謝大大用心推!
本人因生活極度貧困,
長期代寫小學寒、暑假作業,替小學生欺負其他同學,
常駐:『每日答題系列集中串』~(不一定日更,善用google, 回文40%)


內建迴轉~放U吐功能 歡迎拍打餵食

夢想開拉麵店!!


----
點評回覆

使用道具 舉報

0

主題

0

好友

23

積分

新手上路

Rank: 1

UID
19319
帖子
65
主題
0
精華
0
積分
23
楓幣
919
威望
16
存款
0
贊助金額
0
推廣
0
GP
150
閱讀權限
10
性別
保密
在線時間
143 小時
註冊時間
2012-12-29
最後登入
2022-12-11

2018端午節紀念勳章

6
發表於 2022-3-20 13:36:27 |只看該作者
請問這是需要使用DLL注入的方式嗎?
DLL注入會失敗
目前可以編譯完成,但不知道要怎麼使用
點評回覆

使用道具 舉報

19

主題

4

好友

141

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
217546
帖子
158
主題
19
精華
0
積分
141
楓幣
71055
威望
133
存款
212
贊助金額
0
推廣
0
GP
522
閱讀權限
100
性別
保密
在線時間
165 小時
註冊時間
2017-12-31
最後登入
2024-4-20

Apple勳章 2023中秋節紀念勳章

7
發表於 2022-3-21 13:42:43 |只看該作者
建議 使用intel c++

點評

yutsaihsieh  支援x64 __asm就是好用  發表於 2022-3-21 15:22
點評回覆

使用道具 舉報

0

主題

0

好友

23

積分

新手上路

Rank: 1

UID
19319
帖子
65
主題
0
精華
0
積分
23
楓幣
919
威望
16
存款
0
贊助金額
0
推廣
0
GP
150
閱讀權限
10
性別
保密
在線時間
143 小時
註冊時間
2012-12-29
最後登入
2022-12-11

2018端午節紀念勳章

8
發表於 2022-3-21 17:20:23 |只看該作者
strays 發表於 2022-3-21 13:42
建議 使用intel c++

怎麼說呢?? 是有比較好debug 還是說有其方便之處
平常都是用visual studio 寫 C++ & C#
VSC++ 加入 masm 不是也可以編寫嗎?
[發帖際遇]: sky40112 深信「貨出得去,人進得來,高雄發大財」,故獲得收益 2 楓幣 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

19

主題

4

好友

141

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
217546
帖子
158
主題
19
精華
0
積分
141
楓幣
71055
威望
133
存款
212
贊助金額
0
推廣
0
GP
522
閱讀權限
100
性別
保密
在線時間
165 小時
註冊時間
2017-12-31
最後登入
2024-4-20

Apple勳章 2023中秋節紀念勳章

9
發表於 2022-3-21 17:33:21 來自手機 |只看該作者
測試下intel c++
點評回覆

使用道具 舉報

5

主題

0

好友

74

積分

新手上路

Rank: 1

UID
104172
帖子
84
主題
5
精華
0
積分
74
楓幣
3029
威望
69
存款
100
贊助金額
0
推廣
3
GP
101
閱讀權限
10
性別
保密
在線時間
91 小時
註冊時間
2015-6-10
最後登入
2024-4-10

Android勳章

10
發表於 2022-3-24 22:16:24 |只看該作者
還是看不懂 求高手來個教學
[發帖際遇]: Happy0626 想向「亂親阿翔」學習「友情界線」,花費學費 1 楓幣 並購入一台X3汽車 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

0

主題

0

好友

0

積分

新手上路

Rank: 1

UID
340210
帖子
3
主題
0
精華
0
積分
0
楓幣
21
威望
0
存款
0
贊助金額
0
推廣
0
GP
0
閱讀權限
10
性別
保密
在線時間
1 小時
註冊時間
2022-4-13
最後登入
2022-4-20
11
發表於 2022-4-18 20:34:23 |只看該作者
太专业了.有点弄不来怎么玩
[發帖際遇]: huhai122 雖然沒有「哈味」,但全身卻散發出「魯」味,獲得路人同情施捨 1 楓幣 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

59

主題

9

好友

119

積分

技術師

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
45362
帖子
491
主題
59
精華
0
積分
119
楓幣
3150
威望
87
存款
0
贊助金額
0
推廣
0
GP
267
閱讀權限
100
性別
保密
在線時間
638 小時
註冊時間
2014-1-29
最後登入
2024-2-3

Android勳章 Apple勳章

12
發表於 2022-6-19 16:01:19 |只看該作者
sky40112 發表於 2022-3-21 17:20
怎麼說呢?? 是有比較好debug 還是說有其方便之處
平常都是用visual studio 寫 C++ & C#
VSC++ 加入 masm  ...

inline asm 方便
點評回覆

使用道具 舉報

0

主題

0

好友

1

積分

新手上路

Rank: 1

UID
351308
帖子
11
主題
0
精華
0
積分
1
楓幣
16
威望
0
存款
0
贊助金額
0
推廣
0
GP
0
閱讀權限
10
性別
保密
在線時間
10 小時
註冊時間
2022-7-6
最後登入
2022-7-22
13
發表於 2022-7-9 19:08:00 |只看該作者
  1. #define FIELD_OFFSET(type, field)    ((LONG)(LONG_PTR)&(((type *)0)->field))
複製代碼
令人眼前一亮
[發帖際遇]: t812206236 樂於助人,獎勵 1 楓幣 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

0

主題

0

好友

0

積分

新手上路

Rank: 1

UID
353096
帖子
5
主題
0
精華
0
積分
0
楓幣
-4
威望
0
存款
0
贊助金額
0
推廣
0
GP
0
閱讀權限
10
性別
保密
在線時間
0 小時
註冊時間
2022-7-20
最後登入
2022-7-20
14
發表於 2022-7-20 22:31:36 |只看該作者
感謝分享
已有 1 人評分楓幣 收起 理由
System -10 違反版規十(系統自動鎖定)

總評分: 楓幣 -10   查看全部評分

點評回覆

使用道具 舉報

3

主題

2

好友

11

積分

新手上路

Rank: 1

UID
195287
帖子
24
主題
3
精華
0
積分
11
楓幣
-23
威望
10
存款
0
贊助金額
0
推廣
0
GP
3
閱讀權限
10
性別
保密
在線時間
22 小時
註冊時間
2017-7-6
最後登入
2023-1-15
15
發表於 2023-1-5 23:54:03 |只看該作者
實用
[發帖際遇]: ysl86294 透過「FB直播」賣假精品,大賺 1 楓幣 幸運榜 / 衰神榜
點評回覆

使用道具 舉報

高級模式
B Color Image Link Quote Code Smilies

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-4-20 21:40

回頂部