Python pip使用国内源

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

临时使用:
可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple

例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider,这样就会从清华这边的镜像去安装pyspider库。

使用pip.ini永久解决源的设置问题

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = mirrors.aliyun.com
[list]
format = columns

将以上内容保存为 pip.ini 放在 C:\Users\用户名\pip 文件夹下即可

另附上常用的pip命令:

// 列出已安装模块
.\python.exe -m pip list
// 检查更新
.\python.exe -m pip list -o
// 升级模块
.\python.exe 
Read More

安卓调试常用ADB命令

有多个设备时选择其中的某设备
adb -s H066982 shell

//========================================
安装APK
adb install -r r:\1.apk

//========================================
以调试模式启动APP
adb shell am start -D -n hw.helloworld/hw.helloworld.MainActivity

//========================================

列出所有安装应用的包名
adb shell pm list packages

过滤显示
adb shell pm list packages | grep 431

找到apk的位置
adb shell pm path com.tence01.mm

pull出来
adb pull /data/app/com.tence01.mm-1.apk d:\

pull 整个目录
adb … Read More

IDA 协作插件 collabREate Server编译方法

collabREate 用到了Google的GSON模块, 我们要先下载gson-2.8.5.jar
放在 collabREate/server/java 目录下,
打开命令提示符, 进入到 collabREate/server/java 目录
运行如下命令:
mkdir bin
javac -classpath .\gson-2.8.5.jar -d .\bin collabreate\server\*.java
编译后的文件保存在 bin目录下

测试编译的是否可以正常运行

java collabreate.server.ServerManager

将编译的文件打包成jar:
jar -cef collabreate.server.ServerManager collab.jar bin

上面生成的是 服务器管理的jar
将main方法更换为 collabreate.server.CollabreateServer 生成 服务器jar

jar命令为java自带的专用打包工具;

c 代表生成新的jar包;
e 代表可执行的类,亦即main方法所在的类。书写时要加上包名,在本例中是后面的 collabreate.server.ServerManager;
f 代表生成的jar包的名称,在本例中是collab.jar。此包名可以随意命名,没有规定;
bin 最后面的这个参数表示将bin目录下的所有文件都打包放到新的jar包中

另外发现了一个更不错的实现, 现在还是0.01版 IDArling
试用了一下, … Read More

单片机多字节移位除法实现方案

以0x67 / 3来举例 说明:

除数3前面有6个0, 减数从 3 * 2^6 次方 0xC0 开始, 循环去减, 每循环一次
减数/2, 够减则说明被除数中包含了减数/(原始减数3)个原始减数, 商+1, 然后在后面的每一次循环
时移位, 实现了商加上相应倍数的减数.

除数循环7(6+1)次也就到了除数自身, 减最后一次, 循环结束
算法巧妙的利用了移位减法, 以最少的循环次数实现了求商除法运算

被除数               减数                    结果
67[0110 0111] C0[1100 0000] 00[0000 0000]
67[0110 0111] 60[0110 0000] 01[0000 0001]
//够减, +1, 60是3的0x20 倍, 后面不断的左移, 保证了现在的+1最后成为0x20
07[0000 0111] 30[0011 0000] … Read More

A4纸折收纳纸盒

常常能收到很多广告宣传纸, 质量还蛮好的, 废物利用, 折个纸盒很有用
这里给大家分享一个简便好用的折纸盒方法.

开始喽:
1. 将纸对折

2  再对折。
3  展开第二次的对折,将四角向内折起。注意,左侧只折内层,外层不折。
4  将上面两个角向下翻折,得到折线;下方也同样。
5  现在审视一下手中的纸,应有如下折痕,并且四角向内折。
6  拎起左侧内层向右侧对折。
7  将右半部分向上拉开成一个簸箕状。
8  看,刚拉开的簸箕!然后把折痕弄挺括(见第九步图中粉色虚线)
9  现在看左侧,将紫色虚线合并在一起,折出一条折现,即绿色虚线,从而折出一个三角形,见第十步图。
10  请上下两张图对照一下,紫色虚线合并了,绿色线在外突出,是一个在外侧的三角形。
11  将这个三角形的角塞入这一面的口袋里。
12  另一面同样,我已标注出紫线和绿线。将角塞入口袋。
13  现在你得到了一个坚固的小盒子
(资源来源于网络, 感谢原作者的分享)
Read More

