久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Cpp2IL自定義處理層開發(fā)指南:從原理到實戰(zhàn)逆向分析

Cpp2IL自定義處理層開發(fā)指南:從原理到實戰(zhàn)逆向分析 1. 項目概述為什么我們需要自定義Cpp2IL處理層如果你接觸過Unity游戲的逆向分析或者研究過使用IL2CPP技術(shù)編譯的.NET程序那么Cpp2IL這個工具對你來說應(yīng)該不陌生。它就像一個“翻譯官”能把IL2CPP編譯后生成的C偽代碼和元數(shù)據(jù)重新轉(zhuǎn)換回我們更熟悉的.NET中間語言IL和程序集。但很多時候這個“翻譯官”的翻譯結(jié)果并不完美或者缺少了我們特別關(guān)心的某些信息。比如你可能想追蹤某個特定游戲?qū)ο蟮膬?nèi)存分配路徑或者想自動識別并標(biāo)注出所有與網(wǎng)絡(luò)通信相關(guān)的方法調(diào)用。這時候標(biāo)準(zhǔn)Cpp2IL的輸出就顯得有些“力不從心”了。這就是自定義處理層Custom Processing Layer的價值所在。你可以把它理解為給Cpp2IL這個翻譯官配備的“專屬插件”或“分析模塊”。它允許你在Cpp2IL的核心逆向流程中插入你自己的分析邏輯。當(dāng)Cpp2IL解析完一個方法、一個類型或者整個程序集后你的處理層可以立刻介入對解析出的數(shù)據(jù)進行二次加工、深度分析或者提取出你關(guān)心的特定模式。這不再是簡單地在Cpp2IL運行完后用另一個腳本去處理它的輸出文件而是深度集成在逆向流程內(nèi)部能訪問到最原始、最豐富的上下文信息。我最初開發(fā)自定義處理層是為了解決一個具體問題在一款大型MMO游戲的逆向中需要快速定位所有涉及角色屬性如攻擊力、防御力計算和更新的代碼邏輯。手動在成千上萬個方法里翻找效率極低且容易遺漏。通過開發(fā)一個專注于“屬性訪問分析”的自定義處理層我成功實現(xiàn)了自動化標(biāo)記將排查范圍從數(shù)萬縮小到了幾十個高度可疑的方法效率提升了幾個數(shù)量級。這個經(jīng)歷讓我深刻體會到掌握自定義處理層開發(fā)是從“使用工具”到“駕馭工具”的關(guān)鍵一步能讓你在面對復(fù)雜、獨特的逆向需求時擁有前所未有的靈活性和控制力。2. 核心概念與架構(gòu)解析處理層如何嵌入Cpp2IL工作流在動手寫代碼之前我們必須先理解Cpp2IL的內(nèi)部工作流程以及處理層在這個流程中的確切位置。這就像你要給一輛汽車加裝渦輪總得先知道發(fā)動機的進氣歧管在哪兒。2.1 Cpp2IL的核心逆向流程Cpp2IL的工作大致可以分為幾個階段元數(shù)據(jù)加載讀取IL2CPP生成的global-metadata.dat文件重建類型、方法、字段等基礎(chǔ)信息。二進制分析分析IL2CPP編譯后的二進制文件如GameAssembly.dll將機器碼或C偽代碼與元數(shù)據(jù)關(guān)聯(lián)起來。IL代碼生成基于關(guān)聯(lián)關(guān)系嘗試將底層的操作邏輯“翻譯”回.NET IL指令。程序集輸出將生成的IL代碼和元數(shù)據(jù)打包成標(biāo)準(zhǔn)的.NET程序集DLL文件。整個過程是一個復(fù)雜的管道Pipeline。而處理層就是掛載在這個管道上的“過濾器”或“處理器”。Cpp2IL定義了一系列關(guān)鍵的“處理階段”你的自定義層可以在這些階段被調(diào)用。2.2 處理層的類型與執(zhí)行時機Cpp2IL的處理層主要分為兩大類對應(yīng)不同的執(zhí)行時機和作用范圍第一類每程序集處理層Per-Assembly Processing Layer這類處理層在整個程序集Assembly級別的處理完成后被調(diào)用。它適合進行全局性的、跨類型的分析。例如重命名優(yōu)化根據(jù)某些規(guī)則批量重命名所有類型、方法、字段使其更具可讀性。全局模式掃描掃描整個程序集找出所有使用了特定API如Unity的GameObject.Find的方法并打上標(biāo)記。統(tǒng)計分析統(tǒng)計程序集中虛方法比例、接口實現(xiàn)數(shù)量等元信息。第二類每方法處理層Per-Method Processing Layer這類處理層在每個單獨的方法Method被處理完成后被調(diào)用。這是最常用、最強大的類型因為你可以在最細(xì)粒度上操作。例如指令流分析分析一個方法內(nèi)的IL指令序列識別特定模式如屬性設(shè)置器、事件訂閱??刂屏鲌DCFG構(gòu)建基于生成的IL為方法構(gòu)建控制流圖用于更復(fù)雜的路徑分析。內(nèi)聯(lián)與優(yōu)化嘗試對簡單的IL模式進行內(nèi)聯(lián)或等價替換簡化輸出代碼。注意處理層接收到的“方法”對象已經(jīng)包含了Cpp2IL初步還原出的IL指令流、本地變量表、異常處理塊等完整信息。但此時的IL可能還比較“原始”包含一些Cpp2IL特有的臨時變量或占位符指令。2.3 處理層的注冊與執(zhí)行順序多個處理層可以同時存在它們按照注冊的順序依次執(zhí)行。這意味著你需要考慮處理層之間的依賴關(guān)系。例如一個負(fù)責(zé)“重命名”的處理層應(yīng)該在一個負(fù)責(zé)“基于名稱的模式分析”的處理層之前運行否則分析層可能無法匹配到正確的名稱。Cpp2IL通過命令行參數(shù)來加載處理層。你需要將編譯好的處理層DLL文件放在指定位置并通過--additional-processing-assembly參數(shù)來指定。處理層DLL本身就是一個標(biāo)準(zhǔn)的.NET庫它通過實現(xiàn)特定的接口如IPerAssemblyPostProcessingLayer來聲明自己的功能。理解了這些我們就知道該從哪里“下刀”了。接下來我們將從零開始搭建開發(fā)環(huán)境并創(chuàng)建第一個處理層。3. 開發(fā)環(huán)境搭建與項目初始化工欲善其事必先利其器。開發(fā)Cpp2IL處理層本質(zhì)上是在開發(fā)一個.NET庫它需要引用Cpp2IL的核心庫。這里我推薦使用.NET 6 SDK因為它具有更好的跨平臺性和性能。IDE方面Visual Studio 2022、JetBrains Rider或VS Code with C# Dev Kit都是絕佳選擇。3.1 創(chuàng)建項目與引用核心庫首先我們創(chuàng)建一個新的類庫項目。打開終端執(zhí)行以下命令dotnet new classlib -n MyCpp2ILProcessor -f net6.0 cd MyCpp2ILProcessor接下來是最關(guān)鍵的一步獲取并引用Cpp2IL的核心庫。你無法通過NuGet直接安裝因為Cpp2IL的核心庫并未發(fā)布到公共倉庫。你需要手動獲取。方法一推薦確保版本匹配從Cpp2IL的GitHub倉庫https://github.com/SamboyCoding/Cpp2IL克隆或下載源代碼。使用你喜歡的IDE打開Cpp2IL的解決方案.sln文件。找到名為Cpp2IL.Core的項目并單獨編譯它。你可以在Release配置下使用dotnet build Cpp2IL.Core.csproj -c Release。編譯成功后在Cpp2IL.Core/bin/Release/net6.0或?qū)?yīng)框架目錄下找到Cpp2IL.Core.dll文件。在你的處理層項目目錄下創(chuàng)建一個libs文件夾將Cpp2IL.Core.dll復(fù)制進去。編輯你的處理層項目的.csproj文件添加引用ItemGroup Reference IncludeCpp2IL.Core HintPathlibs\Cpp2IL.Core.dll/HintPath /Reference /ItemGroup方法二使用已發(fā)布的版本 如果你下載了Cpp2IL的發(fā)布版如Cpp2IL-[version]-Windows.zip在解壓后的文件夾里通常也會包含Cpp2IL.Core.dll。同樣地將其復(fù)制到你的libs目錄并引用。實操心得強烈建議將你使用的Cpp2IL核心DLL版本與你的處理層項目一起納入版本控制如Git。這能保證任何克隆你項目的人都能使用完全相同的依賴版本進行編譯避免因Cpp2IL版本更新導(dǎo)致接口不兼容的問題。3.2 實現(xiàn)第一個“Hello World”處理層讓我們先實現(xiàn)一個最簡單的每方法處理層它會在控制臺輸出每個處理的方法名以此驗證我們的環(huán)境是否工作正常。首先安裝一個必要的NuGet包用于命令行參數(shù)解析Cpp2IL的處理層接口會用到dotnet add package McMaster.Extensions.CommandLineUtils然后創(chuàng)建我們的處理層類MethodTracerLayer.csusing System; using Cpp2IL.Core.Api; using Cpp2IL.Core.Model.Contexts; using McMaster.Extensions.CommandLineUtils; // 1. 為我們的處理層定義一個命令行選項可選用于配置 public class MethodTracerOptions { [Option(-f|--filter NAME_PATTERN, Description Only trace methods whose name contains this pattern.)] public string? FilterPattern { get; set; } } // 2. 實現(xiàn)每方法處理層接口 [Command(method-tracer, Description Traces and logs processed methods.)] public class MethodTracerLayer : CommandLineApplication, IPerMethodPostProcessingLayer { private readonly MethodTracerOptions _options new(); public MethodTracerLayer() { // 配置命令行參數(shù)綁定 this.OnExecute(() { /* 命令執(zhí)行邏輯由Cpp2IL調(diào)用 */ }); this.ConfigureFromMethodTracerOptions(_options); } // 3. 實現(xiàn)接口屬性處理層的唯一標(biāo)識和描述 public string Id method-tracer; public string Name Method Tracing Layer; public string Description Logs the name of every method processed by Cpp2IL.; // 4. 實現(xiàn)核心方法在每個方法處理后被調(diào)用 public void Process(MethodAnalysisContext context) { // 獲取方法名 string methodName context.Method.Name; // 如果設(shè)置了過濾器則進行匹配 if (!string.IsNullOrEmpty(_options.FilterPattern) !methodName.Contains(_options.FilterPattern, StringComparison.OrdinalIgnoreCase)) { return; // 不匹配過濾條件跳過 } // 輸出到控制臺 Console.WriteLine($[MethodTracer] Processed: {methodName}); // 注意此時你可以訪問 context.Method 的所有信息 // 包括它的IL指令 (context.Method.MethodBody?.Instructions), // 所屬類型 (context.Method.DeclaringType) 等。 // 但在這個簡單示例中我們只打印名字。 } // 5. 可選實現(xiàn)初始化方法在開始處理任何方法前調(diào)用一次 public void Init(CommandLineApplication app) { Console.WriteLine($[MethodTracer] Initialized. Filter: {_options.FilterPattern ?? (none)}); } }3.3 編譯與集成測試編譯處理層在項目根目錄運行dotnet build -c Release。定位輸出DLL編譯生成的MyCpp2ILProcessor.dll位于bin/Release/net6.0/目錄下。同時確保其依賴項如Cpp2IL.Core.dll和McMaster.Extensions.CommandLineUtils.dll也在同一目錄或者能被Cpp2IL主程序找到。運行Cpp2IL并加載處理層 假設(shè)你的Cpp2IL主程序是Cpp2IL.exe目標(biāo)Unity游戲文件是GameAssembly.dll元數(shù)據(jù)是global-metadata.dat。運行命令如下.\Cpp2IL.exe --game-path . --exe-name GameAssembly.dll --metadata-path global-metadata.dat --additional-processing-assembly path\to\MyCpp2ILProcessor.dll如果你為處理層添加了自定義參數(shù)可以這樣使用.\Cpp2IL.exe ... --additional-processing-assembly path\to\MyCpp2ILProcessor.dll --method-tracer --filter Update這個命令會只輸出方法名中包含“Update”的方法。如果一切順利你將在Cpp2IL的標(biāo)準(zhǔn)輸出中看到大量[MethodTracer] Processed: ...的日志行這證明你的自定義處理層已經(jīng)成功集成并運行注意事項處理層的輸出如Console.WriteLine會與Cpp2IL自身的輸出混在一起。對于復(fù)雜的處理層建議考慮將日志寫入獨立文件或者使用更高級的日志庫如Microsoft.Extensions.Logging并配置不同的輸出通道便于后續(xù)分析。4. 實戰(zhàn)開發(fā)一個“屬性訪問分析”處理層現(xiàn)在我們來點真格的。假設(shè)我們要分析一個Unity游戲目標(biāo)是找出所有讀取或?qū)懭胩囟ㄓ螒驅(qū)嶓w屬性的代碼。例如找到所有修改玩家“血量”Health或“金幣”Gold的地方。這在經(jīng)濟系統(tǒng)分析、漏洞挖掘或外掛檢測邏輯逆向時非常有用。我們將創(chuàng)建一個更復(fù)雜的每方法處理層它不僅打印信息還會分析IL指令流識別字段訪問和屬性調(diào)用。4.1 設(shè)計目標(biāo)與思路我們的PropertyAccessAnalyzerLayer需要實現(xiàn)以下功能可配置目標(biāo)允許用戶通過命令行參數(shù)指定要追蹤的字段或?qū)傩悦Q支持模糊匹配。IL指令分析在每個方法中掃描其IL指令流。模式識別對于實例字段識別ldfld(加載字段)、stfld(存儲字段) 指令。對于靜態(tài)字段識別ldsfld、stsfld指令。對于屬性識別call或callvirt指令且調(diào)用的方法是屬性的get_或set_訪問器。上下文關(guān)聯(lián)當(dāng)發(fā)現(xiàn)訪問時記錄訪問類型讀/寫、所在方法、所屬類以及字段/屬性的完整名稱。結(jié)果輸出在處理完所有程序集后將分析結(jié)果以結(jié)構(gòu)化的格式如JSON或CSV輸出到文件。4.2 核心代碼實現(xiàn)以下是該處理層的核心部分代碼using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; using Cpp2IL.Core.Api; using Cpp2IL.Core.Model.Contexts; using Cpp2IL.Core.Model.CustomAttributes; using Cpp2IL.Core.InstructionSets; using McMaster.Extensions.CommandLineUtils; public class PropertyAccessAnalyzerOptions { [Option(-t|--target NAMES, Description Comma-separated list of field/property names to track (supports * wildcard).)] public string TargetNames { get; set; } ; [Option(-o|--output PATH, Description Path to the output JSON file.)] public string OutputPath { get; set; } ./property_access_report.json; } [Command(prop-analyzer, Description Analyzes access to specific fields and properties.)] public class PropertyAccessAnalyzerLayer : CommandLineApplication, IPerMethodPostProcessingLayer { private class AccessRecord { public string AccessType { get; set; } // Read or Write public string MemberType { get; set; } // Field or Property public string MemberFullName { get; set; } // e.g., Player::health public string MethodContainingAccess { get; set; } // e.g., Player::TakeDamage public string? InstructionOffset { get; set; } // IL offset for precise location } private readonly PropertyAccessAnalyzerOptions _options new(); private readonly ListAccessRecord _accessRecords new(); private Liststring _targetPatterns new(); public PropertyAccessAnalyzerLayer() { this.OnExecute(() { }); this.ConfigureFromPropertyAccessAnalyzerOptions(_options); } public string Id prop-analyzer; public string Name Property Access Analyzer; public string Description Finds and logs reads/writes to specified fields and properties.; public void Init(CommandLineApplication app) { // 解析目標(biāo)模式 if (!string.IsNullOrEmpty(_options.TargetNames)) { _targetPatterns _options.TargetNames.Split(,, StringSplitOptions.RemoveEmptyEntries) .Select(s s.Trim()) .ToList(); Console.WriteLine($[PropAnalyzer] Tracking targets: {string.Join(, , _targetPatterns)}); } else { Console.WriteLine([PropAnalyzer] Warning: No target names specified. Layer will do nothing.); } } public void Process(MethodAnalysisContext context) { if (!_targetPatterns.Any()) return; if (context.Method.MethodBody?.Instructions null) return; var instructions context.Method.MethodBody.Instructions; string methodFullName ${context.Method.DeclaringType?.FullName}::{context.Method.Name}; for (int i 0; i instructions.Count; i) { var instr instructions[i]; string? memberName null; string? memberType null; string? accessType null; // 1. 檢查字段訪問指令 if (instr is IFieldInstruction fieldInstr fieldInstr.Field ! null) { memberName fieldInstr.Field.Name; memberType Field; // 判斷是加載讀還是存儲寫 if (instr.OpCode.Name.Contains(ld)) accessType Read; else if (instr.OpCode.Name.Contains(st)) accessType Write; } // 2. 檢查方法調(diào)用指令可能是屬性訪問器 else if (instr is ICallInstruction callInstr callInstr.Method ! null) { string methodName callInstr.Method.Name; // 檢查是否是屬性訪問器get_XXX 或 set_XXX if (methodName.StartsWith(get_)) { memberName methodName.Substring(4); // 去掉 get_ memberType Property; accessType Read; } else if (methodName.StartsWith(set_)) { memberName methodName.Substring(4); // 去掉 set_ memberType Property; accessType Write; } } // 如果識別出成員訪問且匹配目標(biāo)模式 if (!string.IsNullOrEmpty(memberName) IsTargetMember(memberName)) { _accessRecords.Add(new AccessRecord { AccessType accessType!, MemberType memberType!, MemberFullName ${context.Method.DeclaringType?.FullName}::{memberName}, MethodContainingAccess methodFullName, InstructionOffset $0x{i:X4} }); } } } private bool IsTargetMember(string memberName) { foreach (var pattern in _targetPatterns) { // 簡單的通配符匹配支持結(jié)尾* if (pattern.EndsWith(*)) { if (memberName.StartsWith(pattern.TrimEnd(*), StringComparison.OrdinalIgnoreCase)) return true; } else if (memberName.Equals(pattern, StringComparison.OrdinalIgnoreCase)) { return true; } } return false; } // 新增實現(xiàn)一個在全部處理完成后被調(diào)用的方法需要借助其他機制這里演示一種方式 // 注意標(biāo)準(zhǔn)IPerMethodPostProcessingLayer接口沒有PostProcess。我們可以通過實現(xiàn)IDisposable或監(jiān)聽事件來模擬。 // 更規(guī)范的做法是同時實現(xiàn)IPerAssemblyPostProcessingLayer在PostProcess中輸出。 // 這里為了簡化我們添加一個Finish方法并在Cpp2IL運行后手動調(diào)用需修改Cpp2IL代碼不推薦。 // 替代方案我們將記錄存儲在內(nèi)存列表中并在程序集處理層或通過外部觸發(fā)來輸出。 // 本例中我們修改為同時實現(xiàn)IPerAssemblyPostProcessingLayer。 } // 為了在最后輸出報告我們讓同一個類實現(xiàn)兩個接口需要Cpp2IL支持或拆分為兩個層。 // 更清晰的架構(gòu)是拆分成兩個協(xié)同工作的層一個分析方法一個輸出報告。 // 但為了示例完整我們展示一個簡化版在每方法層中收集數(shù)據(jù)在程序集層中輸出。 [Command(prop-analyzer-assembly, Description Assembly-level coordinator for property analyzer.)] public class PropertyAccessAnalyzerAssemblyLayer : CommandLineApplication, IPerAssemblyPostProcessingLayer { // 假設(shè)我們能訪問到同一個實例的數(shù)據(jù)實際中需要通過靜態(tài)變量或依賴注入共享狀態(tài)這里簡化 // 更好的設(shè)計是使用一個獨立的服務(wù)類來存儲共享數(shù)據(jù)。 private static readonly ListPropertyAccessAnalyzerLayer.AccessRecord SharedRecords new(); public string Id prop-analyzer-assembly; public string Name Property Access Analyzer (Assembly Output); public string Description Outputs the analysis report after all processing.; public void PostProcess(ApplicationAnalysisContext context) { string outputPath ./property_access_report.json; // 應(yīng)從配置讀取 if (SharedRecords.Any()) { var json JsonSerializer.Serialize(SharedRecords, new JsonSerializerOptions { WriteIndented true }); File.WriteAllText(outputPath, json); Console.WriteLine($[PropAnalyzer] Report generated: {outputPath} ({SharedRecords.Count} records)); } else { Console.WriteLine([PropAnalyzer] No matching field/property accesses found.); } } // 提供一個靜態(tài)方法供方法層添加記錄 public static void AddRecord(PropertyAccessAnalyzerLayer.AccessRecord record) SharedRecords.Add(record); }然后需要修改PropertyAccessAnalyzerLayer.Process方法在添加記錄時調(diào)用// 在 Process 方法內(nèi)部的 _accessRecords.Add(...) 處替換為 PropertyAccessAnalyzerAssemblyLayer.AddRecord(new AccessRecord { ... });4.3 使用與結(jié)果分析編譯并集成這兩個處理層后運行Cpp2IL.\Cpp2IL.exe --game-path . --exe-name GameAssembly.dll --metadata-path global-metadata.dat --additional-processing-assembly path\to\MyCpp2ILProcessor.dll --prop-analyzer --target health,Gold,m_* --prop-analyzer-assembly這個命令會追蹤所有名為“health”、“Gold”的成員以及所有以“m_”開頭的成員這是Unity中常見的私有字段命名約定。運行結(jié)束后會在當(dāng)前目錄生成一個property_access_report.json文件。內(nèi)容大致如下[ { AccessType: Write, MemberType: Field, MemberFullName: Player::m_health, MethodContainingAccess: Player::TakeDamage, InstructionOffset: 0x001A }, { AccessType: Read, MemberType: Property, MemberFullName: Inventory::Gold, MethodContainingAccess: UI::UpdateGoldDisplay, InstructionOffset: 0x0005 } ]這份報告立刻告訴你在Player::TakeDamage方法的IL偏移0x001A處寫入了m_health字段。在UI::UpdateGoldDisplay方法的IL偏移0x0005處讀取了Inventory::Gold屬性。你可以根據(jù)這個報告快速在反編譯工具如dnSpy、ILSpy中定位到具體的代碼位置極大地縮小了分析范圍。實操心得在實際逆向中字段名可能被混淆。此時--target參數(shù)可以結(jié)合通配符使用或者你的處理層可以變得更智能例如通過分析字段的類型如果是int且名稱類似*Health*、或通過分析其被哪些已知方法如Heal()、Damage()訪問來動態(tài)推斷其角色。這需要更復(fù)雜的啟發(fā)式規(guī)則但處理層的框架為此提供了可能。5. 高級技巧與性能優(yōu)化當(dāng)你開始編寫更復(fù)雜的處理層時性能和穩(wěn)定性就成為必須考慮的問題。一個未經(jīng)優(yōu)化的處理層可能會讓Cpp2IL的逆向過程慢上數(shù)倍甚至數(shù)十倍。5.1 性能優(yōu)化策略減少不必要的對象分配在Process方法中避免在循環(huán)內(nèi)創(chuàng)建大量臨時字符串或?qū)ο蟆@缟厦娴氖纠衜ethodFullName可以在循環(huán)外計算一次。對于復(fù)雜的字符串操作考慮使用StringBuilder。使用高效的集合與查找_targetPatterns的匹配如果很頻繁可以考慮將模式預(yù)編譯為正則表達(dá)式或使用HashSetstring進行精確匹配。對于模糊匹配可以考慮使用Trie樹等數(shù)據(jù)結(jié)構(gòu)。選擇性啟用不是所有方法都需要分析??梢酝ㄟ^命令行參數(shù)讓用戶指定要分析的命名空間、類名正則或者在Process方法開頭進行快速判斷if (!context.Method.DeclaringType?.FullName?.StartsWith(GameLogic.) ?? true) { return; // 只分析 GameLogic 命名空間下的方法 }并行處理考慮Cpp2IL自身可能并行處理多個方法。確保你的處理層是線程安全的。如果使用共享狀態(tài)如我們示例中的靜態(tài)列表必須使用鎖lock語句或線程安全集合ConcurrentBagT。private static readonly ConcurrentBagAccessRecord SharedRecords new(); // 添加記錄時直接調(diào)用 SharedRecords.Add(record)它是線程安全的。5.2 處理層間的通信與協(xié)作有時一個分析任務(wù)需要多個處理層協(xié)作完成。例如一個層負(fù)責(zé)重命名另一個層負(fù)責(zé)基于新名稱進行分析。它們之間需要共享數(shù)據(jù)。通過文件系統(tǒng)一個層將中間結(jié)果寫入臨時文件另一個層讀取。簡單但效率低且需要處理文件鎖和清理。通過內(nèi)存共享靜態(tài)變量如上例所示使用靜態(tài)類或單例來共享數(shù)據(jù)。這是最高效的方式但必須嚴(yán)格管理線程安全和生命周期。通過Cpp2IL上下文高級ApplicationAnalysisContext或TypeAnalysisContext等對象可能提供存儲自定義數(shù)據(jù)的空間如果Cpp2IL API支持。這需要查閱最新版的Cpp2IL源碼或文檔。5.3 錯誤處理與日志處理層中的異常如果未被捕獲會導(dǎo)致整個Cpp2IL進程崩潰。務(wù)必進行健壯的錯誤處理。public void Process(MethodAnalysisContext context) { try { // 你的核心處理邏輯 } catch (Exception ex) { // 記錄到獨立日志文件避免污染Cpp2IL主輸出 File.AppendAllText(processor_errors.log, $[ERROR] in {context.Method}: {ex}\n); // 或者如果你希望繼續(xù)運行可以只記錄并跳過當(dāng)前方法 // Console.Error.WriteLine($[{Id}] Error processing {context.Method}: {ex.Message}); } }同時為你的處理層提供不同級別的日志輸出如--verbose、--quiet參數(shù)方便調(diào)試和部署。6. 調(diào)試自定義處理層調(diào)試是開發(fā)過程中不可或缺的一環(huán)。調(diào)試一個運行在Cpp2IL進程內(nèi)的處理層與調(diào)試普通應(yīng)用略有不同。方法一附加到進程Attach to Process在IDE中設(shè)置好你的處理層項目。正常啟動Cpp2IL命令行并加載你的處理層DLL。在Cpp2IL開始執(zhí)行關(guān)鍵逆向步驟前它會有一些初始化輸出。在初始化輸出后、大量處理開始前快速切換到你的IDE。在IDE中選擇“調(diào)試” - “附加到進程”。在進程列表中找到Cpp2IL.exe進程或dotnet進程如果Cpp2IL是.NET發(fā)布版本并附加。在你的處理層代碼中設(shè)置斷點。當(dāng)Cpp2IL執(zhí)行到你的處理層代碼時斷點將會命中。這個方法需要手速快因為Cpp2IL處理小型程序集可能很快。對于大型游戲初始化時間較長給你留出了足夠的窗口期。方法二使用調(diào)試器啟動Debugger.Launch在你的處理層代碼入口如Init方法處插入以下代碼#if DEBUG if (!System.Diagnostics.Debugger.IsAttached) System.Diagnostics.Debugger.Launch(); #endif當(dāng)Cpp2IL加載你的處理層并執(zhí)行到Init時會彈出一個對話框讓你選擇調(diào)試器。選擇你正在運行的IDE即可。這種方法非??煽康浀迷诎l(fā)布版本中移除或禁用這段代碼。方法三單元測試將核心的分析邏輯如指令匹配、模式識別抽取到獨立的、不依賴于Cpp2IL運行時的類庫中。為這些邏輯編寫單元測試。這能確保你的業(yè)務(wù)邏輯正確且調(diào)試起來非常方便。只有與Cpp2IL上下文交互的部分Process方法才需要集成測試。7. 常見問題與排查實錄在實際開發(fā)中你肯定會遇到各種問題。以下是我踩過的一些坑和解決方案問題1處理層DLL加載失敗Cpp2IL報“無法加載文件或程序集”原因依賴項缺失或版本不匹配。你的處理層DLL可能依賴特定版本的Cpp2IL.Core或其他NuGet包。排查使用ildasm或dotnet peek工具查看你的DLL的依賴清單。確保所有依賴的DLL特別是Cpp2IL.Core.dll都位于Cpp2IL可執(zhí)行文件的同級目錄或者能被探測到。最簡單的方法就是把所有依賴DLL和你自己的處理層DLL放在一起然后用--additional-processing-assembly指定完整路徑。檢查Cpp2IL版本與你編譯處理層時使用的Cpp2IL.Core版本是否一致。問題2處理層被加載但Process方法從未被調(diào)用原因最常見的原因是接口實現(xiàn)不正確或者處理層沒有正確注冊。排查確保你的類同時繼承了CommandLineApplication并實現(xiàn)了IPerMethodPostProcessingLayer或IPerAssemblyPostProcessingLayer接口。確保類有[Command]屬性。在Init方法中加入Console.WriteLine確認(rèn)是否被調(diào)用。如果Init都沒調(diào)用說明注冊有問題。檢查命令行參數(shù)你是否正確使用了--additional-processing-assembly并指向了正確的DLL是否在參數(shù)中指定了你的處理層的命令名如--method-tracer問題3處理過程極其緩慢原因你的處理層邏輯可能過于復(fù)雜或者在每個方法中進行了昂貴的操作如頻繁的文件IO、復(fù)雜的正則匹配。優(yōu)化使用性能分析工具如JetBrains dotTrace、Visual Studio Profiler附加到Cpp2IL進程找到熱點。應(yīng)用本章第5節(jié)提到的優(yōu)化策略減少分配、使用高效數(shù)據(jù)結(jié)構(gòu)、選擇性分析。將結(jié)果緩存起來。例如如果某個判斷邏輯基于類型信息而該信息在多個方法中重復(fù)使用可以預(yù)先計算并緩存。問題4分析結(jié)果不準(zhǔn)確漏報或誤報原因IL模式識別邏輯有缺陷。Cpp2IL還原的IL可能包含一些非標(biāo)準(zhǔn)或優(yōu)化后的指令序列。排查對比驗證用一個你知道肯定會觸發(fā)訪問的簡單方法進行測試。用dnSpy等工具查看該方法原始的IL如果是托管DLL或反編譯的C#代碼與你的處理層識別的結(jié)果進行對比。輸出調(diào)試信息在處理層中將可疑方法的完整IL指令流打印出來人工檢查你的識別邏輯在哪里出了問題。考慮邊緣情況屬性可能是顯式接口實現(xiàn)名稱包含.字段可能是只讀的initonly訪問可能通過指針ldflda等。確保你的識別邏輯覆蓋了這些情況。開發(fā)自定義處理層是一個迭代的過程從簡單的日志開始逐步增加復(fù)雜的分析邏輯并輔以嚴(yán)格的測試和性能剖析最終你就能打造出專屬于自己逆向工作流的強大工具在面對任何復(fù)雜的IL2CPP應(yīng)用時都能游刃有余。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩伦理视频| 国产熟女一区二区丰满| 国产精品国产自产高清AV| 爱丝福利| 欧洲一区二区三区免费| 狠狠爱综合网| 国产男女无套视频免费观看| 欧美1区二区三区公司| 91丝袜美女视频| 丝袜狂射91| 中文字幕一区二区三区人妻少妇在线| 中文字幕性感少妇av| 亚洲最新Av| 五月天九九日国产精品一区二区三区| 夜草欧美| 8x福利精品第一福利视频导航| 夜夜性| 摸奶性爱视频网站在线免费播放| 久久大香蕉手机高清视频| 国产精品一二三| 99热在线观看| 91美女视频。| 久热超碰| 国产精品内射婷婷一级二| 日韩精品区二区三区不卡| 欧美性高潮| 一区二区你上我| 91天天看| 夜夜综合| 国产亚洲精品自在线亚洲情侣| 好一吊区二区| 精品无码一区二区| 国产精品视频自拍在线| 玖玖爱伊人玖玖爱| 五月激情影院| AV一区观看| 色女免费在线观看视频网址| 欧美成人午夜免费福利785| 超碰午夜| 精品一区二区三区蜜桃臀赵总| 啊啊啊啊网站| 色综合超碰超| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲五码一区二区三区| 蜜臀久久久99久久久久| 超碰97玖玖爱| 91精品久久综合熟女| 成人性交午夜免费片| 内射白嫩美女| 色一情一乱一乱一区91Av| 亚洲熟女综合一区二区| 精品一区二区麻豆| 天天干天天干天天| 免费av高清无码| 97鸡把在线视频| 禁片 高清 在线观看视频网站| 色色毛片| 97在线欧| 九九拍拍精品视频在线播放| 久热这里| 中文字幕免费看大片| 亚洲一区二区AV| 91丝袜在线视频| 久7色| 日韩精品中文字幕一| 9I1性色影院| 99re69综合| 色五月综合网| 精品人妻中文字幕4399| 久久久四区| 欧美熟女逼久久久久久| 加勒比综合九九99视频在线播放| 99无码视频| 国产精品日韩在线一区| 午夜成人爽爽爽爽A片李冰冰| 亚洲九九视频在线观看| 99精品久久久久久| 欧亚第一综合网| 久久黄色网址| www.超碰在线| 亚洲欧洲网站免费观看| 老司机深夜影院18未满| 又粗又长又爽在线观看| 熟女激情综合网| 秘书高跟黑色丝袜国产91在线| 久久久久久9999| 天天综合色电影| 国产亚洲99久久精品| 日本性爱欧美性爱| 在线无码视频| 内射夫妻三片| 久久成年片色大黄全免费网站| 手机在线大香蕉| 91女优在线观看| 九九英色视频| 国产人伦精品一区二区三区| 亚洲18禁| 啊啊啊啊啊啊啊国| 激情文学网伊人| 青娱乐日韩无码| 国产精品一二三在线看| 国产一区二区a毛片| 欧美人与动性人交a| 爱爱动态60秒| 久久久久九九九| 午夜精品久久久久久久久久久久久| 九久久精品| 亚洲人人夜夜澡人人爽| 毛片99-全集电影手机免费观看完整-B029AV | 美女的肌被草喷水视频| 欧美熟妇乱码在线一区| 国产二区三区粉嫩在线| 中文字幕人乱码中文字的预防方法| wwe 天天干.com| 禁十八久久| m欧洲一级午老| 久日91在线| 亚州熟妇精品| 久草看看看| 91制服丝袜| 999综合网| 九九九九九精品| 免费国产视频| 熟妇的味道HD中文字幕| 成人免费福利在线观看| 操人无码| 亚洲精品97在线| 免费看污网站| 欧美中字二区| 亚洲九九视频| 一本久道久久综合狠狠爱一密臀精| 精品一区二区三区麻豆| 日本黄色精品专区网站| 欧美麻豆成人同性GⅤ在线| 婷婷在线视频| 人妻夜夜爽天天爽麻豆三区网站| 歐美性天天| 97精品97久久| 亚欧中文字幕在线视频| 啊嗯嗯啊好大好爽| 亚洲精品97久久| 国产精品com| 美女视频尤物网在线看| 男人的天堂2010| 欧美97日韩| 久久久久久久久久精| 98福利在线视频| 东京太热久久久| 久久久久久9999| 大屁股熟女一区二区三区| 色婷婷一区二区三区久久午夜成人不| 久久久久白虎| 强被迫伦姧在线观看无码网站| 亚洲无码超碰免费| 日本三级R| 久久久工口| 骚人妻少妇视频| 九九九九九九综合| 国产精品内射婷婷一级二| 成人av影院在线观看| 亚洲性爱无码乱伦av| 色婷婷亚洲婷婷| 91+欧美| 国产AV线| 日本熟女不卡视频| 91呆哥人妻| 色呦呦、国产精品| 人妻精品一区二区三区| 久久久久人| 久久久久久网址| 成人性爱高清视频免费看| 另类天堂| 情色五月天就去干| 啪啪AV导航| 日韩欧美视频青青| 99在线啪| 日韩极品无码B| 久热这里| 中文日韩欧美熟| 国产 日韩 欧美一区| 亚洲 欧美 手机在线观看| 爱爱动态120秒| 亚洲人妻五月丁香婷婷| 伊人激情五月天一区二区| 嗯啊不要在线观看嗯啊| 日韩不卡一二三四| 青娱乐亚洲自拍| 久久婷婷一区二| 人妻素股| 男人的天堂午夜av| 中文字幕二区日韩天堂| 激情综合 婷婷五月 红杏| 国产黄色影片在线观看| 密臀在线免费观看| 91美女网站| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | www…国产操逼| 欧美在线啊啊啊| 天天噜| 欧美日韩岛国大片在线观看| 国产视频第2页| 成人久久久| 九九色逼| 91爱欧美| 国产精品三级视频网站| 久久9精品网站| 影音先锋新男人| 91久久精品国产| 天天操天天舔| 色综合久| 亚洲超碰97| 人妻久久久久久| 日韩成人人妻网站| 国产日韩在线播放| 久九九九九九九九热| 另类小色呦| 欧美日韩美女精品久草一区二区三区| 少妇高潮对白在线观看| 天天操熟妇| 女人喷水视频在线观看| 久男人久久| 99色综合| 久久男人天堂| 国产久久一区二区| 日本操嫩b网| www.色操逼| 欧美色九九| 人妻少妇精品一区二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 狠狠干妹子| 亚洲二区精品在线观看| 2017,超碰| 亚洲激情网一二三四区| 中文字幕丰满人妻日本| 情色五月天久久久| 欧美劲爆视频一区二区| 色九久| 综合网欧美在线| 一区二区影视| 激情终合网| 亚洲黄色a级片| 97鸡把在线视频| 97香焦色区| 成人一道本免费视频| 亚洲色资源| 日韩女模中文造逼| 91熟女在线| 大香蕉色网| 欧美丰满熟妇XXXX性ppX人交| 色妺妺AⅤ| 男人的天堂.com| 国产熟女完整版中字| 99精品无码| 伊人影院日本| 夜夜国自区| 久久99国产综合精品女同| 日韩黄色av中文字幕| 黄色十八禁网站| 青青草天天亲夜夜操网| 视频国产成人精品日本亚洲18| 99热 按摩 日韩| 女人爽到高潮潮喷18禁网站| 在线岛国新天堂8| 亚州图片第一页| 翘臀vidoes| 久久久久亚洲?V片无码V| 国产第二页| 91国产丝袜足交精品视频| 无码日韩人妻av一| 曰韩人妻中文字幕在线| 天天干夜夜鈤| 99福利社| 国产美女激情| 蜜桃精品一区二区三区ww| 日韩午夜精品一区二区三区电影| 精品国产乱码| 夜夜欢天天干| 精品十八在线观看| 九九亚洲色在线观看| 久久久久久久久久久久久久9999| 99操视频| 久久成人国产| 欧美大波激情xxxx| 青春草莓视频在线观看网址| 伦理第一页| 天天综合网站| a级成人毛片免费视频高清| 日韩成人性日韩成人性爱视频在线免费观看 | 夜夜草天天| 亚洲AV人人澡人人爱| 不卡码视频| www.激情| 亚洲激情综合| 久久九九99| 国产精品视频自拍在线| 6080YYY午夜理论片在线观看| 欧美少妇色图| 色九久| 亚洲日韩资源| 伊人国产AV| 日韩人人精品| 亚洲成人AB| 色香综合天天影视综合| 51一区二区三区| 国内97干免费看| 日日夜夜噜| 久久av色| 中文字幕人妻色偷偷久久皮| 成人熟女区| 亚洲综合性感在线| 乱久久久| 懂色影视久久| 欧美,日韩,中文,另类| 午夜精品人妻二区三区| 日曰骚久久精品| 青青草影视蜜久久| 久99在线免费观看视频| 亚洲精品乱码久久久久久蜜桃麻豆| 疯操AV| 少妇蹲下买菜露大唇0| 熟女熟妇伦久久影院毛片一区二区 | 91精品国产日韩欧美综合| 久久性生大片免费观看性| 日韩欧美亚洲自拍偷拍| 色悠久久久av| 伊人欧美大香蕉视频| 久久在肏| 欧美Ⅴ性爱| 久久久久久人妻一区精品色欧美| 婷婷中文网| 97人人操人人摸人人爱| 99热精品在线| 色眯眯射| 免看60秒涩涩视频| 亚洲精品97| 十八禁的黄污污免费网站| 日韩一级免费性爱| 亚洲日本韩国极品一区二区| 97伪v| 九九九九一区| 欧美色亚洲| 欧美日韩大黄片| 色婷婷久久| ′ !γ}丶。。久久精品欧美一区二区三区| 大香蕉 222| 天天天天天超碰| 强乱老妇中文字幕| 在线看的av| 亚洲色啪| 欧美熟妇亚洲版| 久久久偷拍| 国产9 9在线 | 亚洲| 玖玖玖玖精品国产剧情| 嗯啊不要在线观看嗯啊| 青青三级视频| 亚洲国产美女久久久久| 新婚人妻扶着粗大强行坐下| 青青草日逼视频| 亚洲人码13| 欧洲性爱无码区| 在线观看国产黄色| 欧美老妇女内射网址| 久啪视频| 色狠狠 - 百度| 亚洲精品国产精品成人| 色香色欲天天综合网天天来吧| 午夜激情床戏激情| 国产AV人人夜夜澡人人爽麻豆| 国产自啪精品视频网站黑丝| 国产操逼视频在线观看| 大香蕉亚洲中文| 搡老女人老91妇女熟女| 欧美探花网| www.婷婷六月天| 久久婷婷欧美| 成 人 A V免费视频在线观看| 丁香激情网| 亚洲AV不卡在线观看尤物| 久久久久久久9| 国产一区二区视频在线播放| 亚洲天堂人人妻| 91东北熟女| 啊视频在线| 国产白嫩精品久久| 亚洲国产精品无码AV久久久| 午夜久久一区二区无码中出| 亚洲欧美色图片| 国产亚洲国产超碰| 91精品少妇搡搡搡| 黄色小视频日本txt| 五月天伊人| 久久久久成人网| 欧美,日韩,亚洲视频| 久久久久亚洲精品| 免费日韩黄片| 久久久久久久久久久999| 国产白丝网站| 亚洲aV性爱| 亚洲综合骚逼| 18禁美女裸体无遮挡啪啪| 欧美另类自拍 | 在线观看啊啊啊啊啊| 成人av影院在线观看| 麻豆乱码久久精| 久久夜夜| 色婷婷在线视频精品导航| 亚洲开心网| 91大神精品长腿在线观看网站| 天天看综合网| 欧美日韩国产一区二区小黄片大全| 精品女人999| 亚洲天堂男人天堂网| 亚洲交换| 青青草在线视频人人想人人上 | 亚洲 欧美 综合 91| 97亚洲国产| 日韩精品三级| 囯戸精品高潮呻吟旡码| 亚洲精品xxx| 九九热精品| 五月天伊人| 亭亭在线资源| 9丨亚洲一区二区在线| 日本三级中国三级99人妇网站| 91久久精品国产| 青青草无码视频| 欧美日韩中文字幕人妻| 啪一啪免费视频| 夜夜高潮夜夜爽高清视频一| 人人妻人人澡人人爽久久av| 国产日韩在线播放| 美女丝袜激情小说| 亚洲AV秘无码一区..| 青青草依人大香蕉| 最新啪啪视频| 粉嫩av一区二区三区四季| 日韩欧美福利视频看看| 人妻天天操天天爽视频免费| 91少妇高潮| 日韩成人大片一区二区| 亚洲性少妇| 亚洲欧洲中文日韩女优乱码| 嗯嗯啊啊用力视频免费| 国产综合日韩伦理| 欧美日韩人人早| 日韩亚洲精品一区二区| 午夜福利在线视频1000| 久久久久久久九九九九九九| 丰满少妇高潮无码| 丰满人妻av一区二区三区| 九九九九九九免费视频| 色综合久久888| 欧美日韩狠狠爱| 大胆91| 色哟哟 日韩精品| 午夜福利国产欧美日韩夜夜| 亚洲少妇色图自慰直播| 国模精品娜娜一二三区| 上特色A在线| 色诱avtt| 亚洲欧洲偷拍一区| 日韩欧美午夜一区二区| 欧美高清在线| 凹凸视频特色日本特黄| 青娱乐淫乱1314| 久久久久元码视频| 人妻嗯啊啊在线播放| 日本精品中文字幕视频| 91操熟女视频| 91欧美长吊| 在线播放一级无码视频| 98超碰欧美| 日本 免费 一区二区三区 久久香蕉| 翔田千里一区二区三区奶水| 久久岛国| 区自美91| 小情侣高清国产在线视频| 外国91| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 国内毛片婷婷六月色| 综合97| 精品少妇高潮久久| 97超碰免费生活| 国产大片精久久久久久| 久久香蕉综合一本到3atv| 欧美人人曰人人操人人射射| 亚洲欧美另类激情小说| 999久久久国产精品| 日韩9999| 欧美 亚洲 另类 综合| 天堂日本亚洲欧美| 欧美专利1区2区3区4区5区免费| 91久久99久久91熟女精品| 91丨熟女丨丰满熟女| 欧美日韩国产成人高清| 99久久国产精品免费高潮| 大香蕉78| 香蕉黄色一级视频| 亚洲一区二区三区不卡国产欧美| 立川理惠被中出无码| 伊人超碰97| 国产亚洲色停停久久99精品91| 成·人免费午夜在线观看| 亚洲精品a人片在线观看视| 亚洲一区二区三区AV无码| av日韩手机在线影视| 综合操逼| 开心激情站| 岛国AV一区二区电影| 懂色AV中文| 亚洲成人妻日韩在线| 人妻熟女一区二区| 999国产精品999久久久久久| 亚洲精品久久久久毛片A片拉屎 | 久久成人午夜狠狠| av影院十区| 国产在线综合福利网站| 国内毛片无码一级毛片| 性色avv| 日本精品九九九| 玖玖久久久| 久久久久久亚洲Av无码精| 欧美日韩国产一区二区小黄片大全| 秋霞午夜视频一区二区| 夜色97| 伊人一区二区在线播放| 性色av婷婷久久一区二区点复制| 好淫网一二三视区| 一级免费精品| 日韩福利综合一区| www色色色com| 97国产中文| 欧美十八禁网站| 超硑97精品| 东京太热男人的天堂久久久| 蜜臀无码视频在线观看| 五月天综合在线| av东京热男人的天堂| 在线视频亚洲无码| 欧美78p| 日韩精品午夜操呦呦不卡影院| 日韩黄色av中文字幕| 激情99| 国产视频97| 欧亚在线视频| 超碰欧美97资源| 亚洲导航深夜福利| 激情人妻另类| 色综合大香蕉| 婷婷激情四射| 97干在线视频| 在线观看十八禁| 蜜臀久久99精品久久久久久无删减 | 国产suv精品一区| 在线v中文字幕一区二区三区| 日韩午夜国产| 国产AV激情无码久久无码| 色香综合天天影视综合 | 玖玖无码超碰| 中文高清一区二区的| 亚洲欧美首页| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 超踫中文字幕| 91精品国产日韩欧美综合| 欧色综合| 日本污ww视频网站| 国产后入| 久久一二三四五六七八九区| 性吧在线视频| 亚洲 日本 国产 综合| 久久超碰av在线| 九九久久精品| 欧美一区二区日韩三区| 久久丁香| 国产精品久久久久无码A√| 一区二区视频在看| 中文字幕神马久久| 亚洲 欧美都市激情| 91观看 国产白丝| 中文久久一区| 99性爱视频| 亚欧日韩成人| 飘花国产午夜精品不卡| 久久久久久性爱免费视频| 亚精品无码毛片一区二区三区| 粉嫩国产精品久久粉嫩| 操B在线观看| 大二网站亚洲| 精品人妻av区天天看片| 东北操逼| 国产欧美日产一区二区三区 - 国产欧美日| 人妻天天夜夜爽一区二区| 在线中文字幕极品av| 91操操操操| 美女网站91| 久久丝袜| 国产在线播放成人免费| 91狠狠综合| 欧美夜夜狠| 欧美99热| 蜜桃视频精品一区二区| 精品视频久久久久九九九九9999| 人人人人人人少妇| 夜夜操av亚洲一区二区| 精品一区二区三区蜜桃臀赵总 | 福利社区午夜一区二区| 国产Aα| 久草网站免费在线观看| 福利色色| 99色视频| 国产婷婷一区| 久久有碼| 91劲爆| 超碰97人妻自拍| 日韩大香蕉| 国产三级资源在线观看| 欧美午夜视频免费观看| 国产www色在线观看| 久久女婷| 成人无码在线视频网站| 国产女人高潮嗷嗷嗷叫小说| 久久九色| 一牛一区二区三区久久| 亚洲中文字幕久久无码精品| 青青草久草| 亚洲成a人在线观看久| 97人人超| 青青草狠狠撸| 欧美少妇高潮| 91精品微拍福利| 一本久道久久综合狠狠爱| 久久綜合很很很| 夜夜黄| 天天色,天天干,天天干| 91五月天| 综合色久欲| 亚洲无码超碰免费| 激情五月天婷婷| 青青草精品| 97免费在线| 手机看片1025| 日韩欧美天天爽爽爽天天爽爽| 在线观看免费视频国产| 亚洲。天堂。日本在线观看| 熟妇人妻精品一区二区视频色欲| 激情小说日韩无码| 91天堂丝袜美腿| 亚洲图片欧美色| www.久久最新地址| 91夜夜蜜桃臀1区2区3区| 久久午夜神马| 中文字幕视频二区| 91婷婷| 日日不卡av| 亚洲操逼无码| 色婷婷一区二区三区久久午夜| 日韩成年人性爱视频| 国产人妻精品久久久一区二区三区 | 午夜无遮挡男女啪啪视频| 96免费视频在线| 亚洲精品国语在线播放| 精品一区二区麻豆| 青娱乐老司机视频| 99xav| 日韩无码操逼片| 欧美激情亚洲情色| 国产免费一区在线观看| 久久久涩| www老逼91| 蜜臀AV秘一区翔田千里| 综合色久欲| 色人久久| 国产亚洲色婷婷久久99精品91 - 百度| 五月丁香久久| 香蕉久久AⅤ...| 91操熟女视频| 中文字幕在线观看第二页| 91啦人妻| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 最新一二三区视频| 在线无码网站| 夜夜性| 国桃视频产巨乳精品一区二区在线| 一级啊性爱在线视频| 性夜影院爽黄A爽免费动漫| 99精品网站| 把腿张开老子CAO烂你| 我想要 啊 啊 啊| 2017天天插| 国产精品国产自产高清AV| 欧美综合网| 91亚洲情色| 精品国产乱码久久久| 91超碰丝袜制服| 欧美激情黑人| 色婷婷一区二区三区久久午夜| 黑人精品久久97| 亚洲美女色图| 久久精品国产精品| 夜夜操av亚洲一区二区| 无码91| 男人天堂站| 深爱五月婷婷| 久久人妻视频网| 亚洲欧洲国产综合av| 无码抄逼网| www狠狠| 久久xx| 青青草九九九九九| 歐美一級亂黃99在綫精品| 嗯……啊…嗯嗯…啊…好舒服| 男人天堂站| 久操黄色视频| 亚州色图狠狠干| 久久的网站啊啊啊啊啊| 啊啊啊快操我视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 五十路六十路七十路熟婆| 91欧美偷拍| 青青草吊丝| 999 久久久| 超碰 欧美| 丰满人妻-区二区三区免费看| 韩国一级做a久久久久| 日日干天天干夜夜爽| 大香蕉久久| 综合九九| 精品国产乱码久久久久久网站入口| 综合亚洲欧美| 欧美十八禁视频| 国模少妇一区二区三区| 美女露胸露奶头| 久久国色天香香蕉| 密臀成人视频久久久| 综合伊人激情| 色色五月天婷婷| 国产白丝在线| 亚洲另类天堂| 久久久久国产一区二| 色九九九综合| TS人妖另类精品视频系列| 日本国产欧美高清在线| 日本少妇va7777| 欧洲亚洲少妇| 翔田千里AⅤHD无码| 六九九九| 久操免费观看| 久久XX| 欧美精品不卡一二三四在线91| 牛牛AV人人夜夜澡人人爽| 精品精品精品| 9999久久久| 99re视频在线观看这里只有精品| 影音资源男人日韩| 强奸乱伦动态污图免费 | 国产精品午夜精品| 日本高清_区二区三区| 久久国产在线一区二区| 国语人妻精彩刺激| 日本精品五区| 人妻天天爽夜夜爽爽| 999久久久九九九九| 综合色99| 久久男人的天堂| 色色色99| 久操视频这里只有精品| 狠狠狠狠狠狠| 一中国女人毛片水真多| 成人综合网 欧美| 亚洲囯产精品女人久久久| 欧美熟妇视频| 日日操免费视频| 亚洲午夜蜜臀| 麻豆2区1区天美| 无码不卡八戒| 夜夜嗷嗷一区二区| www网站黄| 欧美啪啪色吧在线| 天天干天天日天天射黄色片| 欧美91视频| 东北女人高潮视频| 欧美精品99久久久| 日本操逼无码| 女上位精品在线| 亚洲国产一区二区三区在线| 1级午夜影院费免区| 久久久熟妇熟女国产| 精品一区二区综合熟妇| 91大香蕉伊人| 久操 高清| 日韩免费人妻色情网站| 亚洲一级特黄大片在线播放91| 夜夜夜爽www精品视频| 国产人伦精品一区二区三区| 精品性爱无码在线播放| 爱啪精品一区| 九九色精品| 亚乱色| 日韩无码视频黄色| 久久久久夜夜夜夜| 91插B网站| 老色鬼成人精品视频下载大在线观看| 久无码| 一区二区三区精品黑丝白丝酒店对鸡| 日本免费一级AAA大片器| 中文字幕欧美日韩三级| 男同专区一区二区三区在线| 亚洲综合影片| 亚洲综合影视| 99精品无码| 久久美女国产| 久久午夜色播影院免费高清| 热G综合热G中文| 亚洲国成人情色好看电影| www.婷婷| 日日夜夜天天| 亚洲色图超碰在线| 天天欧美色| 亚洲情色1区| 精品十三区| 性老妇一区二区三区| 啊啊啊啊视频免费| 欧美亚洲另类在线蜜桃| av爱爱爱| 日韩人妻中文视频| www色婷婷| 91ise欧美| 亚洲成人色情五月天丁香花| h色99999| 亚洲欧美综合网| 婷婷操视频| 操操逼操操逼操操逼逼| 色婷婷九月| 蜜色网色哟哟| 久久久久久91香蕉国产| 国产无马在线| 欧美人妻精品一区二区| 亚洲天堂,男人| 九草在线大香蕉| 久久久精选| 亚洲欧洲日本精品中文a∨| 18啪啪手机免费性爱| 亚洲国产成人精品999| 国产中文字幕曰本毛片| 久久国产99精品72福利 | 日韩日本欧美在线观看| 亚洲第一无码播放立川理惠| 五月天丁香欧洲日韩| 91超碰碰在线| 日韩黄色片子| 婷婷五月天丁香| 操淫穴亚洲五月丁香| 亚洲一二三四区在线免费看视频| 人妻少妇久久中文字幕一区二区 麻豆 | 黄色网址在线免费观看| 插入综合网| 强乱老妇中文字幕| 韩国免费播放一级毛片| 美女刺激久久国产欧美| 日本天天干天天搞一区| 97无码视频在线播放| 天天日天天舔天天喷天天射| 天天情欲宗合网| 99久久婷婷丁香| 久热久一区二区三区| 亚洲综合网91| 国产精品一区二区三区在线密挑| 亚洲高清在线se| 天天色,天天干,天天干| 丁香五月天激情综合| 91欧美经典| 婷婷成人五月天| 97欧美| 2025亚洲男人天堂| 国产亚洲精品久久久久小 | 色久桃花影院在线观看| 国产精品久久久视频| 日韩肏逼视频| 天天狂操夜夜狂日| 强被迫伦姧在线观看无码网站| 乱精品一区字幕二区| 亚洲啪啪啪啪视香蕉| 亚洲一区二区三区欧美日韩| 玖玖超碰熟| 91精品综合久久久久久五月丁香| 青青草中出视频| 天天天天操| 秋霞一级鲁丝片A片| 2026国产精品视频| 精品婷婷| 人人人干干人人干| 日本一二区免费| 久久久久久日韩| 可乐操在线| 欧美日韩少妇色情| 女人爽到高潮潮喷18禁网站| 乱伦强奸区日韩| 91无摭挡| 久久久久密| 久操热| 国产欧美成人第一页在线观看| 91欧洲入口| 色婷婷丁香五月| 日韩欧美大力操| 怡春院久久| 97大色网| 亚洲成熟国产精品美女| 国产在线能看的你懂的| 久久↗↗| 美女主播色欲91抠b在线播放| 色999亚洲人成色| 久久久久久国产精品免费网站| 好爽免费视频| 精品人妻一区二区三区四区| 一二三四视频在线社区中文字幕| 蜜臀久久99精品久久久老,,| 色激情综合网站| 久久久久久久久久久久欧美日| http://qxhbdz.com| 九九九九免费| 日韩日韩日韩-国产乱码精品一区二区| 日韩国产乱子伦App| av网站在线观看了| 日韩无码视频黄色| 欧美91在线| 人妻另类| 天天欧美| 熟女人妻一区二区三区| 99国产精品| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 天天天天干| 74成人在线| 日本熟女免费視颖| 日韩无码黄色片| 免费看污网站| 97视频网站在线观看| 啪啪性爱免费视频| 国产主播福利| 亚洲综合欧美| 色屁屁影院www国产| 成人性爱av.com| 国产树林里野战在线看| 亚洲AV永久无码一区仙野| 午夜天天碰综合视频| 久久久不能久久久久| 大香蕉啪啪啪啪在线| 亚洲AV在线资源| 综合97| 涩涩这里只有精品视频| 无码国产精品午夜不卡(| 99热这里都是精品| 97欧美久久久久久久| 国语少妇精| 国产一区二区三区精品观看啪| 懂色AV中文| 久久丝袜| 性爱乱伦一区| 九九九九九九九九九九九九九九九女| 91综合天天看| 欧美色性爱| 大鸡巴久久久| 日本 情色 1区2区3区| www.91理论| 国产女生在线| 亚洲欧美在线综合| 久草精品国产蜜臀| 天天操妹子| 狠狠爱综合| 久久久极品| 国产AV久久野战精品| 亚州高清色综合| 中日韩久久久| 日本大香蕉| 五月婷婷丁香六月丁香| 久九九九九九九热| 蜜臀久久99精品久久久久| 香蕉久久国产AV一区二区| 中国91AV| 蜜臀久久99精品久久久老,,| 这里都是精品| 在线人妻熟女一区二区三区四区五区| 伊人网在线点播| 五月婷婷六月天| 狠狠97| 青青草视频久久| 亚洲欧美国产va在线播放频| 日本三级黄页| 2021国产成人精品久久| 天天天乱色综合全| 天堂成人网| 欧美日韩人人精品| 啪啪免费| 日本幼女18+| 亚洲欧洲偷拍一区| 夜夜操青青草| 日韩丨制服丨中文|在线| 国产伦乱91| 欧美精品久久96人妻无码| 亚91亚洲网| 黄片www.| 精品一区二区国产日韩| 亚洲 另类 丝袜 自拍 动漫| 亚洲色图殴美色图激情乱伦| 蜜桃色院一区久久| 五月丁香综合| 黄色激情电影在线观看| 91亚洲丝袜| 综合网色| 狠狠操狠狠操操| 自拍亚洲综合| 97人肏| 1024香蕉视频| 中文字幕亚洲永久精品| 青娱乐黄色录像| 亚州九九九精品视频| 丁香婷婷激情五月天无毒不卡 | 综合久久99亚洲人妻中文在线| AV在线性爱| 欧美淫穴| 亚洲激情网一二三四区| 一区操逼日比视频| 亚洲AV无码秘 蜜桃臀国精产品| 黄站在线免费观看| 五月婷婷青青草娱乐伊人| 5252色欧美在线| 精品乱子一区二区三区99| 婷婷激情啪啪| 国产免费一区二区在线A片视频| 黄色电影观看久久9| 色就色综合| 欧美日产国产在线成人第一区| 国产午夜精品理论片a大结局| 青青草中文字幕| 欧美成人一区二区| 啊啊啊啊啊好舒服视频| 久草成人影片| 欧美老妇综合网| 操香逼| 九一国产精品| aV中文麻| 久久国产精品m码| 亚洲AV麻豆Aⅴ无码电影一| 97超碰磁| 韩国黄片aaaa| 一块操欧美| 国产精品经典一卡久久久| 青娱乐av在线| 亚洲人妖网| 色偷偷2020免费视频播放| 午夜福利在线合集| 久久香蕉国产线看观看亚洲女人 | 欧美成人精品欧美一级乱黄一区二…| 色婷婷日韩精品一区二区三区| 成人久久久| 青娱乐二区免费| 亚洲精品xxx| 天天爽天天| 用力操死我| 一区二三区四区视频大全套| 麻豆a'v电影| 亚洲 中文字幕 精品| 国产人妖视频一区在线观看| 99操逼| 久久久免费懂色| 久热一区二区| 欧美婷婷五月天| 嗯~啊~快点 死我视频| 久久一二三四不卡 | 色欲蜜臀AV| 蜜臀在线免费观看在线免费观看| 老司机午夜福利视频一区二区| 国产免费内射视频| 亚洲四虎熟女精品| 欧洲乱码视频| av爱爱爱| 午夜免费视频1000| 999久久芭蕾| 老司机天天操| 一及黄久一点| 84YTCOM性无码| 人妻激情另类| 99爱爱| 思思热久久成人| 色九九九九| 亚洲自拍偷拍视频在线| 首页亚洲国产高跟丝袜诱惑视频| 日韩色女精品| 美国一区二区免费视频| 鸥美精品一区二区久久婷婷| 亚洲综合首页| 日韩久久超碰色| 国产一区二区三区久久久精品| 色五月69夫妻| 蜜乳AV.COM| 午夜精品久久久久久久| 麻豆国产精品午夜视频| 夜夜狼人妻| 亚洲精品无码成人久久久99| 啊啊啊啊啊好舒服视频| 日韩色| 99rre在线精品99re8| 婷婷亚洲天堂| 成人精品无码| 97爱b| 国产激情久久久| 超碰97网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 超碰97久久| 青青欧洲黑| 日日夜夜狠狠| 一区AV| 偷拍亚洲情色| 麻豆久久久久久久久丝袜| 熟女乱伦A| 久久久久久十| 97超碰资源网| 特级丰满少妇一级AAAA爱毛片| 蜜桃久久综合视频| 精品一区二区三区蜜桃| 色妇91| 久久久精品中文字幕麻豆| 日韩中文字幕视频在线观看| 欧美九一精品久久久熟妇| av天堂电影网| 欧美亚洲涩涩| 天美一二三在线观看Av| 黄色污污污污污污网站| 欧美人妻精品| 啊啊啊啊视频免费| 啊v在线观看视频| 嗯嗯不要视频| 78精品| 污色区网站| 天天上日日上日韩精品| 免费视频在线一区二区不卡| dy888午夜老子影视达达兔| 偷拍 亚洲 欧美| 超碰成人人人爽人人爽| 欧美激情性久久久久久| 欧美日韩 强奸乱伦| 色色热| 久久久婷| 自拍盗摄一区| 在线电影亚洲色图| 欧美日韩亚洲天堂| 综合激情二| 久久精品国产亚洲AV无码电影| 国产亚洲在线观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲色图 综合| 欧美亚洲国产日本在线,久久精品国产| 肉丝网站91| 国产精品久久久久999| 大吊色| 亚洲丝袜色图| 韩国女主播青草在线| 人妻五十路在线| 狼人综合婷婷激情四射 | 久久做97| AV一二区|