Paul C's Blog

To be funny,to grow up!

0%

哈密尔顿图

图中存在一条经过所有顶点的回路。(通路~半哈密尔顿图)

App的特征

根据drebin数据集中的样本特征出现次数占比升序排列如下

  • 硬件组件
  • 可疑API调用
  • 网络地址
  • 已使用权限
  • 受限API调用
  • 请求权限
  • 过滤意图
  • 应用组件
1
2
3
4
5
6
7
8
u'broadcastreceiverlist_com.google.ads.conversiontracking.installreceiver',
u'contentproviderlist_kr.co.smartstudy.sspatcher.ssinterprocessdataprovider$sscontentproviderimpl',
u'requestedpermissionlist_android.permission.change_network_state',
u'broadcastreceiverlist_.contact.service.synchronizationtask',
u'activitylist_com.cmm.worldartapk.activity.searchactivity',
u'requestedpermissionlist_com.google.android.providers.gsf.permission.read_gservices',
u'activitylist_.wxapi.wxentryactivity',
u'intentfilterlist_com.aio.apphypnotist.update_widget',

训练算法

针对子视图分别生成分类器。同时基于Co-training协同训练算法

动态特征提取方案、

基于Zygote注入技术的动态API调用视图的特征提取

编写基于uiautomator框架的用户UI行为模拟程序

基于Xposed框架Hook目标程序的部分安全敏感API

u附录

Android世界之盘古女娲——Zygote

Android系统(Linux)—>init进程 —fork—>zygite进程—>创建Java虚拟机—>

注册JNI调用—>调用Java层的ZygoteInit类的main函数,进入Java世界—>

Java层的ZygoteInit进行如下四步工作:

1.建立一个Socket服务端,监听客户端的连接,用于IPC通信。

2.预加载类和资源(安卓系统启动慢的缘故;加载framework-res.apk中的资源)

3.通过fork的方式,启动system_server进程(system_server是和zygote共存亡的,只要system_server被杀死,zygote也会把自己杀掉,这就导致了系统的重启。)

4.通过调用runSelectLoopMode()方法,进入无限循环,等待客户端的连接请求,并处理请求。(进行必要的native初始化后,主要逻辑都是在Java层完成)

Java native关键字,JNI允许Java代码使用以其他语言编写的代码和代码库。

在Android系统中,zygote(受精卵)是一个native进程,是Android系统上所有应用进程的父进程,我们系统上app的进程都是由这个zygote分裂出来的。zygote则是由Linux系统用户空间的第一个进程——init进程,通过fork的方式创建的。
原生应用是为了在特定设备及其操作系统上使用而构建的,因此它可以使用设备特定的硬件和软件。与开发为跨多个系统通用的网络应用程序相比,原生应用APP程序可以提供优化的性能。

1.逆向环境组件

根据《安卓软件安全与逆向分析》

搭建一个Android逆向环境,最关键组件:

  • JDK1.8环境+PATH;
  • apktool.jar及其对应脚本;
  • signapk.jar,pem、pk8签名文件(安卓源码或者openssl生成)

必须使用jdk1.8版本,否则在利用signapk.jar签名时,会报告BASE64Encoder类找不到异常。

其他可选组件,jd-gui,dex2jar。

Read more »

反向传播的一个比方,以猜数字为例,B手中有一张数字牌让A猜,首先A将随意给出一个数字,B反馈给A是大了还是小了,然后A经过修改,再次给出一个数字,B再反馈给A是否正确以及大小关系,经过数次猜测和反馈,最后得到正确答案。

Logistic regression逻辑回归

二分类算法;

  • image—>matrices—>feature vector—>{0,1};
  • many images—>X—>Y;
Read more »

机器学习里除了监督和无监督学习做分类回归,还有强化学习算法用于做决策。

灵感来源于:神经科学和心理学,用外界反馈和暗示加强心理偏向。

Chap1 强化学习原理图

image-20220510203532764

state value,状态值用于评价一个策略好坏。

1678108982211

西湖大学RL课程-B站

奖励值的设置

在正数代表奖励的情况下,0不惩罚,也是一种鼓励。

1678169561779

Reward(s,a),奖励考虑当前状态和行为。

Trajectory(轨迹):状态-动作-奖励 链。

1678171954954

return 是一个轨迹所有的奖励加起来的值。

如return=0+0+0+1=1

而在第9格时所有动作的收益将会一直加一,1+1+1+1+…+1=∞

为避免结果无穷大,引入折扣率,即discount γ∈[0,1],

此时的dicount return=0+γ0+γ^20+γ^3\1+…+γ^n*1=γ^3*1\(1-γ)

γ趋近于0,短视。

Chap2 贝尔曼方程

1678104650697

Chap3 贝尔曼最优公式

找最优策略,即能够找到的最大状态值对应的策略。

1678108155935

不动点原理=>{最优的策略存在(不一定唯一) ,最优的状态值唯一}

Chap4 优化策略

值更新->策略更新->值更新->…,互相促进,最终得到最优策略和最佳状态值。

值迭代

策略迭代

截断策略迭代

Chap5 Monte Carlo学习

蒙特卡罗

Chap6 随机近似

增量:来一次采样,就可以用它更新估计。

Robbins-Monro算法

SGD

SGD、BGD、MBGD

Chap7 时序差分方法

TD(Temporal Difference)学习状态值

Sarsa:用TD的思想学习action value

Q-learing:直接计算优化的action values;off-policy算法

on-policy :Behavior Policy(生成经验数据)和Target Policy目标策略相同

off-policy:两个策略可以不同

Chap8 Value Function Approximation

引入函数,让神经网络有机会进入到强化学习。

找一个状态值的近似函数v_hat(S,w)

1678113431994

DQN:两个网络、经验回放

Chap9 策略梯度学习

Policy Gradient是一种On-policy的算法

1678115817103

Chap10 Actor-Critic

Policy Gradient的一种方法,只是critic部分强调了值的作用。

1678116051479

4)从随机的动作选择策略转到确定性的,就是DPG。

3)通过重要性采样可以把on-policy策略变为off-policy策略。

1.SQL注入的WAF绕过

  • 白盒 框架源码,代码审计
  • 黑盒绕过
    • 架构层绕过
    • 资源限制角度绕过
    • 协议层
    • 规则层面绕过
Read more »

时间安排

  • 上午的时光用于做有意义的事情,只有学习。

2022年的几件事

  • 1.保持规律作息 晚上不得迟于一点,起床不得迟于7点半
  • 2.保持运动
  • 3.保持积极的人际沟通和与长辈的交流
  • 4.对于非学习事项,工作日期间每天的手机只有在三餐和晚上10点~12点才看;
  • 5.锻炼自己的表达的精确度
  • 6.对于诱惑,抵制。
  • 7.想要谈场恋爱
  • 8.搞好科研

​ 现在是22年的8月11日凌晨,我还是一个人,没有一个伴。虽然说宁缺毋滥,但是还是感觉稍微有些 孤单。可能是我没有专注于我应该专注的事情,不够充实,才会有这种唏嘘之感。

​ 希望我能努力,积极向上,成为值得被爱的人。

三A操作:Arrange,Act和Assert。准备数据,运行被测试代码,断言结果。