353
348
search_cmdhit = config_get("cmd.hit");
354
search_count = (int)config_get_i("cfg.count");
355
search_flag = (int)config_get("search.flag");
349
search_count = (int)(size_t)config_get_i("cfg.count");
350
search_flag = (int)(size_t)config_get("search.flag");
356
351
search_from = config_get_i("search.from");
357
352
search_to = config_get_i("search.to");
358
search_verbose = (int)config_get("search.verbose");
353
search_verbose = (int)(size_t)config_get("search.verbose");
360
if (config_get("search.inar")) {
361
if (! ranges_get_n(range_n++, &search_from, &search_to)) {
362
eprintf("No ranges defined\n");
355
if (config_get("search.inar")) {
356
if (! ranges_get_n(range_n++, &search_from, &search_to)) {
357
eprintf("No ranges defined\n");
360
printf("Searching using ranges...\n");
365
printf("Searching using ranges...\n");
363
hit_idx = 1; // reset hit index
368
364
radare_cmd("f -hit0_*", 0);
369
365
radare_cmd("f -hit0_*", 0);
370
366
radare_cmd("fs search", 0);
374
align = config_get_i("search.align");
375
t->callback = &radare_tsearch_callback;
377
// foreach token in range
378
for(j=i=0;i<len;i++,j++) {
389
if (str[0]=='\0') break;
394
printf("syntax error\n");
370
align = config_get_i("search.align");
371
t->callback = &radare_tsearch_callback;
373
// foreach token in range
374
for(j=i=0;i<len;i++,j++) {
385
if (str[0]=='\0') break;
390
printf("syntax error\n");
393
for(j = num;j<=num2;j++)
394
binparse_add_search(t, j);
395
} else binparse_add_search(t, num2);
403
go_alarm(search_alarm);
407
config.seek = search_from;
408
limit = config.limit;
412
//D eprintf("Searching from 0x%08llx to 0x%08llx\n", search_from, (search_to==0)?-1:search_to);
413
for(i=1, radare_read(0); !config.interrupted; i = radare_read(1)) {
416
//eprintf("read err at 0x%08llx\n", config.seek);
419
if (limit && config.seek >= limit) break;
420
if (config.debug && config.seek == 0xFFFFFFFF) break;
421
for(i=0;!config.interrupted && i<config.block_size;i++) {
422
if (update_tlist(t, config.block[i], config.seek+i)) {
397
for(j = num;j<=num2;j++)
398
binparse_add_search(t, j);
399
} else binparse_add_search(t, num2);
408
go_alarm(search_alarm);
412
config.seek = search_from;
413
limit = config.limit;
417
//D eprintf("Searching from 0x%08llx to 0x%08llx\n", search_from, (search_to==0)?-1:search_to);
418
for(i=1, radare_read(0); !config.interrupted; i = radare_read(1)) {
421
//eprintf("read err at 0x%08llx\n", config.seek);
424
if (limit && config.seek >= limit) break;
425
if (config.debug && config.seek == 0xFFFFFFFF) break;
426
for(i=0;!config.interrupted && i<config.block_size;i++) {
427
if (update_tlist(t, config.block[i], config.seek+i)) {
434
} while(config_get("search.inar") && ranges_get_n(range_n++, &search_from, &search_to));
429
} while(config_get("search.inar") && ranges_get_n(range_n++, &search_from, &search_to));
435
430
binparser_free(t);
437
432
go_alarm(SIG_IGN);