F.I.R.E与厄瓜多尔

小孩教育

Kali安装Tor

硬件中断输入

USB远程访问

Detours进行Windows dll劫持

F.I.R.E与厄瓜多尔

定义

首先,FIRE的定义是“财务独立,提前退休”。

它的手段核心就是前期做巨量积累(通常在10年内),然后在30+左右年龄,通过积累资金的被动收益来维持自己的支出。

之前为这个事做了蛮多筹划,直到最近我开始考虑小孩教育,才发现自己有一个严重的考虑不周:我没有考虑小孩小学初中高中的教育支出。

而看到我妈带孩子,想起了年少时在学校受到的填鸭教育。我实在无法忍受孩子像我一样,再从公立学校一步一步走出来。这条路实在太艰辛,我走过就好,实在不忍他再重复了。

FIRE的核心概念之一是减少欲望,降低支出。

但小孩接受私教费用挺高,而且我即将又有俩娃,开销更大,原本筹划的加拿大,哥斯达黎加行不通。不得不做新的安排。

比较

其次,我要知道相关名词的特点和区别。

  • 远程工作: 依然是入职打工获得收入,但可以在家进行远程工作,所有有一点的时间自由度
    • 工作时间依然受限,但有一定的自由度。
    • 不工作,无收入。
    • 依然被榨取大量中间收入。
  • 自由工作/数字游牧: 网上接外包单,定期完成任务获得收入,可选择单位时间不接单,时间和地点更加自由
    • 工作时间不受绝对控制,时间上基本自由。
    • 不工作,无收入。
    • 被榨取少量中间收入。
  • 被动收入: 一次投入,多次回报获得收入。
    • 工作时间完全不受控制,时间上基本自由。
    • 不工作,少量收入。
    • 被榨取少量中间收入。
  • FIRE:提前退休,不需要工作,纯粹依靠前期投资获得收入。
    • 工作时间完全为0。
    • 不需要工作。
    • 没有中间收入被榨取。

基本上,上述概念是逐层递进的。它是我定义的 远程工作->数字游牧->被动收入 之路的最高级,即财务自由。

核心理论

退休之前,有年支出的25倍存款,然后保持自己资产年化4%以上即可。

但注意,上面的4%必须扣除通膨率。

数值例子

例如,某人一家四口家庭当前每年每年支出16W

  • 水 50 + 电 150 + 燃气 100 = 300

  • 电话费俩人 100 + 网费 200 = 300

  • 伙食费 3000

  • 交通费 350

  • 幼儿园 3000

  • 偶尔下馆子看电影出去转转 1000

  • 年度旅游一次 2500

  • 衣服 1000

  • 清洁护肤 500

  • 孩子过节生日娱乐 1000

  • 看病医疗 200

  • 家具家电更新 200

总计 = 13300 * 12 = 16W左右

那么按照年化4%,即25倍开销即可FIRE,则需400W投资即可。

投资方式推荐

一般投资方式,例如美股标普500指数在过去40年平均年化10%,20年美债ETF过去14年年化则是6%。假设50%:50%去投资美股和美债,年化率大约是8%。

而美国从1913年到现在100年内,年平均通膨是3%。1998-2018这30年的美国平均通膨是2%。

所以,只要有6%的年化就足够了。

所以,购买美股指数和美债是行的通的。

但,如果境外购买美股,则要考虑两个问题,一个是汇率问题,一个是基金手续费。这俩的抽成大约是达到1%,要自行想办法处理。

厄瓜多尔

优势

  • 私立医疗水平不错,永居权限每月缴纳85刀即可享受优质公私医疗。
  • 国际学校超过300家(泰国仅130家),全IB学校16所(菲律宾仅1所),费用低廉,私立学校月支出200-600刀,IB学校月支出1000刀。
  • 生活水平要求低,农业产品国,基本消费更低(一家两口月支出1000刀以内,一家四口读公立支出1500刀以内,一家四口读普通私立学校2300刀)
  • 绿化面积很高,污染少。气温恒定,基多(9-23),昆卡(11-23),海边(21-33)全年温差不超过1度。有山有海,有温有热,满足多样性。
  • 使用美元,不用担心政府搞通膨。银行存款利率极高,年化6%-8.5%左右。
  • 无任何肤色民族歧视。
  • 护照非常适合做跳板,中南美共同体意味着去智利乌拉圭工作居住都随意,护照去西班牙美国加拿大拿绿卡比中国护照给力,护照去中国免签。

