吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5262|回复: 6
收起左侧

[转贴] 【转帖】反-反汇编patch学习(一)

  [复制链接]
默小白 发表于 2019-4-10 16:55

转自:https://xz.aliyun.com/t/4658

最近在学习反-反汇编技巧,以此记录,patch的实例程序在附件中

仅仅是新手的学习记录,大佬轻喷

编写一个测试程序

这个程序没有什么意义,在IDA中把puts函数patch成nop用于添加我们自己的指令

肯定有更好的方法,但是这里只是为了练习

visual studio 2019 preview x64 release编译

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char** argv) {
    char a;
    system("pause");
    a = getchar();

    puts("nop me");
    puts("nop me");
    puts("nop me");
    puts("nop me");
    puts("nop me");
    puts("nop me");
    puts("nop me");

    putchar(a);
    system("pause");
    return 0;
}

patch过程

添加nop

IDA打开,根据字符串找到我们自己的逻辑

img

把一部分puts("nop me") patch成nop,类似这样,在这些nop中开始表演

img

添加特别的汇编指令

这里现在一堆nop中添加如下的两条指令,来分析一下

img

call $+5也就是跳转到pop rax,看起来和直接跳到下一条指令没什么区别

但实际上,call会把下一条要执行的指令地址压栈,这里也就是把0x140001035压栈

pop rax,这时rax就是0x140001035

img

调整rax的位置,加上8以后jmp rax,准备跳到原本的指令中

这里rax==0x140001035+8==0x14000103C

patch到这里,保存一下,即附件中的patched1

在IDA中重新打开,调试发现,jmp rax即将跳转到jmp指令的之后的某条指令上

img

添加垃圾指令

为了让反汇编引擎"出错",我们可以在中间即将跳过的nop中,添加特殊的垃圾指令

比如刚刚动态调试发现会跳转到...03D的位置上,那我们就让03D的指令是jmp到接下来的原程序流程

这里也就是跳转到puts("nop me")

img

保存一下,作为patched2

可以看到还是可以正常运行的

虽然IDA的反汇编引擎识别的不错,但是F5的结果就有点差了

img

img

我们改成0xEB,保存为patched3,重新打开,可以看到IDA的反汇编已经把很多指令识别为数据了

img

F5后也看不到原本的几个puts("nop me")

让IDA正确分析

本程序中,可以通过动态调试发现jmp rax的目的地,然后从call $+5开始,把这些指令都nop掉,直接jmp 到该去的地址,帮助IDA正确分析

帮助IDA了解哪些是数据、哪些是代码指令,可以用U D C这三个快捷键,应该是undefine,data,code的意思

免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
sura_ben + 1 我很赞同!
myaoao + 1 + 1 鼓励转贴优秀软件安全工具和文档!
vanhoo + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wqy88 发表于 2019-4-10 17:45
很好,感谢楼主的分享。
rickw 发表于 2019-4-10 23:20
hhxtf 发表于 2019-4-11 00:15
chengfa168 发表于 2019-4-26 23:28
寻高手写一个协议,写的联系我QQ2969569898
yagamma 发表于 2019-5-6 03:21
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表