<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ccczhi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ccczhi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ccczhi]]></copyright><item><title><![CDATA[Android6.0以上倒入证书的流程]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/115531952</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/115531952</guid><author>ccczhi</author><pubDate>Thu, 08 Apr 2021 21:34:34 +0800</pubDate><description><![CDATA[一.导出证书（如下图）:

把证书(.pem格式)导出到本地路径,名称为charles.pem
二.修改名字
1.使用openssl
openssl x509 -inform PEM -subject_hash_old -in cacert.pem

2.将输出类似   8efb32d4 的值进行复制
3.重命名证书:
mv charles.pem 8efb32d4.0

三.将证书导入到手机
adb root    ------- 可不操作

adb remount     ------- 可不操作

a]]></description><category></category></item><item><title><![CDATA[android studio动态调试apk]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/114235091</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/114235091</guid><author>ccczhi</author><pubDate>Sun, 28 Feb 2021 18:46:28 +0800</pubDate><description><![CDATA[一.让apk能够动态调试
	方法一：
	方法二:

二.使用apktool反编译apk命令如下:
	apktool d xxx.apk --only-main-classes

三.使用android studio打开（要是导入）


然后一直下一步

四.环境配置完成后，挂起apk命令如下
adb shell am start -D -n 包名/入口函数

五.打断点,开始调试


...]]></description><category></category></item><item><title><![CDATA[MAC上安装apktool教程]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/114231098</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/114231098</guid><author>ccczhi</author><pubDate>Sun, 28 Feb 2021 17:15:36 +0800</pubDate><description><![CDATA[一.在官网上下载apktool_version.jar
下载地址:http://code.google.com/p/android-apktool/downloads/list

二.创建一个apktool的文件内容如下:
具体见百度网盘

三.环境的配置
1.将步骤1中下载的apktool_version.jar 改名为: apktool.jar
2.将步骤2的中apktool文件和apktool.jar 移动到/usr/local/bin


...]]></description><category></category></item><item><title><![CDATA[更新Android Atudio导入smali无效]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/107597936</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/107597936</guid><author>ccczhi</author><pubDate>Sun, 26 Jul 2020 19:07:35 +0800</pubDate><description><![CDATA[正常情况我们是用的smaliidea这个插件来识别smali,
新版本后IntelliJIdea增加了一个默认的smali插件,可以在plugin找到这个插件,名为:smali support,并且默认*.smali的文件使用这个插件,导致我们的插件没有生效**(注意:这个插件不能干掉他,AndroidStudio在启动的时候会检查这个插件,如果没有就会报错,那么就尴尬了,然后就一直启动不了,IntelliJIdea是没有问题的)**


解决方案
1.先安装smaliidea插件:
下载地址:https.]]></description><category></category></item><item><title><![CDATA[Python内核阅读]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/107379630</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/107379630</guid><author>ccczhi</author><pubDate>Thu, 16 Jul 2020 11:42:52 +0800</pubDate><description><![CDATA[一.源码获取:

源码从github上获取

git clone https://github.com/python/cpython

2.切换版本用
git checkout v3.6.2

二.文件介绍:

Include: 包括Python提供的所有头文件, 可以用于c/c++扩展
Lib: Python的标准库, 全部都是用python写的
Modules: 包含了C语言编写的模块, 比如random, StringIO 等
Parser: 包含了python解释器中的scanner和parser部]]></description><category></category></item><item><title><![CDATA[使用逍遥模拟器监控模拟器中某app是否正常正常运行]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/107322257</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/107322257</guid><author>ccczhi</author><pubDate>Tue, 14 Jul 2020 14:37:41 +0800</pubDate><description><![CDATA[/usr/bin/python3
--coding:utf8--
“”"
功能:监控模拟器是否运行正常
“”"
from collections import *
import subprocess
import time
基本参数
MEMUC_PATH = “D:/software/virtual-machine/xiaoyao/MEmu/memuc”
ADB_PATH = “D:/software/virtual-machine/xiaoyao/MEmu/adb”
MEMUC_PATH = “D:/so]]></description><category></category></item><item><title><![CDATA[IDA动态调试]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/107168949</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/107168949</guid><author>ccczhi</author><pubDate>Mon, 06 Jul 2020 22:23:18 +0800</pubDate><description><![CDATA[1.将android_server（在IDA的dbgsrv的目录下）推送到手机中
&gt;&gt;&gt;&gt;&gt;&gt;adb push /xxx/xxx/dbgsrv/android_server /data/local/tmp/as
&gt;&gt;&gt;&gt;&gt;&gt; adb shell
&gt;&gt;&gt;&gt;&gt;&gt; cd /data/local/tmp/
&gt;&gt;&gt;&gt;&gt;&gt; ./as -p31928
&gt;&gt;&gt;&g]]></description><category></category></item><item><title><![CDATA[将apk变可调试]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/107167963</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/107167963</guid><author>ccczhi</author><pubDate>Mon, 06 Jul 2020 21:19:23 +0800</pubDate><description><![CDATA[1. 查看apk是否为可调式
1.adb shell
2.cat default.prop


解释：ro.debuggable=0 为不可调式， 当值为1 为可调式
2.查看cpu架构使用
cat /proc/cpuinfo


3 修改ro.debuggable的值
&gt;&gt;&gt;&gt;&gt;adb push /xx/xx/mprop /data/local/tmp/mprop
&gt;&gt;&gt;&gt;&gt;adb shell
&gt;&gt;&gt;&gt;&gt;su(获取r]]></description><category></category></item><item><title><![CDATA[celery(异步,定时)]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106856555</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106856555</guid><author>ccczhi</author><pubDate>Fri, 19 Jun 2020 19:00:12 +0800</pubDate><description><![CDATA[1.概念:
是一个简单,灵活且可靠的, 处理大量消息的分布式系统, 专注于实时处理的异步任务列队,同时也支持任务调度
2.组件:

消息中间件(RabbitMO, Redis)
任务执行单元
任务结果存储

3.图:


4.celery_task.py文件代码如下:
import celery
import time
backend = "redis://127.0.0.1:6379/1"
broker = "redis://127.0.0.1:6379/2"
cel = celery.Celery("t]]></description><category></category></item><item><title><![CDATA[asyncio aiohttp 完成爬虫]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106845737</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106845737</guid><author>ccczhi</author><pubDate>Fri, 19 Jun 2020 00:01:34 +0800</pubDate><description><![CDATA[代码:
# -*- coding:utf-8-*-
# asycio爬虫, 去重, 入库:
import asyncio
import re
import aiohttp
from pyquery import PyQuery
import aiomysql
from urllib.parse import urljoin, urlparse
import re
import requests
loop = asyncio.get_event_loop()
start_url = "https://news]]></description><category></category></item><item><title><![CDATA[python 异步i/o库之asyncio]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106819445</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106819445</guid><author>ccczhi</author><pubDate>Wed, 17 Jun 2020 22:59:48 +0800</pubDate><description><![CDATA[1.包含了各种特定的系统实现的模块化事件
2.传输和协议抽象
3.对TCP, UDP, SSL 子进程,延时调用以及其他具体支持
4.模仿futures模块但是适用于事件循环使用的Future类
5.基于yield from的协议任务,可以让你用顺序的方式编写并发的代码
6.必须使用一个将产出io的调用时,有接可以把这个事件转移到线程池
7.模仿threading模块中的同步原语, 可以用在单线程内的协程之间
8.代码举例:
import asyncio
import time
async def get_]]></description><category></category></item><item><title><![CDATA[python协程]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106806796</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106806796</guid><author>ccczhi</author><pubDate>Wed, 17 Jun 2020 16:41:29 +0800</pubDate><description><![CDATA[1.普通方法编程的缺点:

回调模式编码复杂度高
同步编程的并发性不高
多线程编程需要线程同步,使用lock

2.解决以上问题的方法:

采用同步的方法编写异步的代码
使用单线程去切换任务


 线程是由操作系统切换的,单线程切换意味着需要程序员自己去调度任务
 不在需要锁,并发性高, 如果单线程切换函数,性能远高于线程间切换,并发性更高

3.消耗cpu, 消耗i/o
4.协程:

有多个入口的函数
可以暂停的函数,(可以向暂停的地方出入值)

5.生成器

生成器不止可以生成值,还可以接收值
启动生成]]></description><category></category></item><item><title><![CDATA[python中i/o多路复用之selector]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106806539</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106806539</guid><author>ccczhi</author><pubDate>Wed, 17 Jun 2020 14:24:57 +0800</pubDate><description><![CDATA[1.select, poll, epool都是i/o多路复用机制,i/o多路复用就是通过一种机制,一个进程可以监控多个文件描述符,但是select,poll,epoll(红黑数)本质上都是同步i/o
2.内存空间 ----&gt; 用户空间
3.epoll和select的比较

在并发高的情况下,连接活跃度不是很高,epoll比select好
在并发步高,同时连接很活跃,select比epoll好

4.selectors是在sellect的基础上做了进一步的封装举例代码如下:
import socket
]]></description><category></category></item><item><title><![CDATA[Python3多继承查找算法:C3算法]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106717915</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106717915</guid><author>ccczhi</author><pubDate>Fri, 12 Jun 2020 16:49:09 +0800</pubDate><description><![CDATA[1.举例说明:
class A:pass
class B:pass
class C:pass
class D(A, B):pass
class E(B,C):pass
class F(D, E):pass

1.计算D类的__mro__(其中O表示object):
头元素:
**********************列表中第一个元素
尾元素:
**********************除列表第一个元素其他元素都叫尾元素
mro(D) = [D] + merge(mro(A), mro(B), [A, B]]></description><category></category></item><item><title><![CDATA[爬虫之滑块一]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106641508</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106641508</guid><author>ccczhi</author><pubDate>Tue, 09 Jun 2020 14:45:30 +0800</pubDate><description><![CDATA[一.使用的模块:
1.selenium
2.PIL

二.使用的技术:
没有做任何反模拟滑动的技术

三.代码:
# -*-coding:utf-8-*-
import time
import random
from PIL import Image
from io import BytesIO
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdrive]]></description><category></category></item><item><title><![CDATA[Python爬虫框架scrapy学习(mysql存储异步)]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106404818</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106404818</guid><author>ccczhi</author><pubDate>Thu, 28 May 2020 14:46:45 +0800</pubDate><description><![CDATA[from twisted.enterprise import adbapi
from MySQLdb.cursors import DictCursor
class MysqlTwistedPipeline:
    def __init__(self, adbpool):
        self.adbpool = adbpool

    @classmethod
    def from_settings(cls, settings):
        from MySQLdb.cursors im]]></description><category></category></item><item><title><![CDATA[IDA导入头文件(jni.h)]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106049968</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106049968</guid><author>ccczhi</author><pubDate>Mon, 11 May 2020 12:44:49 +0800</pubDate><description><![CDATA[一.导入jni.h
路径:	File -----&gt; Load file -----&gt; Parse C header file ...(Ctrl + F9)

如下图:

二.打开结构体窗口:
路径: Structures ----&gt; 按键盘的Insert键(会出现Create Structure/union) ----&gt; add standard structure 

如图:

导入3个函数如下图：


注jni.h文件需要修改部分如下(如果不修改在导入中可能报错)
第一处:

第]]></description><category></category></item><item><title><![CDATA[ARM汇编笔记]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106002765</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106002765</guid><author>ccczhi</author><pubDate>Fri, 08 May 2020 23:00:39 +0800</pubDate><description><![CDATA[一.跳转指令:
    B      无条件跳转
    BL     带链接的无条件跳转
   	BX     带状态切换的无条件跳转
   	BLX    带链接和状态切换的无条件跳转
   	B loc_地址
   	BEQ BNE

二.存储器和寄存器交互指令(核心)
存储器(主存, 内存)
寄存器中放的数据,可以是字符串,可以是数,也可以是一个地址,它可以放各种类型的数据
存储地址单元:地址:(如0x000040000)与地址存在的值

LDR:   从存储器中加载数据到寄存器&lt;--- Lo]]></description><category></category></item><item><title><![CDATA[Android开发之NDK和JNI(动态注册)]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/106000618</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/106000618</guid><author>ccczhi</author><pubDate>Fri, 08 May 2020 16:42:32 +0800</pubDate><description><![CDATA[1.创建布局文件:
2.创建.java文件:
package com.tencent.console;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.w...]]></description><category></category></item><item><title><![CDATA[Android开发之NDK和JNI(静态注册)]]></title><link>https://blog.youkuaiyun.com/ccczhi/article/details/105982868</link><guid>https://blog.youkuaiyun.com/ccczhi/article/details/105982868</guid><author>ccczhi</author><pubDate>Fri, 08 May 2020 01:16:18 +0800</pubDate><description><![CDATA[一.NDK介绍:
1.定义:
Native Development Kit 是Android	的一种的开发工具包
2.作用:
快速开发C, C++的动态库,并自动将so和应用一起打包APK,即可通过NDK在Android中使用JNI与本地代码(如:C, C++)交互
3,优点:
1.运行效率高
2.代码安全
3.跨平台
二.JNI的介绍:
1.定义:
	JAVA Native Interface
...]]></description><category></category></item></channel></rss>