Showing
3 changed files
with
54 additions
and
0 deletions
... | @@ -66,6 +66,16 @@ namespace VulnCrawler | ... | @@ -66,6 +66,16 @@ namespace VulnCrawler |
66 | } | 66 | } |
67 | public static void Run() { | 67 | public static void Run() { |
68 | // Repository 폴더들이 있는 주소를 지정하면 하위 폴더 목록을 가져옴(Repository 목록) | 68 | // Repository 폴더들이 있는 주소를 지정하면 하위 폴더 목록을 가져옴(Repository 목록) |
69 | + | ||
70 | + // var fields = VulnWorker.GetCriticalVariant(@"return _is_safe_url(url, host) and _is_safe_url(url.replace('\\', '/'), host)"); | ||
71 | + var fields = VulnWorker.GetCriticalVariant(@"if(i + inl < bl) {"); | ||
72 | + | ||
73 | + foreach (var item in fields) | ||
74 | + { | ||
75 | + Console.WriteLine(item); | ||
76 | + } | ||
77 | + | ||
78 | + return; | ||
69 | var directorys = Directory.GetDirectories(@"c:\VulnPy"); | 79 | var directorys = Directory.GetDirectories(@"c:\VulnPy"); |
70 | if (directorys.Length == 0) { | 80 | if (directorys.Length == 0) { |
71 | Console.WriteLine("Repository 목록 찾기 실패"); | 81 | Console.WriteLine("Repository 목록 찾기 실패"); | ... | ... |
... | @@ -13,6 +13,8 @@ namespace VulnCrawler | ... | @@ -13,6 +13,8 @@ namespace VulnCrawler |
13 | // 추상 클래스 | 13 | // 추상 클래스 |
14 | public abstract class VulnAbstractCrawler | 14 | public abstract class VulnAbstractCrawler |
15 | { | 15 | { |
16 | + | ||
17 | + private static readonly string[] ReservedList = { "if", "return", "break", "while", "typedef" }; | ||
16 | /// <summary> | 18 | /// <summary> |
17 | /// 생성자 | 19 | /// 생성자 |
18 | /// 경로를 입력받아서(path) | 20 | /// 경로를 입력받아서(path) |
... | @@ -132,6 +134,44 @@ namespace VulnCrawler | ... | @@ -132,6 +134,44 @@ namespace VulnCrawler |
132 | } | 134 | } |
133 | return string.Empty; | 135 | return string.Empty; |
134 | } | 136 | } |
137 | + | ||
138 | + public static IEnumerable<string> GetCriticalVariant(string line) | ||
139 | + { | ||
140 | + | ||
141 | + // 메서드 정규식 패턴 | ||
142 | + string methodPattern = @"(\w+)\("; | ||
143 | + // 변수 정규식 패턴 | ||
144 | + string fieldPattern = @"\w+"; | ||
145 | + // 메서드 목록 | ||
146 | + var methodSets = new HashSet<string>(); | ||
147 | + var methods = Regex.Matches(line, methodPattern); | ||
148 | + // 현재 코드 라인에서 메서드 목록 추가 | ||
149 | + foreach (var met in methods) | ||
150 | + { | ||
151 | + var method = met as Match; | ||
152 | + if (method.Success) | ||
153 | + { | ||
154 | + Console.WriteLine(method.Groups[1].Value); | ||
155 | + methodSets.Add(method.Groups[1].Value); | ||
156 | + } | ||
157 | + } | ||
158 | + Console.WriteLine("----"); | ||
159 | + var vars = Regex.Matches(line, fieldPattern); | ||
160 | + // 변수 목록에서 메서드 목록에 있는 것 제외하고 반환 | ||
161 | + foreach (var x in vars) | ||
162 | + { | ||
163 | + var field = x as Match; | ||
164 | + if (field.Success) | ||
165 | + { | ||
166 | + if (methodSets.Contains(field.Value)) | ||
167 | + { | ||
168 | + continue; | ||
169 | + } | ||
170 | + yield return field.Value; | ||
171 | + } | ||
172 | + } | ||
173 | + } | ||
174 | + | ||
135 | /// <summary> | 175 | /// <summary> |
136 | /// MD5 함수 | 176 | /// MD5 함수 |
137 | /// </summary> | 177 | /// </summary> | ... | ... |
... | @@ -109,6 +109,10 @@ namespace VulnCrawler | ... | @@ -109,6 +109,10 @@ namespace VulnCrawler |
109 | Console.WriteLine($"Original Func: {originalFunc}"); | 109 | Console.WriteLine($"Original Func: {originalFunc}"); |
110 | // 해쉬 후 | 110 | // 해쉬 후 |
111 | Console.WriteLine($"Original Func MD5: {md5}"); | 111 | Console.WriteLine($"Original Func MD5: {md5}"); |
112 | + Console.BackgroundColor = ConsoleColor.DarkRed; | ||
113 | + Console.WriteLine($"Patched: \n{entry.Patch}"); | ||
114 | + | ||
115 | + Console.ResetColor(); | ||
112 | Console.WriteLine("=============================="); | 116 | Console.WriteLine("=============================="); |
113 | 117 | ||
114 | #endregion | 118 | #endregion | ... | ... |
-
Please register or login to post a comment