劣势

  • 回国坐飞机24小时。
  • 贪污和中国差不多(南美只有智利靠谱),法制精神一般(和中国得分完全一致)。
  • 交通事故死亡率居然和中国差不多……

难以评判

  • 治安(暴力犯罪)比较复杂,各大网站意见不统一。但综合各大网站信息整理起来,比菲律宾稍微强一些,半斤八两吧。
  • 免签国家确实不错,美加澳新以及欧洲申根没有一个免签的……不过,听说申根快给它免签了,我觉得靠谱,毕竟它邻国秘鲁也没啥大差别,申根都免了,我琢磨也快了。

总结

反正目前看起来,目的是养老和小孩教育的话,除了治安之外,整体相当靠谱。

厄瓜多尔的FIRE计划

支出

  • 俩小孩读普通国际学校 = 800
  • 电费 = 40
  • 话费 = 50
  • ETAPA网费 = 30
  • 交通 = 50
  • 家庭用品 = 50
  • 医保 = 160
  • 医疗 = 200
  • 食物 = 400
  • 外出用餐 = 20 * 10顿 = 200
  • 其他娱乐应急若干 300

一个月大约2300刀。

收入

现在香港保险年收22500刀 = 1875刀/月

补充说明

美元过去30年通膨为2%,过去100年通膨是3%。我视为2.7%。

如果我再存20W刀到当地银行,按照6%-8.5%的利率(我视为6%),那么得到的利息足以抵消保险和存款的通膨。

如果多存10W刀到当地银行,则可以每月额外产生425刀利息,达到完整收支平衡。

如有更多利率或被动收入,可留住以备小孩高中IB费用,大学费用和父母医疗自己医疗,旅游费用。

结论

  • 需要再存当地30W刀到银行
  • 需要15W刀购买当地House一个(很多很不错的,500平米的3室新房靠近海边的也就这价格)
  • 为小孩教育需要基多市中心一个2室一厅的Apartment一个,约10W刀(小孩读大学可出租)

计划

当前收入不做调整,则需4年。若跳槽则需接近2年。所以,40岁之前可达成。

小孩教育

亚洲教育情况比较

整体来说,在前面的会适合当前情况一点。

  • 国家档次和生活水平(低->高,低的也未必最好)

菲律宾>泰国>马来西亚>韩国>新加坡

  • 当地高质量学校数量和概率(优->劣)

新加坡>韩国>泰国>马来西亚>菲律宾

  • 英语环境(优->劣)

新加坡>菲律宾>马来西亚>泰国>韩国

  • 费用高低(低->高)

泰国>马来西亚>菲律宾>新加坡>韩国

  • 身份居留容易度(易->难)

菲律宾>韩国>马来西亚>新加坡>泰国

  • 大学优劣(优->劣,基本可以无视,没打算小孩在亚洲读大学)

新加坡>韩国>马来西亚>菲律宾>泰国

基本概念普及

IB: 国际认可文凭。

- 包含小学(PYP,3-12岁)中学(MYP 11-16)预科(DP)。一般非特殊说明的学校可能只有IBDP,只有声称全IB的才包含PYP,MYP。
- 国际认可,属于国际高中学历。重点是培养学生综合能力。文理兼修,英语要求最高。 
- 45分制。40分以上很有竞争力。
- 缺点是:学生课业负担很大,而且有可能不能毕业。。。
- 一般推荐从小学就开始读。

AP:美国大学预修。

- 注意!不是国际高中学历,也仅有美国承认。
- 其考试成绩可换取美国大学的学分。
- 5分制。4分以上有竞争力。
- 缺点是:是锦上添花的课程,而且仅有效于美国,英国,澳洲,加拿大等部分国家。

A-Level:英国普通高中。

- 任何说英语的国家都承认。
- 无社会实践,比较容易,适合中国学生,容易拿高分。
- 9分制(A* - G),B级(6分)以上有竞争力。
- 缺点是:有些应试教育。

IGCSE: 国际中学教育。

