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入门相关推荐

  1. Flink 基本原理与生产实践分享【入门必读,概念清晰】

    Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...

  2. java项目_好程序员Java分享从入门到服务端项目开发的过程

    好程序员Java分享从入门到服务端项目开发的过程,对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而 ...

  3. 初学python的体会心得-分享给入门Python小白的学习心得

    原标题:分享给入门Python小白的学习心得 Python诞生于1989年,第一个公开版本于1991年问世.作为一门历史悠久的语言,Python具有代码简短.可读性强等先天优势.Python是一个很全 ...

  4. python找工作心得体会_分享给入门Python小白的学习心得

    原标题:分享给入门Python小白的学习心得 Python诞生于1989年,第一个公开版本于1991年问世.作为一门历史悠久的语言,Python具有代码简短.可读性强等先天优势.Python是一个很全 ...

  5. jmeter一个线程组多个请求_分享一些我在实际项目中使用jmeter压测的一些技术点跟一些踩过的坑吧...

    jmeter工具的下载安装,如果是小白什么的就可以先看一下jmeter下载安装教程 我就直接教大家怎么去使用jmeter工具 我是如何使用jmeter去做一个性能测试的,首先第一点特别重要打开了jme ...

  6. 主流低功耗服务器u,新组低功耗NAS服务器(1037U)分享

    " ]5 ?6 B/ P6 \; v) i' [1 u此贴作为经验分享和交流,参考个人应用需求,简要论述NAS选型,供各位参考! , m8 q; M# Y* D% M0 Q; u9 T 3 ...

  7. 【inswave人采访】UI平台组研究员张宥利分享了作为程序员的成长经历

    ​ inswave创立20周年之际我们对公司部分优秀的员工,本次采访的主人公是UI平台组研究员张宥利.他说,改变发展方向,实现目标,要从自我学习开始.让人强烈感受到他作为开发人员为增强能力而做出的努力 ...

  8. .NET 产品组问卷调查|和我们分享你的 .NET 使用情况

    作为一名 .NET 开发者,是什么让你开始学习 .NET?在你看来 .NET 在哪些场景下最有效?在平时的工作或学习中,你都在哪里学习 .NET 资源?你更希望在哪里看到更多 .NET 本地化内容?你 ...

  9. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...

最新文章

  1. JavaScript 中 Object ,Prototype 相关的属性和方法
  2. 直播预告 | AAAI 2022论文解读:基于对比学习的预训练语言模型剪枝压缩
  3. ajax php登陆界面,实例详解Ajax实现漂亮、安全的登录界面
  4. Linux内核协议栈-一个socket的调用过程,从用户态接口到底层硬件
  5. linux uwsgi 非root,nginx – 只能用root运行uwsgi
  6. 如何在几天时间内快速理解一个陌生行业?
  7. Router OS 全攻略
  8. 不经意传输算法 效果
  9. linux——文件操作
  10. 使用网络登陆的id创建odbc后怎么链接_这是一篇关于苹果ID账号分享和规范使用教程。...
  11. 美联储历次加息周期及结果
  12. 计算机视觉入门CV之街道字符识别—01赛题理解
  13. java 音频 傅立叶_关于FFT分析音频的小归纳
  14. D3.js学习指北--第二章,基础复习
  15. 问题 D: 清点人数
  16. 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
  17. [轻音乐] - 班得瑞专辑[14CD]
  18. java里break的使用方法_java中break,continue,return使用方法
  19. 中国IC设计Fabless排行榜 TOP100
  20. android qq 分享代码,Android将内容分享到QQ和微信实例代码

热门文章

  1. 软件测试基本方法(七)之验收测试
  2. 资源管理:caching模式
  3. Python学习记录-判断字符串为空
  4. 宅社V0.2.0发布并开源,从零开始打造一个面向产品级应用
  5. 嵌入式工程师是怎样炼成的(五)---- 踏实工作修订版
  6. 华南理工大学计算机考研分析
  7. ssm课堂考勤管理毕业设计-附源码191617
  8. access 江苏计算机二级_计算机二级,这一次我要跟你说再见!
  9. genymotion启动虚拟机遇到问题解决方法步骤
  10. android 桌面悬浮窗 录屏时间控制显示效果