@@ -389,7 +389,7 @@ int argmain(int argc, char **argv)
389389
390390 if (!strcmp (argv [0 ], "csearch" ))
391391 {
392- if (argc != 2 )
392+ if (argc != 2 || argc != 3 )
393393 goto help ;
394394
395395 if (search == VAL_NONE )
@@ -398,26 +398,51 @@ int argmain(int argc, char **argv)
398398 return 0 ;
399399 }
400400
401- u8 u8NewVal = 0 ;
402- u16 u16NewVal = 0 ;
403- u32 u32NewVal = 0 ;
404- u64 u64NewVal = 0 ;
401+ u8 u8NewLowVal = 0 ;
402+ u16 u16NewLowVal = 0 ;
403+ u32 u32NewLowVal = 0 ;
404+ u64 u64NewLowVal = 0 ;
405+
406+ u8 u8NewUppVal = 0 ;
407+ u16 u16NewUppVal = 0 ;
408+ u32 u32NewUppVal = 0 ;
409+ u64 u64NewUppVal = 0 ;
405410
406411 if (search == VAL_U8 )
407412 {
408- u8NewVal = strtoul (argv [1 ], NULL , 10 );
413+ u8NewLowVal = strtoul (argv [1 ], NULL , 10 );
409414 }
410415 else if (search == VAL_U16 )
411416 {
412- u16NewVal = strtoul (argv [1 ], NULL , 10 );
417+ u16NewLowVal = strtoul (argv [1 ], NULL , 10 );
413418 }
414419 else if (search == VAL_U32 )
415420 {
416- u32NewVal = strtoul (argv [1 ], NULL , 10 );
421+ u32NewLowVal = strtoul (argv [1 ], NULL , 10 );
417422 }
418423 else if (search == VAL_U64 )
419424 {
420- u64NewVal = strtoull (argv [1 ], NULL , 10 );
425+ u64NewLowVal = strtoull (argv [1 ], NULL , 10 );
426+ }
427+
428+ if (argc == 3 )
429+ {
430+ if (search == VAL_U8 )
431+ {
432+ u8NewUppVal = strtoul (argv [2 ], NULL , 10 );
433+ }
434+ else if (search == VAL_U16 )
435+ {
436+ u16NewUppVal = strtoul (argv [2 ], NULL , 10 );
437+ }
438+ else if (search == VAL_U32 )
439+ {
440+ u32NewUppVal = strtoul (argv [2 ], NULL , 10 );
441+ }
442+ else if (search == VAL_U64 )
443+ {
444+ u64NewUppVal = strtoull (argv [2 ], NULL , 10 );
445+ }
421446 }
422447
423448 u64 newSearchSize = 0 ;
@@ -427,7 +452,7 @@ int argmain(int argc, char **argv)
427452 {
428453 u8 val ;
429454 svcReadDebugProcessMemory (& val , debughandle , searchArr [i ], sizeof (u8 ));
430- if (val == u8NewVal )
455+ if (val == u8NewLowVal || ( argc == 3 && ( val >= u8NewLowVal && val <= u8NewUppVal )) )
431456 {
432457 printf ("Got a hit at %lx!\r\n" , searchArr [i ]);
433458 searchArr [newSearchSize ++ ] = searchArr [i ];
@@ -437,7 +462,7 @@ int argmain(int argc, char **argv)
437462 {
438463 u16 val ;
439464 svcReadDebugProcessMemory (& val , debughandle , searchArr [i ], sizeof (u16 ));
440- if (val == u16NewVal )
465+ if (val == u16NewLowVal || ( argc == 3 && ( val >= u16NewLowVal && val <= u16NewUppVal )) )
441466 {
442467 printf ("Got a hit at %lx!\r\n" , searchArr [i ]);
443468 searchArr [newSearchSize ++ ] = searchArr [i ];
@@ -447,7 +472,7 @@ int argmain(int argc, char **argv)
447472 {
448473 u32 val ;
449474 svcReadDebugProcessMemory (& val , debughandle , searchArr [i ], sizeof (u32 ));
450- if (val == u32NewVal )
475+ if (val == u32NewLowVal || ( argc == 3 && ( val >= u32NewLowVal && val <= u32NewUppVal )) )
451476 {
452477 printf ("Got a hit at %lx!\r\n" , searchArr [i ]);
453478 searchArr [newSearchSize ++ ] = searchArr [i ];
@@ -457,7 +482,7 @@ int argmain(int argc, char **argv)
457482 {
458483 u64 val ;
459484 svcReadDebugProcessMemory (& val , debughandle , searchArr [i ], sizeof (u64 ));
460- if (val == u64NewVal )
485+ if (val == u64NewLowVal || ( argc == 3 && ( val >= u64NewLowVal && val <= u64NewUppVal )) )
461486 {
462487 printf ("Got a hit at %lx!\r\n" , searchArr [i ]);
463488 searchArr [newSearchSize ++ ] = searchArr [i ];
0 commit comments