@@ -195,7 +195,7 @@ fn read_string(pid: u32, addr: usize, size: usize) -> Result<String> {
195
195
} ;
196
196
197
197
if buf_str. len ( ) != size {
198
- Err ( anyhow:: anyhow!( "invalid utf8 string" ) )
198
+ Err ( anyhow:: anyhow!( format! ( "except {} characters, but found: {} --> {}" , size , buf_str . len ( ) , buf_str ) ) )
199
199
} else {
200
200
Ok ( buf_str)
201
201
}
@@ -205,9 +205,9 @@ fn read_string(pid: u32, addr: usize, size: usize) -> Result<String> {
205
205
fn read_string_or_ptr ( pid : u32 , addr : usize , size : usize ) -> Result < String > {
206
206
match read_string ( pid, addr, size) {
207
207
Ok ( ss) => Ok ( ss) ,
208
- Err ( _ ) => {
208
+ Err ( e ) => {
209
209
let str_ptr = read_number :: < usize > ( pid, addr) ?;
210
- Ok ( read_string ( pid, str_ptr, size) ?)
210
+ Ok ( read_string ( pid, str_ptr, size) . map_err ( |_| e ) ?)
211
211
}
212
212
}
213
213
}
@@ -529,6 +529,7 @@ fn dump_wechat_info_v4(
529
529
let nick_name_length = u64:: from_le_bytes ( phone_str_match. data [ ..8 ] . try_into ( ) . unwrap ( ) ) ;
530
530
let phone_str_address = phone_str_match. base + phone_str_match. offset + 0x10 ;
531
531
let phone_str = read_string ( pid, phone_str_address, 11 ) . unwrap ( ) ;
532
+ println ! ( "[+] found phone at 0x{:x} --> {}********" , phone_str_address, & phone_str[ ..3 ] ) ;
532
533
let nick_name =
533
534
read_string_or_ptr ( pid, phone_str_address - 0x20 , nick_name_length as usize ) . unwrap ( ) ;
534
535
@@ -1076,7 +1077,7 @@ fn cli() -> clap::Command {
1076
1077
use clap:: { arg, value_parser, Command } ;
1077
1078
1078
1079
Command :: new ( "wechat-dump-rs" )
1079
- . version ( "1.0.21 " )
1080
+ . version ( "1.0.22 " )
1080
1081
. about ( "A wechat db dump tool" )
1081
1082
. author ( "REinject" )
1082
1083
. help_template ( "{name} ({version}) - {author}\n {about}\n {all-args}" )
0 commit comments