- 因为IBDP, AP, A-Level都是两年,相当中国的高中。在那之前的初中,就可以读IGCSE,可无缝衔接IB,A-level。
  • 选课灵活度:AP>A-Level>IB

AP可以直选1门课,可以选10门; A-Level则限制在3-4门; IB则是固定套餐,可选专业受限,文理不让偏科,最低6门学科。

  • 整体难度:IB>AP>A-Level

IB不仅仅学文理科,还要学艺术,还要去完成论文和社会活动。AP和A-Level则不限制社会活动,会比较轻松。

  • 单科难度:AP>A-Level>IB

AP部门课程是大学级别难度;但IB的知识很有体系性,培养的是全能型选手。

  • 教学方向:IB>AP=A-Level

IB的最大特点就是,教育是概念性学习,而另外两者是知识性学习。

例如:

- 中国是题海战术帮助学生记忆答案,例如,如何修好一个丰田汽车;
- AP,A-LEVEL是探究性学习帮助学生寻找答案,例如,我不擅长修车,但如何学会去修车;
- 而IB则是反思训练帮助学生去提出答案,例如,我为什么修车,如何制造一个能自我维护的汽车。

Kali安装Tor

  • apt-get install tor
  • 访问https://www.torproject.org 下载对应平台的Browser
  • cd Downloads
  • tar -xJf tor-browser-linux64-9.0.2_en-US.tar.xz
  • 运行 ./start-tor-browser.desktop 会提示“The Tor Browser Bundle should not be run as root. Exiting.”
  • cd Browser
  • vi start-tor-browser
  • 注释掉
# complain “The Tor Browser Bundle should not be run as root. Exiting.”
# exit 1

硬件中断输入

WinIO

WinRing0

Interception

USB远程访问

架构

为了便于管理和操作,U盘需要插到远程的服务器上,通过计算机网络读取U盘。客户端是windows,服务器端考虑到稳定性将采用linux。

官网

UsbIP

备选方案UsbOverNetwork

基于Centos7的USB服务器搭建

  • 安装Centos7(USBIP内核kernel3.1以上)

  • 设置静态网络(如果是VM,采用NAT模式)

cd /etc/sysconfig/network-scripts/
vi   ifcfg-ens33
根据实际情况设置内容如下: 

  BOOTPROTO=static
  NAME=ens33 
  UUID=447cda9d-5780-4d43-8d67-8693f2ad40ce
  DEVICE=ens33
  ONBOOT=yes
  IPADDR=192.168.75.146
  NETMASK=255.255.255.0
  GATEWAY=192.168.75.2
  DNS1=10.71.40.1
  DNS2=10.71.40.2

service network restart

测试是否可以连通代理服务器 ping  10.66.72.173 必须成功
  • 便于测试将防火墙关闭(也可以设置白名单)
    service firewalld stop (关闭开机自动启动chkconfig firewalld off)
  • 设置YUM安装源(通过10.66.72.173的YUM代理模式从互联网拉YUM源)
    设置通用YUM源,将附件nexus.repo、epel.repo、elrepo.repo 放入 /etc/yum.repos.d
  • yum update 更新yum

  • yum install kmod-usbip (安装usbip相关辅助,如果elrepo的版本是kmod-usbip-1.0.1-4对于linux内核过高,可以手动rpm安装附件kmod-usbip-1.0.1-3 rpm -Uvh kmod-usbip*.rpm)

  • yum install usbip-utils (将从elrepo安装usbip服务器端,版本是2.0)

  • 检查是否安装成功

    [root@localhost]#which usbip
    /usr/sbin/usbip
  • 挂载模块
    sudo modprobe usbip_core
    sudo modprobe usbip_host(服务器)
    sudo modprobe vhci-hcd(客户端) 
  • 守护进程启动 sudo usbipd -D

  • 将U盘插入USB-Hub(或者电脑插槽),如果VM,需要设置下USB支持,并且虚拟插入U盘

  • sudo usbip list -l 查看本地usb设备

    [root@localhost]# usbip list -l
    
    - busid 3-1 (0e0f:0003)
        VMWare, Inc.: Virtual Mouse(0e0f:0003)
        
    - busid 3-2 (163c:548c)   // 这个就是虚拟USB设备
        unknown vendor: unknown product(163c:548c)
  • 绑定设备sudo usbip bind -b 3-2
    [root@localhost]# sudo  usbip bind -b 3-2
    usbup: info: bind device on busid 3-2: complete
  • 实验绑定(本机当成客户端,试图远程绑定,然后解绑)
    sudo  usbip attach -r localhost -b 3-2
    sudo  usbip port (获取port,用于解绑)
    sudo  usbip detach -p 00 (解绑)