ASM基础-汇编标识位

X86架构CPU的状态标识位有以下的几个:

CF:反映无符号运算是否产生进位或借位,是则CF=1,否则CF=0。
PF:反映运算结果低8位中1的个数,1的个数为偶数,则PF=1,否则PF=0。
AF:在字节操作时低半字节向高半字节进位或借位时,字操作时低字节向高字节进位或借位时,AF=1,否则AF=0。
ZF:反映运算结果是否为0,结果为0时ZF=1,否则ZF=0。
SF:反映运算结果是否为负,结果为负时SF=1,否则SF=0。
OF:反映有符号运算结果是否溢出,结果溢出时OF=1,否则OF=0。
IF:中断标志。

CF 是对于无符号数来讲, 运算过程中(看的是运算过程, 不关心结果)如果有进位(Add)或有借位(Sub)则 CF=1, 否则CF=0
对于加法相信很好理解, 我们来看看减法:
label1: mov eax, 2
cmp eax, 5
jc label1
上面的示例中, cmp 执行的是 eax - 5, 因为eax < 5 所以需要借位, 于是CF=1 JC 满足跳转到label1
所以 cmp R1, R2 与 JC结合, 判断的是 R1 … Read More

Linux 常用操作命令

打开端口
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
service iptables save
service iptables restart

关闭端口
iptables -I INPUT -p tcp --dport 8888 -j DROP
service iptables save
service iptables restart

后台运行命令, 输出重定向到info.log, 最后的&
意义为 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行
使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉
(退出帐户时),作业就会停止运行。
nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:
nohup command &

nohup ./idea_amd64 info.log … Read More

PHPStorm + XDebug 调试设置

首先在PHP.ini中加入如下设置

[XDebug]
xdebug.profiler_output_dir="D:\phpStudy\PHPTutorial\tmp\xdebug"
xdebug.trace_output_dir="D:\phpStudy\PHPTutorial\tmp\xdebug"
zend_extension="D:\phpStudy\PHPTutorial\php\php-7.0.12-nts\ext\php_xdebug.dll"
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9900
xdebug.remote_enable=1

上面的目录路径请修改为自己的路径
然后重启Web服务器

PHPStrom中设置如下:
打开 File->Setting->Languages & Frameworks ->PHP->Debug

建立PHP工程, 调试设置如按下图设置
点击右边的小虫子Debug图标, 在相应的页面设置断点, 就可以开始调试了.
注意:
1. XDebug版本与PHP要对应, 不要下载错
Read More

X64 下的参数传递

MS VC的参数传递方式为:

前4个参数总是放在寄存器中传递,剩余的参数则压入堆栈中。而x86上则是全部压入堆栈中(除了fastcall方式)。

这4个用于存放参数的寄存器分别是:
存放整数参数的RCX,RDX,R8,R9;
存放浮点数参数的XMM0,XMM1,XMM2,XMM3;

整数和浮点数参数混合出现:
func3(float a, int b, double c, int d)
a放入XMM0中,b放入RDX,c放入XMM2,d放入R9。
这里比较特殊,其实就是按照这个规则:
a b c d
XMM0 RDX  XMM2 R9
也就是说4个整数寄存器严格的一一对应前4个参数,同样前4个XMM寄存器严格的一一应前4个参数,如果是整数浮点数间隔出现,那么就保持对应关系,选择对应的寄存器即可。

而gcc的则不是这样
版权为 win_hate 所有, 转载请保留作者名字
当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。
当参数为 7 个以上时, 前 6 个与前面一样, 但后面的依次从 "右向左" 放入栈中

例如:
CODE… Read More

IDAPython 脚本用VS PythonTool 调试方法

首先VS要安装PythonTool
然后在Python里安装ptvsd模块: pip install ptvsd
将下面的脚本保存到IDA Plugins目录:

# filename: ptvsd_enable.py
import idaapi
import ptvsd

try:
    # Enable the debugger. Raises exception if called more than once.
    ptvsd.enable_attach(secret="IDA")
except:
    pass


class DebugPlugin(idaapi.plugin_t):
    flags = idaapi.PLUGIN_FIX
    comment = "PTVSD Debug Enable"
    help = "Enable debugging using PTVSD"
    wanted_name = "PTVSD"
    wanted_hotkey = 
Read More