@@ -90,7 +90,7 @@ struct Cli {
9090 obfuscate : bool ,
9191
9292 /// 難読化レベル (1=軽量, 2=標準, 3=全パス有効, 4=最大)
93- #[ arg( long = "obf-level" , default_value_t = 3 ) ]
93+ #[ arg( long = "obf-level" , default_value_t = 3 , value_parser = clap :: value_parser! ( u8 ) . range ( 1 ..= 4 ) ) ]
9494 obf_level : u8 ,
9595
9696 /// CFF(制御フロー平坦化)を無効化
@@ -109,13 +109,13 @@ struct Cli {
109109 #[ arg( long = "obf-no-indirect-calls" ) ]
110110 obf_no_indirect_calls : bool ,
111111
112- /// ジャンクコード挿入頻度(N命令ごと)
113- #[ arg( long = "obf-junk-freq" ) ]
114- obf_junk_freq : Option < usize > ,
112+ /// ジャンクコード挿入頻度(N命令ごと、1以上 )
113+ #[ arg( long = "obf-junk-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
114+ obf_junk_freq : Option < u64 > ,
115115
116- /// 不透明述語頻度(N個の値生成命令ごと)
117- #[ arg( long = "obf-pred-freq" ) ]
118- obf_pred_freq : Option < usize > ,
116+ /// 不透明述語頻度(N個の値生成命令ごと、1以上 )
117+ #[ arg( long = "obf-pred-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
118+ obf_pred_freq : Option < u64 > ,
119119
120120 /// 算術置換を無効化
121121 #[ arg( long = "obf-no-arith-subst" ) ]
@@ -161,33 +161,33 @@ struct Cli {
161161 #[ arg( long = "obf-no-strip" ) ]
162162 obf_no_strip : bool ,
163163
164- /// 算術置換頻度(N回に1回適用)
165- #[ arg( long = "obf-arith-freq" ) ]
166- obf_arith_freq : Option < usize > ,
164+ /// 算術置換頻度(N回に1回適用、1以上 )
165+ #[ arg( long = "obf-arith-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
166+ obf_arith_freq : Option < u64 > ,
167167
168- /// レジスタシャッフル頻度(N命令ごとに挿入)
169- #[ arg( long = "obf-reg-shuffle-freq" ) ]
170- obf_reg_shuffle_freq : Option < usize > ,
168+ /// レジスタシャッフル頻度(N命令ごとに挿入、1以上 )
169+ #[ arg( long = "obf-reg-shuffle-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
170+ obf_reg_shuffle_freq : Option < u64 > ,
171171
172172 /// 偽スタックスロット数
173173 #[ arg( long = "obf-stack-padding" ) ]
174174 obf_stack_padding : Option < usize > ,
175175
176- /// 偽スタック操作の挿入頻度(N命令ごと)
177- #[ arg( long = "obf-stack-fake-freq" ) ]
178- obf_stack_fake_freq : Option < usize > ,
176+ /// 偽スタック操作の挿入頻度(N命令ごと、1以上 )
177+ #[ arg( long = "obf-stack-fake-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
178+ obf_stack_fake_freq : Option < u64 > ,
179179
180- /// 命令置換頻度(N命令ごと)
181- #[ arg( long = "obf-instr-subst-freq" ) ]
182- obf_instr_subst_freq : Option < usize > ,
180+ /// 命令置換頻度(N命令ごと、1以上 )
181+ #[ arg( long = "obf-instr-subst-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
182+ obf_instr_subst_freq : Option < u64 > ,
183183
184- /// インライン展開頻度(N回の適格呼び出しごとにインライン化)
185- #[ arg( long = "obf-inline-freq" ) ]
186- obf_inline_freq : Option < usize > ,
184+ /// インライン展開頻度(N回の適格呼び出しごとにインライン化、1以上 )
185+ #[ arg( long = "obf-inline-freq" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
186+ obf_inline_freq : Option < u64 > ,
187187
188- /// アウトライン最小ブロックサイズ
189- #[ arg( long = "obf-outline-min-block" ) ]
190- obf_outline_min_block : Option < usize > ,
188+ /// アウトライン最小ブロックサイズ(1以上)
189+ #[ arg( long = "obf-outline-min-block" , value_parser = clap :: value_parser! ( u64 ) . range ( 1 .. ) ) ]
190+ obf_outline_min_block : Option < u64 > ,
191191
192192 /// Input C source file
193193 source : PathBuf ,
@@ -256,6 +256,8 @@ fn main() {
256256 }
257257 if cli. obf_no_opsec {
258258 config. opsec = false ;
259+ config. opsec_warn = false ;
260+ config. opsec_strip = false ;
259261 }
260262 if cli. obf_no_opsec_warn {
261263 config. opsec_warn = false ;
@@ -264,33 +266,33 @@ fn main() {
264266 config. opsec_strip = false ;
265267 }
266268
267- // 頻度オーバーライド
269+ // 頻度オーバーライド(clap の value_parser で 1以上に制約済み)
268270 if let Some ( freq) = cli. obf_junk_freq {
269- config. junk_freq = freq;
271+ config. junk_freq = freq as usize ;
270272 }
271273 if let Some ( freq) = cli. obf_pred_freq {
272- config. pred_freq = freq;
274+ config. pred_freq = freq as usize ;
273275 }
274276 if let Some ( freq) = cli. obf_arith_freq {
275- config. arith_freq = freq;
277+ config. arith_freq = freq as usize ;
276278 }
277279 if let Some ( freq) = cli. obf_reg_shuffle_freq {
278- config. reg_shuffle_freq = freq;
280+ config. reg_shuffle_freq = freq as usize ;
279281 }
280282 if let Some ( n) = cli. obf_stack_padding {
281283 config. stack_frame_padding = n;
282284 }
283285 if let Some ( freq) = cli. obf_stack_fake_freq {
284- config. stack_frame_fake_freq = freq;
286+ config. stack_frame_fake_freq = freq as usize ;
285287 }
286288 if let Some ( freq) = cli. obf_instr_subst_freq {
287- config. instr_subst_freq = freq;
289+ config. instr_subst_freq = freq as usize ;
288290 }
289291 if let Some ( freq) = cli. obf_inline_freq {
290- config. func_inline_freq = freq;
292+ config. func_inline_freq = freq as usize ;
291293 }
292294 if let Some ( n) = cli. obf_outline_min_block {
293- config. func_outline_min_block = n;
295+ config. func_outline_min_block = n as usize ;
294296 }
295297
296298 Some ( config)
0 commit comments