windows客户端部分

  • 安装win7

  • 关闭驱动签名 管理员身份 运行 cmd

    bcdedit /set testsigning on
    重启Win7(重启后桌面上显示测试字样)
  • 将附件 usbip-win-client-2.0.rar拷贝进入系统,并且解压

  • 打开设备管理器,添加一个过期硬件

  • 选择手动安装驱动,并且选择usbip-win-client-2.0解压目录

  • 安装成功后,可见设备列表中有 USB/IP Virtual HOst Controller Interface设备

  • 管理员身份,运行cmd,cd到目录usbip-win-client-2.0

  • 运行查看远程服务器共享的,USB:usbip -l 192.168.75.146

  • 绑定远程

    usbip  -a 192.168.75.146 b  3- 2
    系统会自动按照相关文件,并且在可移动设备能够看见远程的设备
  • 此时即可远程访问USB

Detours 劫持

下载

https://www.microsoft.com/en-us/download/details.aspx?id=52586&from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fdownloads%2Fd36340fb-4d3c-4ddd-bf5b-1db25d03713d%2Fdefault.aspx 这里下载

编译

windows下使用 VS开发人员命令提示 工具

cd D:\xxx\Detours\src
d:
nmake

编译完得到,detours.h ,detours.lib ,detver.h

编码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    #include "detours.h"
    
    #pragma comment(lib , "detours.lib")
    
    // 存储需要进行hook的函数指针地址
    // 当前测试函数为system函数
    static int(*poldsystem)(const char * _Command) = system;
    
    //自己实现一个system函数
    int mysystem(const char *  _Command) {
        const char * ps = NULL;
        ps = strstr(_Command, "calc");
        if (ps != NULL)
            printf("%s 已经被劫持啦!\n", _Command);
        else
            printf("%s 不做检查,仅劫持calc!\n", _Command);
        return 0;
    };
    
    //开始拦截
    void Hook() {
        DetourRestoreAfterWith(); //恢复初始状态
        DetourTransactionBegin(); //拦截开始
        DetourUpdateThread(GetCurrentThread()); //刷新当前线程
        /** 此处下面填写自己想要拦截的函数 **/
        DetourAttach((void **)&poldsystem, mysystem);    //实现函数拦截
        DetourTransactionCommit(); //提交事务,拦截生效
    }
    
    //撤销拦截
    void UnHook() {
        DetourTransactionBegin(); //拦截开始
        DetourUpdateThread(GetCurrentThread()); //刷新当前线程
        /** 此处下面填写自己想要取消拦截的函数 **/
        DetourDetach((void **)&poldsystem, mysystem); // 取消拦截
        DetourTransactionCommit();  //提交事务,取消拦截生效
    }
    int main(void) {
        printf("调用了system('calc')函数 \n");
        system("calc");
    
        Hook();
        printf("已经开启HOOK,按下任意键继续 \n");
    
        getchar();
    
        printf("调用了system('calc')函数,按下任意键继续 \n");
        system("calc");
    
        getchar();
    
        printf("调用了system('ipconfig')函数,按下任意键继续 \n");
        system("ipconfig");
    
        getchar();
    
        UnHook();
        printf("已经关闭HOOK,按下任意键退出 \n");
    
        getchar();
    }

上面可以编译运行查看结果。如果想注入其他进程,只需修改

    _declspec(dllexport) void main(){
        ...
    }

生成 xx.dll 即可。

注入

使用 Xenos(https://github.com/DarthTon/Xenos)或者Blackbone(https://github.com/DarthTon/Blackbone) 进行dll绑定进程的注入

完成

之后,每次目标进程调用system函数时就会进入我们的hook

TODO

整合 Xenos,自动hook一些关键系统函数和socket函数,嘿嘿嘿嘿嘿