Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

微信过滤手机号并上传相关信息到服务器

Notifications You must be signed in to change notification settings

bingwin/ClassifyDemo

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClassifyDemo

1.0

区分手机号得到相应手机号是否存在微信用户,用户是否状态异常,还有获取到微信id和地区,性别及昵称。

输入:手机号清单文本

输出:用户存在,用户状态异常,用户不存在,用户信息4个文本。

1.2

新增hook类。这个是利用Xposed的框架的实现的,要hoonk的是微信的方法,得到搜索时的界面信息,信息放在bundle里面,从bundle中取出我们想要的数据。对了,需求变了,现在要获取多几个数据,用户的个性签名,v1值,v2值。

然后就是将hook到的信息传输到我们的MAinActivity中,再将数据操作写入到文件中去。然后这里就是个大坑,本来以为是线程间的通信,通过同步锁来实现同步,实现数据的传输。结果发现这其实是两个进程,所以就得用进程间的通信,这个就麻烦了。

因为进程间的通信,所以同步锁就失效了,而且变量不能直接传输。所以就得用进程间的通信了,开始时考虑直接用共享文件来做,但是文件的同步很容易出问题,Hook方法所在进程创建文件,把数据储存进临时文件,同时把这个文件拿来当成是进程间的同步标识,但是Activity所在进程拿数据时,可能文件还没写入完成或者说写了一半,此时那边的拿就很有问题了。咦,突然想到,用两个文件,hook的逻辑 1、先删除标识文件 2、将数据写入储存的临时文件。 3、创建标识文件

而Activity那边的逻辑。 1、do while 判断标识文件是否存在 2、 将储存数据的临时文件的数据读取出来,写入本地。

这样应该是没有问题的。

项目中不是用文件的方式了,是用ContentProvider的方式,因为ContentProvider是一个数据暴露的接口,可以用于进程间的通信,而SharedPreference的Multi Process的模式被抛弃了,然而ContentProvider还有一个问题,它不能储存数据的,网上很多都是将数据放入数据库中,但是我不想用数据库,所以用了SharedPreference的方式储存数据。此时需要处理的就是SharedPreference的是ContentValues数据,而ContentProvider却是操作uri。所以在其查询方法中应该自定义Cursor。利用get/set Extras的方式操作bundle来实现数据的操作。这里有个需要注意的是因为操作SharedPreference需要context对象,但是获取Activity / Service / ContentProvider的context都没有用。要获取当前hook所在的进程的context。 这里获取的方式也是通过hook方法来获取的。

最后本来以为搞定了,结果在远程机器上跑的时候,出现了一大堆问题。zzz,网络跟cpu都下降了,一开始出现了找不到添加按钮,所以进不去判断是那种情形的方法,将do while 获取添加按钮的时间调整为20s。而且每次都重新获取根节点。然后将判断是哪种情形的逻辑并行处理,不用设为串行,这样就不会浪费时间了,然后在获取节点时可能会出现节点为null的情况,此时在函数中添加判断节点不为null即可。

1.3

改进几个bug

1、昵称含特殊符号时换行了

2、个性签名含特殊符号时换行了

3、有的地区没有获取到

新增几个功能

1、记录每次翻译的总个数

2、记录当前翻译的个数

3、记录翻译的开始和结束时间

4、自定义异常类,实现超时(例如网络引起)、等待辅助功能类、等待hook函数超时的异常获取。在主界面中显示异常的类型,还有停止当前程序。

1.4

1、新增将数据存储在数据库的功能(为了后面的跟服务端交互)

2、新增toast打印当前翻译进度

3、新增停止按钮

4、添加保存进度的功能,可以把前面没做完的任务继续执行下去

2.0

改革系统的设计了。

直接从后台获取待分类的手机号,首先将数据插入数据库,然后在开始分类,分类完成后再更新数据状态,最后将数据一起上传到服务器。

其中有很多细节需要处理,比如一开始就是先判断数据库有没有还没做完的任务,如若有就先翻译再上传,然后还有判断数据库有没有没上传的数据,有的话也是自动处理;上传过程是while循环的,便于异常的处理。

整个逻辑过程都需要异常处理,然后在主界面中显示,还有做到网络中断后的处理,还有模拟器被关闭的处理。

实现开机自启动,让其自己不断地做任务。

2.1

1、当app获取到异常信息时,利用sharedPrefrences来存储数据,点击app就可以在ui界面中再次从sharedPrefrences中拿出来复原

2、辅助功能类获取超时的处理,利用while循环来保证可靠性,特别的输入手机号后按两下回车的时候

3、动态获取userid,这个是用于与后台交互时需要的函数参数

4、整理整体逻辑,下次进来时会把未翻译的翻译完成后,未提交到服务器的先提交

2.2

1、保证手机号码的填入

2、缩短每次任务失败到重新启动的时间间隔

3、修改等待hook类的代码逻辑

4、新增每次获取根节点去操作前都会判断是否为空

2.3

修复程序突然停止运行以及上传到服务器失败的问题。

修改数据库定义表的字段类型

2.4

修改上传失败的时抛出异常,并在主界面显示。

将spaceid由1改为0

2.5

1、修改上传时的spaceid 的选择和更改

2、新增翻译模式,只走翻译而不是过滤。

2.6

1、设置三个全局变量用于控制模式的切换,切换spaceid,翻译/过滤模式,每次拉取的数量

2、修复抛出异常处理的bug

2.7

1、修改界面布局ui

2、更改界面更新操作,在onResume()中刷新界面数据

About

微信过滤手机号并上传相关信息到服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.