[转组第5天] | 天枢分享Reverse入门
2018-04-28
天枢reverse分享:
字节序:大端模式:高低低高;小端模式:高高低低
函数传参方式:
Windows
– 32位: 参数从右至左按顺序压栈
– 64位:前四个参数通过rcx、rdx、r8、r9寄存器传参,剩余参数从右至左按顺序压栈。
Linux
– 32位:参数从右至左按顺序压栈
– 64位:前六个参数通过rdi、rsi、rdx、rcx、r8、r9寄存器传参,剩余参数从 右至左按顺序压栈
函数调用约定:
cdecl - 主要在C语言中使用,调用者负责处理栈。
stdcall - 常用于Win32API,该方式由被调用者清理栈。
fastcall - 与stdcall方式类似,在函数传参时,前两个参数会通过寄存器ECX、EDX传。
代码混淆:
jz/jnz花指令:重新反汇编jz/jnz要跳转的地址处的指令,修改后,patch掉花指令,重新生成伪代码。
call+pop花指令:也是调整地址处指令,patch掉花指令,重新解析。
call $+5 指令,call指令占5字节,所以这句实际就是执行下一条指令,常用于执行加密或解密代码。
SMC(Self-Modifying Code)代码混淆,1.直接调试到解密完的步骤;2. idapython进行恢复。
idapython例子(伪代码): //主要是静态分析用。
from idc import *
from idaapi import *
for i in range(start,end):
temp = Byte(i)
PatchByte(i, temp^0x45)
IDA F5常见错误处理:
please position the cursor within a function; 花指令,按上面处理花指令的方法。
position sp value has been found; 堆栈平衡问题,多半存在一个恶意指令修改了堆栈,IDA general可以设置查看堆栈平衡。将恶意指令干掉或者其他。
call analysis failed. 函数参数个数分析错误,修正函数参数个数。
OD断点介绍:
INT 3断点:
- 改变断点地址处的第一个字节为0xCC
- OD快捷键F2
硬件断点:
- 依赖于DRX调试寄存器
- DR0~DR3四个寄存器用来存放断点地址
- DR6和DR7用来控制断点的大小和触发断点的时机
- OD快捷键F4、F8
内存断点:
- 改变内存分页的属性
- 内存访问断点,通常是将内存属性设为PAGE_NOACCESS
- 内存写入断点,通常是将内存属性设为PAGE_EXECUTE_READ
- 由于分页粒度的限制,最小改变一页的属性
总结:
基础知识很重要
预计明天:
Android安全相关
转载于:https://www.cnblogs.com/nww-570/p/8971812.html
[转组第5天] | 天枢分享Reverse入门相关推荐
- Flink 基本原理与生产实践分享【入门必读,概念清晰】
Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...
- java项目_好程序员Java分享从入门到服务端项目开发的过程
好程序员Java分享从入门到服务端项目开发的过程,对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而 ...
- 初学python的体会心得-分享给入门Python小白的学习心得
原标题:分享给入门Python小白的学习心得 Python诞生于1989年,第一个公开版本于1991年问世.作为一门历史悠久的语言,Python具有代码简短.可读性强等先天优势.Python是一个很全 ...
- python找工作心得体会_分享给入门Python小白的学习心得
原标题:分享给入门Python小白的学习心得 Python诞生于1989年,第一个公开版本于1991年问世.作为一门历史悠久的语言,Python具有代码简短.可读性强等先天优势.Python是一个很全 ...
- jmeter一个线程组多个请求_分享一些我在实际项目中使用jmeter压测的一些技术点跟一些踩过的坑吧...
jmeter工具的下载安装,如果是小白什么的就可以先看一下jmeter下载安装教程 我就直接教大家怎么去使用jmeter工具 我是如何使用jmeter去做一个性能测试的,首先第一点特别重要打开了jme ...
- 主流低功耗服务器u,新组低功耗NAS服务器(1037U)分享
" ]5 ?6 B/ P6 \; v) i' [1 u此贴作为经验分享和交流,参考个人应用需求,简要论述NAS选型,供各位参考! , m8 q; M# Y* D% M0 Q; u9 T 3 ...
- 【inswave人采访】UI平台组研究员张宥利分享了作为程序员的成长经历
inswave创立20周年之际我们对公司部分优秀的员工,本次采访的主人公是UI平台组研究员张宥利.他说,改变发展方向,实现目标,要从自我学习开始.让人强烈感受到他作为开发人员为增强能力而做出的努力 ...
- .NET 产品组问卷调查|和我们分享你的 .NET 使用情况
作为一名 .NET 开发者,是什么让你开始学习 .NET?在你看来 .NET 在哪些场景下最有效?在平时的工作或学习中,你都在哪里学习 .NET 资源?你更希望在哪里看到更多 .NET 本地化内容?你 ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...
最新文章
- JavaScript 中 Object ,Prototype 相关的属性和方法
- 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
- ajax php登陆界面,实例详解Ajax实现漂亮、安全的登录界面
- Linux内核协议栈-一个socket的调用过程,从用户态接口到底层硬件
- linux uwsgi 非root,nginx – 只能用root运行uwsgi
- 如何在几天时间内快速理解一个陌生行业?
- Router OS 全攻略
- 不经意传输算法 效果
- linux——文件操作
- 使用网络登陆的id创建odbc后怎么链接_这是一篇关于苹果ID账号分享和规范使用教程。...
- 美联储历次加息周期及结果
- 计算机视觉入门CV之街道字符识别—01赛题理解
- java 音频 傅立叶_关于FFT分析音频的小归纳
- D3.js学习指北--第二章,基础复习
- 问题 D: 清点人数
- 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
- [轻音乐] - 班得瑞专辑[14CD]
- java里break的使用方法_java中break,continue,return使用方法
- 中国IC设计Fabless排行榜 TOP100
- android qq 分享代码,Android将内容分享到QQ和微信实例代码