吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7048|回复: 58
收起左侧

[原创] 【2021春节】window初级题

  [复制链接]
漁滒 发表于 2021-3-4 20:10
本帖最后由 漁滒 于 2021-3-4 20:13 编辑

这是第一次进行window软件的逆向,整个过程搞了差不多一整天,废话不多说,直接进入正题。
逆向之前需要准备以下一些工具
1.破解专用虚拟机2.0(用于脱壳和修复)站内链接:https://www.52pojie.cn/thread-661779-1-1.html
  1.1、吾爱破解OllyDbg(用于脱壳)虚拟机自带
  1.2、CFF Explorer(用于修复)虚拟机自带
2.VMware Workstation Pro(用于启动上方的虚拟机)
3.IDA_Pro_v7.0(用于静态分析脱壳后的程序)
4.python(运行frida注入js代码)
一、脱壳
启动虚拟机后,在吾爱破解工具包的PE工具中打开【PEID V0.95】
0.jpg
将待脱壳的【【2021春节】解题领红包之二.exe】拖到【PEID V0.95】窗口里面
1.jpg
发现是UPX的压缩壳,接下来要使用OllyDbg进行脱壳,这里使用的是ESP定律法脱壳
我学习参考的视频来自于:https://www.bilibili.com/video/BV1TT4y1T7QC
首先使用OD附加进程
2.jpg
这时会提示代码压缩,这里选择【否】
3.jpg
这是代码会在【pushad】这条指令下断下,然后按一下F7
4.jpg
此时可以看到,只有ESP和EIP两个寄存器是红色的,其他都是白色的
5.jpg
然后在ESP寄存器的值上右键,选择【数据窗口中跟随】,接着在数据窗口的第一个值的位置右键,选择【断点】-> 【硬件写入】 -> 【Word】
6.jpg
然后按一下F9,会运行到一个地方,它的上一行指令就是【popad】
7.jpg
然后继续按F7往下走,来到【jnz】的地方会有一个红色的箭头往上
8.jpg
然后在它下一行的地址处【00436831】点击一下,然后按F4就可以直接来到点击的地方,接着按F7,就可以来到【jmp】的地方
9.jpg
此时只要再按一次F7,就真正进程程序的地方
10.jpg
接着在汇编窗口右键,选择【用OllyDump脱壳调试程序】
12.jpg
什么都不用改,直接点击【脱壳】,重命名为【1.exe】
13.jpg
将脱壳后的程序拖回本机,双击运行,发现提示不出来,并且直接闪退,接下来需要修复
打开吾爱破解工具包的PE工具中打开【CFF Explorer】
14.jpg
打开刚刚脱壳得到的1.exe,点击【File Header】中的【Click here 】
15.jpg
勾选 Relocation info stripped from file并点击【OK】,然后另存为【2.exe】
16.jpg
再次将得到的【2.exe】拖回本机,双击运行,显示正常了。此时脱壳修复完成
二、静态分析
使用AID打开【2.exe】,然后快捷键【ALT+T】打开文本搜索,输入我们一开始看到的【Please input password:】,会查到到sub_402320函数,F5转换为伪C代码
17.jpg
可以看到我们输入字符串以后,下面有一个判断字符串长度的地方,只有字符串长度是23的时候,才会执行里面两个函数,如果不是,则直接显示【Error, please try again】
18.jpg
然后进入sub_402490和sub_402020大致先浏览一下,可以发现在sub_402020中同时出现【Success】和【Error, please try again】,那么可以初步猜测sub_402020就是判断的关键函数
经过简单的分析可以知道,v22是函数的第一个参数,也是我们输入的字符串,v23就是flag的指针,下面while循环判断是否全部相等
19.jpg
那么理论上说只要hook出v23的指针,在通过指针就可以拿到flag了,开始实践

python代码
[Python] 纯文本查看 复制代码
import frida
import sys

def on_message(message, data):
    pass

with open('win.js', 'r', encoding='utf-8') as f:
    jscode = f.read()

session = frida.attach('2.exe')
script = session.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()


js代码
[JavaScript] 纯文本查看 复制代码
function main() {
    var sub_402020 = ptr(0x402020); //来源于IDA函数名
    var instr;
    console.log("sub_402020 "+sub_402020);
    Interceptor.attach(sub_402020, {
        onEnter: function(arge){
            console.log("sub_402020 Enter");
            instr = Memory.readByteArray(arge[0], 32);
            console.log(instr);
            instr = Memory.readByteArray(arge[1], 32);
            console.log(instr);
            instr = Memory.readByteArray(arge[2], 32);
            console.log(instr);
            instr = arge[3];
            send(instr);
            instr = arge[4];
            send(instr);
        },
        onLeave: function (retval){
            console.log("sub_402020 Leave");
            var flagptr = Memory.readPointer(ptr(0x42E968))  //来源于xmmword_42E968
            var flag = Memory.readCString(flagptr);
            console.log("flag");
            console.log(flag);
        }
    })
}
main();


我们先运行【2.exe】,然后等待出现【Please input password:】后运行hook的脚本
等脚本输出【sub_402020 0x402020】后,我们随意输入23为的字符串
20.jpg
软件显示的是输入的flag不正确,再来看看hook的内容
21.jpg
此时正确的flag【2021HappyNewYear52PoJie】已经被hook出来了
最后测试一下
22.jpg
结果正确

免费评分

参与人数 19吾爱币 +26 热心值 +18 收起 理由
atom_warhead + 1 谢谢@Thanks!
Chinese1949 + 1 + 1 我很赞同!
翎羽王子 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
66099 + 1 用心讨论,共获提升!
yunhaiwuyu + 1 + 1 我很赞同!
杨辣子 + 1 + 1 谢谢@Thanks!
ycf0616 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
hu1314 + 1 + 1 用心讨论,共获提升!
Sunn11y + 1 + 1 我很赞同!
RongJ + 1 我很赞同!
维C糖果 + 1 + 1 用心讨论,共获提升!
小哲哲你来了 + 1 + 1 我很赞同!
zzyzgy + 1 + 1 用心讨论,共获提升!
king2020721 + 1 + 1 热心回复!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
唯一笑解千愁 + 1 + 1 热心回复!
细水流长 + 3 + 1 热心回复!
努力加载中 + 1 + 1 用心讨论,共获提升!
逍遥一仙 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

Hmily 发表于 2021-3-4 22:03
都用od了,咋不直接调试了?
头像被屏蔽
cnzb 发表于 2021-3-4 20:51
Monklamn 发表于 2021-3-4 22:30
cnzb 发表于 2021-3-4 20:51
看到windows初级题的时候我盲猜是windows基础知识,点进去才发现是破解。。。打扰了

我跟你一样。。。。。。。。溜了溜了
绝对疯子 发表于 2021-3-4 20:23
这道题太难了 我不会做~!!!
hunshimowang 发表于 2021-3-4 21:28
谢谢提供 有空试试
wangjing9999999 发表于 2021-3-4 21:30
虽然看不懂,但我知道很厉害!
寒疫 发表于 2021-3-4 22:14
感谢大佬分享,虽然不太懂
 楼主| 漁滒 发表于 2021-3-4 22:21
Hmily 发表于 2021-3-4 22:03
都用od了,咋不直接调试了?

因为OD不太会用(没学过),所以只能换一种方法
push1val 发表于 2021-3-4 22:25
楼主太强了,佩服
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-26 12:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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