安卓逆向入门-DEX文件格式初探
安卓逆向入门-DEX文件格式初探整体本篇为Android 10的DEX文件格式,分为:
12345678910111213DEX头部:HeaderDEX数据索引:STRING_IDSTYPE_IDSPROTO_IDSFIELD_IDSMETHOD_IDSDEX数据:CLASS_DEFDATA
定义在dalvik/libdex/DexFile.h:
12345678910111213141516171819202122232425262728293031/* * Structure representing a DEX file. * * Code should regard DexFile as opaque, using the API calls provided here * to access specific structures. */struct DexFile { /* directly-mapped "opt" header */ const DexOptHeader* pOptHeader; /* ...
安卓逆向入门-Unidbg入门
安卓逆向入门-Unidbg入门入门Unidbg是个基于Unicorn的逆向工具,可黑盒调用Android和iOS的so文件。它不需要直接运行App或逆向so文件,通过在App中找到对应JNI接口,用Unicorn引擎直接执行该so文件。
先给Intellij IDEA配Maven环境。先下载Maven:https://maven.apache.org/download.cgi ,并将\apache-maven-3.9.9\bin目录添加到环境变量,在IDEA设置中“构建、执行、部署->构建工具->Maven”的主路径设为\apache-maven-3.9.9,用户配置文件为\apache-maven-3.9.9\conf\settings.xml,本地仓库自己随便搞一个,取消使用.mvn/maven.config中的设置。再在“Maven->运行程序”中虚拟机选项添加-DarchetypeCatalog=internal。
打开settings.xml,在mirrors标签内添加一个mirror块:
123456<mirror> &l ...
安卓逆向入门-Unicorn入门
安卓逆向入门-Unicorn入门入门安装:
1pip install unicorn capstone
入门:
12345678910111213from unicorn import *from unicorn.x86_const import * #32-bit x86X86_CODE32=b"\x41\x4a" #INC ecx;DEC dex;ADDRESS=0x1000000 #模拟运行时地址mu=Uc(UC_ARCH_X86,UC_MODE_32) #初始化Unicorn实例 硬件架构、硬件模式mu.mem_map(ADDRESS,2*1024*1024) #再ADDRESS处映射2MB内存空间 所有CPU操作只能访问该内存 默认权限rwx 首地址和内存长度必须为0x1000整数倍 否则抛出UC_ERR_ARG异常mu.mem_write(ADDRESS,X86_CODE32) #代码装入分配的内存中mu.reg_write(UC_X86_REG_ECX,0x1234) #设置寄存器值mu.reg_write(UC_X86_REG_EDX,0x7890 ...
安卓逆向入门-Frida入门
安卓逆向入门-Frida入门环境准备12345678910pip install frida frida-tools objection frida-dexdump jnitrace#objection需要安装比frida晚的版本 有必要时自己指定一下版本号 frida应为14.2.18及之前版本frida --version #根据版本去Github下载相应frida-serveradb push ./frida-server-16.3.3-android-x86_64 /data/local/tmpadb shellsucd /data/local/tmpmv ./frida-server-16.3.3-android-x86_64 ./frida-serverchmod 777 ./frida-server./frida-server #运行不了则尝试setenforce 0关闭SELinuxfrida-ps -U #另开一个终端
对于Objection 1.11.0的打开\Lib\site-packages\objection\commands\frida_commands. ...
安卓逆向入门-安全基线
安卓逆向入门-安全基线安卓OWASP10组件安全Android有Activity、Service、ContentProvider、Broadcast Receiver、Indent五大组件,不需要进行跨应用运行的组件需要在AndroidManifest.xml中将属性android:exported设为false,否则该组件可被任意应用启动,被恶意调用。实在需要设为true的组件应用android:permission指定自定义权限,如下:
123456789101112131415<permission android:name="example.permission.USESERVICE" android:protectionLevel="normal"/><service android:name="com.example.haohai.helloWorldService" android:exported="true" android:label=&q ...
安卓逆向入门-基础知识
安卓逆向入门-基础知识adb常用命令:
12345678910111213141516171819adb devicesadb install *.apkadb install -r -t *.apk #升级/覆盖 测试模式adb uninstall *.apk #卸载adb push 本地路径 设备路径adb pull 设备路径 本地路径 #若所在文件夹需要root 则先转移到/sdcard再拉取adb logcat > log.txtadb shell dumpsys package 包名 #获取指定应用详细信息 包名如com.example.myappadb shell dumpsys activity top #查看当前应用activity信息adb shell dumpsys dbinfo 包名 #查看数据库信息、执行操作的查询语句等adb shell dumpsys meminfo 包名/进程ID #查看内存信息adb shell input text "xxx" #在屏幕选中输入框内输入文字 不能中文adb shell pm list packa ...
Web入门-JS逆向
Web入门-JS逆向JS基础Window对象成员:
12345678910111213document Document对象histroy History对象location Location对象 navigator Navigator对象screen Screen对象scrollBy() 按指定像素值滚动内容scrollTo() 把内容滚到指定坐标setInerval() 定时器setTimeout() 延时器alert() 警示框prompt() 对话框open() 打开新页面close() 关闭页面
Document对象成员:
123456789101112body <body>元素cookie 当前cookiedomain 文档域名lastModifid 文档最后修改日期时间referrer 访问来源title 文档标题URL 当前URLgetElementById() 返回指定ID的引用对象getElementsByName() 返回指定名称对象集合getElementsByTagName() 返回指定标签名对象集合open() 打开流接收输入输出wrie() ...
硬件安全初探-实战基础
硬件安全初探-实战基础MIPS32汇编MIPS32寄存器分为通用寄存器GPR和特殊寄存器。MIPS体系结构有32个GPR,汇编中可用$0~$31表示,也可用寄存器名表示,堆栈从内存高地址向低地址增长。
编号
寄存器名
描述
0
zero
值始终为0
1
$at
保留
2~3
\$v0~\$v1
values,保存表达式或函数返回结果
4~7
\$a0~\$a3
arguments,作为函数前4个参数
8~15
\$t0~\$t7
temporaries,临时寄存器
16~23
\$s0~\$s7
saved values,子函数使用时需先保存原寄存器的值
24~25
\$t8~\$t9
temporaries,临时寄存器,补充\$t0~\$t7
26~27
\$k0~\$k1
保留,中断处理函数使用
28
$gp
global pointer,全局指针
29
$sp
stack pointer,堆栈指针,指向堆栈栈顶
30
$fp
frame pointer,保存栈指针
31
$ra
return address,返回地址
对 ...
恶意程式前线战术指南笔记
恶意程式前线战术指南笔记档案映射PE蠕虫感染1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include <iostream>#include <Windows.h>#pragma warning(disable : 4996) /* Title: User32-free Messagebox Shellcode for All Windows * Author: Giuseppe D'Amore * Size: 113 byte (NULL free) */char x86_nullfree_msgbox[] = "\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42&q ...
Windows软件调试初探-WinDBG命令入门
Windows软件调试初探-WinDBG命令入门碎碎念标准命令有:
控制调试目标执行,包括回复运行g、跟踪执行t、单步执行p、追踪监视wt。
观察和修改通用寄存器r,读写MSRrdmsr/wrmsr,设置寄存器显示掩码rm。
读写I/O端口ib/iw/id、ob/ow/od。
观察、编辑和搜索内存数据的d系列、e系列、s系列。观察栈k系列。
设置和维护断点bp/ba,管理断点bl/bc/bd/be。
显示和控制线程~,显示进程|。
评估表达式?,评估C++表达式??。
汇编与反汇编a/u。
显示段选择子dg。
执行命令文件$。
设置调试事件处理方式sx系列,启用/禁止静默模式sq,设置内核选项so,设置符号后缀ss。
显示调试器和调试目标版本version,显示调试目标所在系统信息vertarget。
检查符号x。
控制和显示源程序ls系列。
加载调试符号ld,搜索相邻符号ln,显示模块列表lm。
结束调试会话q,结束远程调试qq,结束调试会话并分离调试目标qd。
标准命令帮助?。
元命令以点开始,有:
显示和设置调试会话的调试器选项,如符号选项.symopt ...