#!/usr/bin/perl # use DynaLoader; push(@dl_library_path,'/lib'); my $symbol=$ARGV[0]; @dl_resolve_using = DynaLoader::dl_findfile(qw(-ldl -lc)); my $lib_name='/lib/libc.so.6'; my $libref=DynaLoader::dl_load_file($lib_name,0x00001); if (not defined $libref) { die "load lib: $! \n";} my $symref =DynaLoader::dl_find_symbol($libref, $symbol); #$symref -= 0x74000; printf "%s : %4x \n",$symbol,$symref; #### int search(char *pattern) { void *p; int addr; /* dlopen() the main program */ if ( !(p = dlopen(NULL, RTLD_LAZY)) ) { fprintf(stderr, "%s\n", dlerror()); exit(-1); } /* search for the pattern */ if ( !(addr = (int)dlsym(p, pattern)) ) { fprintf(stderr, "%s\n", dlerror()); exit(-1); } dlclose(p); return(addr); } #### $ ./lib.pl system system : 0x400c52f0 $ ./libcs -s system system: 0x400512f0 $ ./lib.pl printf printf : 0x400d0d44 $ ./libcs -s printf printf: 0x4005cd44