0%

JNI即Java Native Interface (Java本地接口),用来实现java代码调用C/C++代码
先前跟着吾爱一大哥的帖子做了一遍没有成功,应该是他的版本过于老旧,于是自己进行尝试。

安装LLDB和CMake

在Android Studio的File->Settings->System Settings->Android SDK->SDK Tools中选中LLDB和CMake进行安装

进行编写

  1. 创建新的Project
    在选择Template时选Native C++

  2. 看见报错提示Caused by: org.gradle.api.InvalidUserDataException: NDK not configured…
    这是因为未选定NDK路径,于是进入File->Project Structure->SDK Location中选择自己的NDK安装文件夹
    点击OK之后会发现底部框框出现CONFIGURE SUCCESSFUL字样,此时NDK配置完成

阅读全文 »

Flask-SQLAlchemy扩展

Flask-SQLAlchemy是flask的一个ORM扩展框架,更方便的结合Flask,提供了高层的ORM和底层的原生数据库的操作,方便我们通过程序的方式操作数据表。

安装

使用pip install flask-sqlalchemy进行安装,若使用mysql还需要使用pip install flask-mysqldb安装mysqldb。由于python3中已经不再支持MySQLdb模块,所以我选用了pymysql,于是使用pip install pymysql安装。

设置

在config中加入以下设置:

1
2
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxxxx@localhost:3306/test?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = False # 动态追踪修改设置,如未设置只会提示警告, 不建议开启

然后

1
2
app.config.from_object('config')
db = SQLAlchemy(app)

至此既已完成app和数据的关联,并生成一个可以操作app数据库的SQLAlchemy实例db

阅读全文 »

使用WEB框架的优点

web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。

使用框架的优点:

  • 稳定性和可扩展性强
  • 可以降低开发难度,提高开发效率

即避免重复造轮子。

Flask相较于Django的优势所在

  • 更轻量级
  • 更灵活
  • 有大量插件和扩展可供使用
  • 对初学者更友好
阅读全文 »

导出smali代码

  • 将被调试的apk(此处使用的是吾爱-教我兄弟学Android逆向中的例子)拖入AndroidKiller,等待反编译好

  • 工程管理->smali上右键打开文件路径,将smali文件夹复制出来,并更名为src

设置Android Studio

  • 下载ideasmali插件
    插件下载:链接:https://pan.baidu.com/s/1htl26qS 密码:0pre(同样来源于吾爱那位兄弟)

  • 安装插件
    打开File->Setting->plugins,在右边会看见一个齿轮图标,点击然后选择Install Plugin from Disk...,选中下载的文件即可完成安装

阅读全文 »

scapy入门

本打算使用pyshark的,但使用后发现太多的坑,于是转用scapy

安装

由于我安装了双版本的python,于是使用命令

1
python3 -m pip install scapy

即可完成安装

sniff

导入包:from scapy.sendrecv import sniff

阅读全文 »

apktool

apktool主要用于逆向apk文件。

  • 安装:https://ibotpeaches.github.io/Apktool/install/
  • 功能:
    • 反编译资源回原始资源(包括resources.arsc, classes.dex, 9.png. 和 XMLs)
    • 将解码的资源重新打包成APK/JAR
    • 组织和处理依赖于框架资源的APKs
    • Smali调试
    • 帮助重复性执任务
阅读全文 »

概述

Android是基于Linux内核的操作系统,大多是是基于ARM架构的,于是要熟悉一下ARM相关内容。

Android开发环境的安装

安装JDK、NDK、SDK,,并配置好环境变量。

模拟器的选择

可以使用SDK自带的模拟器(最推荐,虽然慢但是出问题的概率最小),也可使用其他模拟器,如雷电、逍遥等。由于是x86架构,所以在进行调试时要使用android_x86_server

阅读全文 »

安装

安装环境:Win10 专业版

  • 下载Docker Desktop for Windows下载地址

  • 下载完进行安装

  • 电脑右下角会出现一个小鲸鱼的图标,显示Docker Desktop is running

  • 至此安装已经完成,可在cmd中进行使用了

概念

  • 镜像:类似于我们在使用虚拟机前所需下载的系统镜像文件,可通过pull指令从Docker Hub仓库进行下载

  • 容器:类似于正在运行中的一个虚拟机

  • tar文件:类似于VM中的vmdk文件,将一个镜像直接保存为一个tar文件,通过load指令可以直接加载成一个镜像

  • Dockerfile文件:一个配置文件,写入“如何构建”的步骤来指定一个镜像如何构建,通过build指令进行构建

阅读全文 »

基础语法

  • create DATABASE RUNOOB;:创建数据库

  • drop database RUNOOB; :删除数据库

  • use RUNOOB;:选择数据库

  • CREATE TABLE table_name (column_name column_type)ENGINE=InnoDB DEFAULT CHARSET=utf8;:创建数据表

  • DROP TABLE table_name ;:删除数据表

  • INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );:插入数据

  • SELECT column_name,column_name FROM table_name [WHERE Clause];:查询数据

  • UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause];:更新数据

  • DELETE FROM table_name [WHERE Clause];:删除数据

阅读全文 »

符号执行

通过程序分析确定哪些输入会导致程序产生特定执行结果的方法

符号执行技术分析所有能够跳转到指定函数的路径,并对如何进入这些路径进行计算,最终将计算结果展示出来

Angr

  • 简介:一种用来对程序进行静态和动态的符号分析的Python框架

    具有以下功能:

    • 控制流图分析
    • 符号执行
    • 自动ROP构造:劫持程序的控制流
    • 自动补丁:向程序中的某个函数或者某种指令前插入自己的代码
阅读全文 »