码迷,mamicode.com
首页 > 其他好文 > 详细

[转组第5天] | 天枢分享Reverse入门

时间:2018-04-29 21:19:46      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:分析   清理   cti   pos   ida   png   一个   安全相关   for   

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安全相关

[转组第5天] | 天枢分享Reverse入门

标签:分析   清理   cti   pos   ida   png   一个   安全相关   for   

原文地址:https://www.cnblogs.com/nww-570/p/8971812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!