日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
97在线视频网站| 日韩乱伦视频| juliaann精品熟女一区| 97超级久久强资源| 亚洲第一狼人丝袜美女另类| 97自拍一区| 免费试看60秒| 国产女上位好爽在线| 九九热只有精品| 国产AV激情无码久久无码| 中文字幕jul-617人妻熟女| 亚洲AV不卡在线观看尤物| 中文字幕成人乱码熟女精品国50| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | AV男人天堂网| 色五月首页| 密臀国产在线| 狠狠久久亚洲欧美专区| av网站国产主播在线| 色欲天天综合网| 98久久超碰| 99操视频| 7777奇米影视久久| 69丨亚洲丨精品丨入口免费播放| 99免费在线视频| 玖玖爱综合网| 欧美图片色综合| 天天视频综合在线观看视频| 欧美精品庄| 宅男午夜在线视频| 九九久久首页| 98一区二区精品| 亚洲综合影院| 少妇精品久久久八区九区| 欧美亚洲日本视频久久久| 97在线欧| 国产一区二区三区久久精品太古里| se吧提供国产乱老熟视频胖女人| 夜夜春夜夜操| 99在线啪| 性生活久久久久久久久久| 久久综合国产精品国产| 91久久久久久久久18| 亚洲区限制级| 激情欧美日韩女同久久| 婷婷久草一区二区三区| 欧美性爱在线无码| 91足交| 欧美不卡五十路| 999久久芭蕾| 青青草久久一区网| 欧美熟妇人体| 欧美婷婷久久| 丝袜内射| 超碰97最新人妻| 中文字幕一二三区| 久久久爆乳翘臀一线天伦理视频| 大香蕉520| 成人无码专区精品视频| 久久婷婷国产一区二区色| 久久久一区二区三区三州| 亚洲日韩av专区无码| 超碰导航97| 亚洲素人综合| 91五十路| 色天使亚洲综合在线观看| 深夜激情| 亚洲AV无码秘 蜜桃臀国精产品| 欧美91变态| 天美传媒婬乱在| 日日躁夜夜躁狠狠躁超爽| 91激情综合| 蜜臀在线看片| 懂色aV一区二区天美传媒| 狠狠爱大香蕉| 国产精品久久久久无码AV会牛| 九九热超碰| 亚洲丝袜色图| 亚洲色婷婷综合久久一区二区三区| 久久风骚城市| av网站免费线看| 日本免费一级AAA大片器| 韩国午夜理伦三级好看| 农村妇女一级二级三级视频| 99国产在线绯色一区| AV老汉| 久久久一区二区| 伊人久久蜜月| 婷婷久久五月| 日本有码影片下载 | 大乔未久88一区| 蜜臀久久99精品久久久电影| 精品妇女一区二区三区| 久久婷婷综合国际产色怕| 久热影视| 91被操| 熟妇操花| 欧美超碰人妻97| 992视频一区| 国产极品精品美女视频| 91校园春色长篇| 啊啊啊好湿久久| 亚洲欧美天| 欧美不卡五十路| 色吧综合网| 自拍视频大全亚洲专媒视频/一区二区三区| 干B| 国产在线综合福利网站| 国产精品对白内射| 人妻天天爽| 无码天天操| 欧美天堂日韩三级国产传媒| 日韩欧无码一区二区三区免费不卡| 中国女人内射6XXXXX| 久久a久久| 亚洲天天操| 国产av美女被艹的乱叫| 精品人妻视频一区二区在线播放| 夜夜嗨AV蜜臀av| 亚洲成人妻日韩在线| 91男同| 日韩无码人妻| A级片日韩欧美国产欧美视频精选观看| 婷婷色网| 激情六月天| 日韩97超碰中文字幕| 中国AAAAAA黄色片| 啊啊啊在线观看免费视频| 久久久久9| 一本色道久久天天射天天干| 亚洲一二三四区| 亚洲欧美日韩电影网站一区 | 久热伊人99re| 九九碰九九爱97超碰| 国产精品久久久久久久电影渣男| 欧美天堂在线| 99re这里只有精品2| 成人精品视频一区二区| 五月天激情婷婷| 青青伊人这里只有精品| 三级AV入口| 亚洲欧洲自拍图片专区满春格 | wwwxxx日本爽| 欧美伊人久久综合网| 美女裸体无遮挡永久免费观看网站| 99精品无码| 亚洲少妇激情一区二区三区| 偷拍五区| 超碰色97| 亚洲黄色| 一级性爱视频免费观看| 日韩无码精品综合久久| 欧美亚洲| 国产精品久久久久av| 五月婷婷基地| 亚洲日韩97| 亚洲在线综合| 天天日日日射| 日韩免费高清大片在线| 国产视频一区二区三区久久亚洲天堂| 东京热男人的天堂| 久久鲁夜| www.夜夜| 双插性欧美一二三区| 欧美色图小说综合| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 玖玖资源中文字幕制服丝袜| 综合免费无码中文| αⅴ天堂| 大香蕉视频啪啪啪啪| 天天日日舔舔| 日本精品高清一二区一本到| 欧亚日韩中文在线| 男人的天堂无码| 啊a一区在线| 婷婷久久网| 日韩av影片在线观看| 欧美日韩狠狠爱| 97超碰公开| 一区二区偷拍拍视频| 精品亚洲黄色片 国产精品导航一区二区| 欧美se综合| 夜夜爽妓女| 天天干美少妇一区| 另类图片五月天| 青青草在线视频人人想人人上| 天美精品原创av片国产| 九九热三级片| 欧美亚州综合网图片| 性色高清..……| 亚洲图片欧美日韩| 超碰地址97| 久草久热| 亚洲av无码成人精品国产| 国产精品久久久吖| 色九久| 91情色在线| 狠狠躁天天躁日日躁| 久久精品久| 丝袜综合| 欧美色图20P| 久久久久久久综合,国产| 自拍亚洲综合| 欧美色图自拍| 少妇久久久| 久久99999| 75大香蕉| 男人天堂久久精品不卡| 久湿久久 | 亚洲。日韩。欧美| 日韩国产十八禁| 1024午夜激情男人的天堂| 色偷偷超碰亚洲| 友优传媒精品在线一区二区| 日韩人妻制服丝袜av| 日日夜夜干| 东北女人操比视频| 人妻干天天| 最近的最新的中文字幕视频| 日韩亚洲美州欧洲综三区一品在线| 国精品一区二区三| 51一区二区三区| 欧美天天| 99国内精品| 久久久9 9 9精品| 玖玖久久久| 亚洲国产精品无码AV久久| 欧美一区二区日韩三区| 国产激情综合五月久久| 色www精品视频在线观看| 78操B| 久久这里是精品| 99国内精品| 懂色av中文字幕| 欧美综合第一页| 亚洲欧美日韩综合在线尤物 | 永久免费av无码网站国产app | 亚洲 在线| 偷窥自拍亚洲天堂网爆| 欧美色图片欧美色图| 中文字幕一二区二三区人妻专区| 国产人人干| 国产欧美伊人| 国产精品白领在线观看| 高清不卡国产| 久久天天艹| 五月久久HDAV| 欲香欲色| 在线97在线| AV在线性爱| 天天爽爽爽爽| 天天夜躁日日躁狠狠2002| 99热精品在线| 影音先锋视频在线| 久久久久9| 99re在线观看| 综合久久2017| 蜜桃视频一区二区三区在线观看| 日本日逼高清| 无码区蜜乳| AV天堂电影网| 影音先锋中文字幕日本好一区二区| 玖玖资源视频一区二区三区| 操人妻逼91| 女人喷水视频在线观看| 蜜桃天美传媒AV一区二区三区| 乱伦3P视频| 青青草在线视频播放器| WWW4虎| 国产精品久久伊人| 国产精品永久免费10000| 精品一二三区女同| Blackedraw视频一区二区| 97精品97| 久久久久久中文字幕中文字幕最新| 久久这里只精品免费福利| 欧美91网站| 久久国产三区| 欧美黑人性猛交91| 久久露脸国产老熟女| 国产免费一区2区3区| 超碰97导航| 91熟女综合| 无码最新| 欧美操逼熟女| 在线无码操| 99e久久国产精品| 伊人97| 青草一区二区| 另类欧美| 操淫穴亚洲五月丁香 | 中文字幕国产在线天堂| 四虎午夜影院| 久久精品熟女亚洲AV麻豆软件| 蜜臀99久| 三级精品三级在线观看| 日本乱人伦片中文三区| 放黄片放3级黄片没穿衣服| 亚洲人成在线放东京热| 久久久久久亚洲Av无码| 啪一啪免费视频| 人人人人插| 欧美1区二区三区公司| 日韩亚洲国产视频| 爱丝福利| 午夜丁香| 少妇高潮对白在线观看| 欧洲视频在线| 五月天人妻综合| 久久精品99| 亚洲高清91| 久久亚洲中文字幕视频| 草莓精品视频在线免费观看| 日本免费一级AAA大片器| 国产亚洲精品久久久久小| 无码黑人精品一区二区三区三| 欧美,日韩,亚洲视频| 亚洲日韩AV视色| 精品一二三区女同| 亚洲色婷婷久久久综合日本| 色官网色综合| 97精品一二区| 精品无码人妻一区二区免费蜜桃| 亚洲本色精品一区二区久久| 免费自拍三级综合| 亚洲性综合9| 日本黄色天堂| 国产成人自拍视频视频| 亚洲s在线观看| 熟啊v色欧美热| 国产无马av| 久操大香蕉手机视频在线看| 91处女视频在线观看| 97人人干| 伊人久久婷婷| 少妇一级婬片免费放一级a性色.| 日韩性爱视频免费在线| 国产免费黄色一级大片| 97色在线视频| 国产精品不卡av免费在线观看| 精品国产乱子伦一区二区三区,精品一| 国产亚洲性生活视频播放| 91热色| 丝袜色综合| 国产精品69久久久久孕妇欧美| 天天操熟妇| 少妇无码999| 免费家庭乱伦视频| 超碰在线人妻| 青青11操操操操操操操操| 中文字幕精品丝袜| 好爽免费视频,| 亚洲黄色| 亚洲精品官网在线观看| 欧美久久人人网| 午夜婷婷| 久久9精品视频| 色在线69堂| 性猛交| 色狠狠 - 百度| 激情六月天| 蜜臀久久99精品久久久久久久久| 欧美性爱一区二区三区四区| 东北熟女91| 欧美亚洲一级在线观看| 国产精品麻豆成人AV艾秋| 亚州综合电影| 亚洲97超碰| wwwxxx日本爽| 久久极品一区二区| 国产精品3| 97久久国产精品| 四虎免费在线观看| 3d成人精品一区二区| 69精品少妇一区二区三区蜜桃| 九九九九免费高| 久久精品久久久久久久| 欧美黄色大香蕉一区二区| 国产性刺激| 91欧美www| 精品人妻中文字幕4399| 天天欧美色| 天天天做天天天爱天天天爽| 黄片视频,下载| 中文字幕在线观看丝袜| 欧美日本不卡在线| 超碰性爱97| 精品九区| 久热大香蕉| 亚洲欧美综合网站| 人人玩人人添人人澡免费| 久久99操天天日| 久久影视二区三区行押| www.av在线视频| 真实高潮91| 操东北女人| 久久久久9| 久久久久久少妇| 伊人一区二区在线播放| 成人AV素股で擦久久| 亚洲资源站| 五月婷婷综合网| 精品久操| 五月婷婷久久综合| 国产精品对白自产拍| 日本性爰一道本| 91黑丝少妇| 在线视频免费观看午夜| 久久久久久性爱片| 成年无码动漫av片无尽在线| 欧美熟爽综合| 三级日韩一区二区三区| 亚洲色图加勒比| 91春色| 亚州成人a∨| 国产色产精品在线观看| 人妻天天操天天爽视频免费| 国产精品爆乳懂色蜜乳| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 97干在线视频| 国模限制级电影| 97碰| 99热18这里只有精品| 久久毛卡| 蜜臀久久99精品久久久久久成人小说 | 亚洲日韩AV视色| 一起草视频在线| 嗯啊不要啊在线 | 国产亚卅97| 久久午夜鲁丝片| 欧美成人综合| 熟女人妻一区二区三区| 久区视频| 嗯啊啊啊轻点视频| 久久直播国产| 天天色怡春院| 丁香五月电影| 亚洲一区中文精品| 久草资源在线视频官方总站日韩丝袜美腿 | 东京太热久久久| 可以免费看黄片的视频| 大香蕉伊人网WWWn0n| 亚洲精品白浆高清久久久久久| 日韩中文字幕2020| 人妻久久久久久久久久久久久久久| 精品78| 性性久久| 久久五月份| 中文字幕日韩电影人妻| 亚洲双插| 狠狠图片青青草| 欧美疯狂做爰xxxx| a级免费在线观看| 97热视频在线观看| 天天狠| 思思热影视| 欧美九九九九九| 色婷婷淫色网| 中文无码一二三区| 亚洲综合中文字幕有码| 色婷婷影院| 级做a爱无码性色永久免费| 国产精品电| 青青草原综合久久大伊人精品| 新婚人妻扶着粗大强行坐下| 国产精品精品系列在线观看| 97 国产精品| 国产有码一区| 大香蕉久久| 午夜啪啪片| 思思热国产高清| 又黄又硬又粗又长国产视频| 亚洲欧美日韩电影网站一区 | 清纯唯美第一页| 超碰这里只有精品| www.一本大99| 婷婷尹人大香蕉免费| 黄片aaaaa一区| 无码一区免费在线不卡| 欧美亚洲韩国视频十五区| 色情亚洲日本成人| 在线啊啊啊啊| 色噜噜综合在线| 曰韩成人免费视频| 18禁网站在线播放| 上海一级黄片| 国产精品麻豆免费视频| 女性喷水高潮在线观看| 色妇综合网| 俞拍自拍| 欧美伦乱| 97网站在线观看| 欧美亚洲激情一二三| 久久鲁夜| 狠狠搞 亚洲91| 尻女朋友一夜| 亚洲青青青视频在线| 久久伊人大香蕉| 国内毛片免费h片在线| 国产专区第一页| 日韩黄片视频试看| 日韩性爱1级片视频| 中文AV制服乱伦| 黄片免费日韩| 亚洲精品九九九| 成人性生活高清视频在线播放| 丝袜美腿丝袜| 欧日韩一二三f区| 亚洲怡春院| 中文字幕精品专区搜索结果91| 色爱综合网欧美| 欧美少妇第一页| 国产AV人人 夜夜人人澡| 熟妇视频一区二区三区在线观看| 91色女| 曰本精品久久久| 日韩免费人妻色情网站| 日韩三级在线观看mp4| 啊啊啊不要啊啊受不了了视频在线| 10000部十八禁看电影| 综精品久久久aaaa| 亚洲老司机123专区| 人人做人人妻人人夜视频| 思思久热在线精品66| 中国特猛少妇色xxx| 黑人性欧美| 亚洲天堂男| 91爱啪| 探花精品 一区二区| 一起草三级AV电影在线观看 | 熟女丝袜视频| 久久大线蕉一区| 97超碰这里只有精品| 97在线观看免费| 酒色综合网| 人妻干天天| 逼逼逼逼操操操操操操操操操午夜剧场 | 九九热超碰| 人人喜人人妻| 好屌色综合| 亚洲综人网| 青娱乐休闲视频在线观看| 日韩黄色av中文字幕| 欧美国产伊人久久久久| 大香蕉97久久| 偷窥自拍亚洲色图| 国产精品久久久久久久免牛肉蒲团| 亚洲色图8| 狠狠久久手机视频精品| 成人免费不卡在线视频| 国产精品天美传媒| 亚洲国产成人高清在线| 婷婷日韩一区二区三区中文字幕在线| 人妻一区久久二区三区色播| 亚洲无限观看| av网站免费看| 日韩免费看黄片| 91网亚洲| 久草在线| 日本黄 R色 成 人网站| 在线 亚洲 网爆 自拍| 色九色久| 国产精品久久久久无码Av网曝门| 一本一道vs波多野结衣| 亚洲色图大香| 久久久久深夜无码| 国产操逼视频在线观看| 狠狠 91| 国产熟女高潮一区二区三区| 日韩强奸av| 婷婷久久久| 色偷综合| 欧美亚洲第一页| 91色碰| 91欧美网| 新版天堂中文资源8在线| 自拍欧美| 大香蕉免费3| 国产四虎在线| 亚欧高清| 在线观看十八禁| 色五月激情AV在线| 久久成人午夜精品影院| 超碰在线人妻不卡| 久9综合在线| 日韩国产乱子伦App| 青青草精玖玖69精品| 四虎在线观看视频| 91丝袜美女国产| 熟妇一区,二区,三区。| 亚洲欧综合另类无码一区| 超碰这里只有精品| 九月丁香婷婷色| 激情图片亚洲色图| 午夜视频久久久久一区| 久久久穴999| 精品欧美不卡在线播放| 久久伊人在线五区| 69XX一中文字幕人妻91| 偷窥自拍亚洲色图| 久久只有精品| 校园春色综合色| 呦呦影院| 超碰97在线 欧美 国产| 亚洲av综合伊人久久| 日本高清电影欧美色图| 久久久久九九九九| 亚洲少妇诱惑| 超碰无码加勒比| 久久机热| 在线只有精品| 九久精品| 青青操少妇| 亚洲?V高清一区二区三区尤物| 操人妻丝袜高跟| 国内毛片欧美香蕉精品| 色五月第四色| AA特级绝黄| 在线五区| 97电影院超碰| 视频一区二区三区精品| 韩日精品福利视频一区不卡在线免| 国产精品毛片?v一区二区三区| 熟女网站最新| 五月婷婷六月色| 免费在线看黄片av| 日韩欧美资源| 国产激情视频在线观看| 校园春色亚洲| 亚洲欧美日韩国产丝袜自拍中文| 久久性爱城| 上特色A在线| 超碰夫妻97| 午夜精品久久久久久久99蜜桃一| 精品午夜福利| 国精综合一二三区影视| 日韩性爱播放| 国产成人在线观看网址| 人妻在线大香蕉| 五月天婷婷色| 国模不卡| 色欧洲| 亚洲色9| 亚洲欧美日韩综合在线尤物 | 你操综合| 天天弄天天操| 日韩一卡二卡三卡| 亚洲www91| 亚洲精品a人片在线观看视| 亚洲在线欧美| 天美欧美国产| 91黑丝少妇| 欧美久久人妻少妇一区二区| 最新欧美色网| 好爽要喷了| 熟妇xxxxx性春色| 夜夜嗨AV一区天天| 久久超碰国产一区二区三区| 91AV天美在线视频| 麻豆视频test| 亚卅熟女乱色| 新久久AV| 偷偷人人精品女女久久| 国产精品一区二区后入| 大香蕉伊人亚洲| 日韩成人大片在线观看| 涩综合导航| 久久精品一区一起草| 动漫av中文| 熟妇熟女亚洲天堂网| 丁香六月激情综合| 大象AV在线| 啪啪视频免费在线观看| 97天天综合网| 97精品国产97久久久久久免费| 亚洲综合色在线| 天天综合色图| 69视频福利导航| 黄页大片在线观看| 欧美午夜一区二区三区| 熟妇xxxxx性春色| 999热这里只有精品| 中文字幕av久久爽Av| 五月天激情网站| 制服乱伦| 日本3级一区二区免费| 国产www色在线观看| 人妻三级在线中文字幕| 偷拍视频青青草在线视频| 欧亚韩国999| 夜色97| 97色涩| 二对二中文字幕。| 色诱avtt| 少妇人妻精品| 欧美72网页| 啊啊啊好湿国产一二| 欧洲综合视频| 一二三啪啪专区| 人人摸人人干| 青青国产在线拍揄自揄拍| 免费农村成人少妇人妻Aa一区二区视频| 日韩AV一区二区三区四四| 国产成人网站在线观看| 色综合色色| 六月丁香啪啪| 中文字幕黑人大片| 成年女人一区| 一二三区在线| 日韩日韩日韩-国产乱码精品一区二区| 欧美日日人人天天| 2017,超碰| 九九热三级片| 日本影视久久免费| 亚洲图片色图欧美另类| 国产A v无码专区| 99精品视频在线观看免费| 色爱三区| 92福利社视频| 男人的天堂成人的社区| 老鸭窝黄色视频网站| 久久超碰av在线| 一卡二卡在线播放| 少妇高潮喷水无套久久久久久| 午夜操操操| 蜜桃香蕉久草精品在线| 亚欧美综合网| 91免费看一区二区三区 | 亚洲精品久| 丰满精品人妻少妇久久字幕| 蜜臀av中文字幕| 91老司机在线| 天天操人人操狠狠插| 精品一区二区人妖| 99视频内射三四| 99精品在线| 天天综合网久久ww| 青青操少妇| 欧美图片色五月天| 思思热国产高清| 人妻 丝袜美腿 中文字幕| 超碰在线成人| 五月天伊人| 97天天插| 黄骗免费网站| 首页中文字幕中文字幕免费| 欧美 亚洲 综合 制服| 欧美亚洲涩涩| 亚州男人天堂| 熟女精品va中文字幕| 95人妻爽爽人人做人人澡| 屌妞视频久久久久久久| 欧美色老汉| 青娱乐妇女性生活| 久久黄片国产一区二区| 中文字幕 国产区| 嗯……啊…嗯嗯…啊…好舒服| 九九九九九九九九九五码| 亚洲熟女乱色一区二区三区久久久| 在线无码网站| 一二三四区电影| 伊人一级免费黄片| 四色永久成人网站| 中国熟女网站| 一级二级在线观看| 在线观看av区| 色综和网| 91在线精品一区二区三区| 九九aV| 内射日韩大臀美女| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 综合天天。| 高清无码久操视频| 在线黄页看毛片| 超碰97首页| 亚洲精品成人动漫在线| 你操综合| 欧洲一区二区三区免费| A片大香蕉在线| 日韩人体偷拍| 啊啊啊啊免费视频| 精品性爱一二三区| 九九自拍伦理| 日韩成人精品| 91大神电影天堂| 精品久| 国产精品色| 欧美久久人妻少妇一区二区| 白丝被操91| 歐美一級亂黃99在綫精品| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 人妻夜夜爽天天爽麻豆三区网站 | 性爱乱伦一区| 噜噜噜久久亚洲精品色情| 操啊国产| 麻豆九九九| 国产91 丝袜在线播放00-百度| 色婷五月| 亚洲欧美清纯| 琪琪精品免费一区二区三区| 十八禁黄色成人网站观看| 欧美精品二区视频在线| 日日夜夜国产综合| 亚洲无无码αⅴ每日更新| 91九色丨国产丨爆乳| 操国产逼| 国产精品网站免费| 国产精品成人无码a v毛片| 自拍视频大全亚洲专媒视频/一区二区三区 | 欧美激情视频在线一区| 精品视频97| 日韩无码黄色片| 97超碰超欧美。| 在线人人人人人人精品超| 日韩熟女视频二区| 99无码视频| 久久专区| 日日黄色三级网站| 久草免费福利在线播放| 亚洲精品久久一区二区三区蜜桃臀| 91人妻做a观看视频| 一级免费精品| 69人妻精品一区二区绯色| 97超碰美女| 97色97好| 新婚人妻扶着粗大强行坐下| 精品国产乱码久久久久久久久久毛片| 91久久精品国产| 9国产超碰| 青青操视频在线| 99久久9| A 天堂| 亚洲图片 激情小说| 久久这里只精品99re66图| 精品人妻一区二区免费看| 国产欧美一区二区| 在线色导航| 久久噜噜噜精品国产亚洲综合| 草草影院最新网址| 欧成人精品一区二区三区| 大香蕉在线视频15| 国产操逼视频在线观看| 97精品一二区| 九九拍拍精品视频在线播放| 伊人黄色视频免费观看| 久久女人| 国产精品无码AV网站| 欧美色图在线视频少妇| 一道α片欧美| 69精品| 九九九精品美女| 麻豆天美在线| 九九草| 亚洲九月丁香| 久久国产对白激情浪潮 | 中国一级操逼视频| 久久久精选| 免费看片黄| AA丁香综合激情| 极品出轨视频网站| 欧州一区二区三区四区| 亚洲精品视频二区| 美欧色综合| 综合色图区| 国产亚洲精品美女| 欧美一级久久久久久久大片动画| 久久久久日本视| 97欧美| 激情婷婷五月天| 亚洲国产天堂| 精品国产嫩穴视频| 亚洲一区中文精品| www鬼畜国产男人的天堂| 黑人白女精品一区| 78超碰| 在线观看 99热| 亚洲、日韩、综合、另类| 亚洲国产成人精品999| 亚洲性刺激| 亚州少妇| 嫩草美女久久| 久久久久密臀视频| 五月丁香影院| 第四色奇米影视777| 国产熟女自拍| 懂色综合久久久| 色呦呦呦在线观看视频| 亚洲精品人体| 天天综合麻豆视频| 久久久久久久久久久久久9999| 日本99久久| 天天激色| 国模艳艳啪啪一区| 九久9精品| 屌妞视频久久久久久久| 综合色99| 97超碰美女| 淫乱图区| 亚洲nv男人的天堂网| jk白丝没脱就开始啪啪| 日韩内| 超碰98综合网| 六月激情网| 中文字幕91页| 大香蕉免费3| 先锋音影AV| 高潮内射在线| 欧美操逼视频二区| 无码逼| 超碰79人人乐| 亚州性色| 内射白嫩美女| 久久人人爽爽人人爽人人片αV| 亚洲在钱| 日逼97| 无码高清操逼| 一级性爱视频免费观看| 看看日B真人视频| 香一区二区三区| 青青色在线观看| 一区二区三区四区姦女| 亚洲国产麻豆一区二区三区| 中文字幕日本久久| 婷婷综合视频| 精品乱子一区二区三区99| 亚洲999综合| 亚洲激情深爱文学小说网站| 久久久久久久97| 午夜九九九九九九| 国产精品4p在线观看| 人人摸人人添人人操| 成人免费福利在线观看| 大香蕉操久久| 久神马| 欧美综合在线第一页| 欧美性爱第一区| 青青草影视蜜久久| 成人网址在线观看| 日本久久999| 久久大黄片| 91性| 97美日韩视频| 久久久99久9| 东京热激情视频一二三区| 欧美精品成人一区二区在线观看 | 99国产精品人妻人伦| 九九九不卡| 欧美国产婷婷久久| 自拍偷拍亚洲熟女妇人精品| 欧美黄片欧美黄片xxx| 色久综合| 久久亚洲不卡一区二区三区| 天美欧美国产| 国产精品日日摸天天碰| 91 丝袜在线播放| 日韩欧美亚洲自拍偷拍| 伊人黄色视频免费观看| 91Chinese在线| 大香蕉99热| 日韩欧美麻豆| 久久精品无码专区| 97资源视频| 男人天堂2012| 欧美综合 站| 九九九九久久久久| 亚洲色图殴美色图激情乱伦| 欧美美女自慰一区二区三区| 欧美韩国你懂得在线| 亚洲 日本 不卡| 日韩欧美国产一区二区三区四区| 久久精精区一区二区一蜜桃一区二区| 成人精品一区二区三区| 久久狠狠色噜噜狠狠狠狠97| 国产精品成人福利在线| 五月天黄色av| 91中文字幕在线观看| 先锋激情∨在线视频播放| 99色色网| 亚洲高清在线se| 密臀在线一区尤物| 亚洲色图日韩精品| 四季AV综合网址| 无码精品啪啪啪一区二区三区三州| 国产真实子伦对白| 五月天综合网| 蜜桃狠狠色伊人亚洲综合| 久久国产逼| 亚洲精品成人| 嗯嗯啊啊的视频| 97色碰| 亚洲不卡AV在线| 欧美另类天堂| 九久9精品| 久久香蕉影院| 热G综合热G中文| 高清无码一区二区三区| 亚洲国产综合久久久性感熟妇| 欧美精品激情| 一级A啪啪啪啪| 久操B网| 免费AV中文网在线观看| 精品精品精品| 97在线视频免费看| 天天爽天天| 97中文字幕九区| 综合色色婷婷| 大粗鳼巴久久久久| 99久视频| 91精品国久久久久久无码| 亚洲另类小说卡通动漫| 欧美在线伊人色| AAAA级日本片免费视频| 无码99| 97精品国产| 99re6久热只有精品6在线直播 | 大JI巴好深好爽又大又粗视频| 91狠狠色丁香婷婷综合久久精品| 久草成人影片| 久久五月丁香| 大香久久| 蜜臀久久99精品久久久久久久久| 欧美v日韩v亚洲v最新在线| 极品五月天噜噜| 久久久久久9| 91爰爱欧美| 操逼天美3区| 国产第二页| 久久婷婷视频| 亚洲欧美97| 长长久久曰曰夜夜成人网| 国产精品又黄又猛又粗| 天天看人人操屄犊摸阴| 精品国产一区二区三区四区在线看| 色网综合网| 粉嫩在线一区二区懂色| 97人人色| 久久手机视直播| 欧美一级AAAAAAA| 97超碰久久色| 欧美v亚洲v日韩v最新在线二区 | 区日韩亚洲乱码av电影| 视频一区二区免费在线| 人妻 欧美 中文| 5278欧美一区二区三区| 午夜啊啊| 99青草| 人人干人人操人人..com| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 99性爱| 色欲久久久久综合网| 操穴国产| 黄色大香焦1级‘′‘| 精品人妻久久久久一区二区三区| 水野优香在线观看| 伊人网青青| 日韩欧美蜜桃精品久久中文字幕久久 | 91天美传媒在线观看| 天天色播| A级国产欧美激情在线| 亚洲宗合网| 欧美日不卡| 国产精品一区二区校花| 精品免费成人久久| 操操操操操操| 日韩操逼HD| 俞拍久久国应视频| 九七毛片九九毛片 | 天天综合网AV91| 强奸乱伦麻豆| 33044男人的天堂深夜备| 又大又黄国产| 色就色综合| 激情小说亚洲视频| 免费a在线播放v| 亚洲久9| 成熟熟女国产精品一区二区| 99久久99久久综合| 涩涩涩综合| 久久噜噜噜精品国产亚洲综合| www鬼畜国产男人的天堂| 青椒国产97在线熟女| 精吧天堂| 久色网| 亚洲成人无码影院| 在线二区不卡| 91熟女少妇| 亚洲欧美另类少妇精品| 91N欧美| 一区在线国产播放| 国产第12页| 久久超碰97| 精品女同一区| 欧美少妇性乱| 日韩精品国产精品五码一区二区| 成年女人黄网站| 精品人妻丰满熟妇一区二区三| 亚洲天天精品| 狠狠色一区二区中文字幕| 中文字幕一区二区三区人妻少妇在线| 欧美成人黄网色网站| 精品人妻中文字幕4399| 欧美性爱一区二区| 99久久免费看精品国产一区| 天美传媒AV国产在线| www.狠狠操| 婷婷AV一区二区三区| 亚洲av性爱电影| 97香蕉网| 欧美爱爱97| 中国人高清www色视频免费| 精品国产乱码久久久久久久| 久久超碰免费的| 混色激情av| 久久亚洲不卡| 日本人体九九九九九九| 日韩丝袜二区| 看一级特黄a大一片| 黑丝自慰喷水网站| 亚洲色图欧美色图日韩色图| 欧美91精品国产自产| 精品欧美乱码久| 日本一线产区和二线产区伦理片| 精品人妻15区| 日韩本不卡视频在线观看| 国产小炒后入式| 校园春色综合香蕉| 极品粉嫩少妇视频| 1二区9| 成人熟女区| 欧美 亚洲 另类 综合| 国产老熟女| 熟女一区二区| 日本男人插女人的逼黄色| 女人一区| 和协无码影院| 亚洲色悠悠久久88| 亚洲精品 欧美精品| 后入式在线免费观看60秒| av麻豆啪啪| 欧美熟女丝袜| 日韩无码人妻中字久久三区四区| 噜噜噜噜天天狠狠| 中出在线视频| 青青草在线视频播放器| 熟女少妇一区二区三区| 97超碰色色| 欧州一区二区三区四区| 一区不卡在线观看av| 日本免费专区| 精品在线观看视频在线| 国产精品亚洲免费| 天天日天天插| AV天堂男人的天堂| 亚av顶级裸体一区二区三区四区五区 | 国产乱伦视频污| 岛国视频免费在线观看| 在线观看精品国产免费| 五月丁香亭亭| 中文字幕视频一区视频二区| 97视频在线观看播放与子乱对白在线……|