首页
社区
课程
招聘
[原创]看雪CTF2017 第十一题 CrackMe逆向分析
发表于: 2017-6-22 13:45 6289

[原创]看雪CTF2017 第十一题 CrackMe逆向分析

2017-6-22 13:45
6289

IDA分析程序:

只有这么几个函数,好可怕,肯定是加壳了。

主要算法1,赋值原区段内容异或解密

壳中主要算法2,加载API,修复导入表,请注意图中的API,~^o^~

整个壳的流程也比较简单,只要一路往下走,打死不回头,很快就能找到跳到oep的magic jmp:

恩,接着想脱壳的就可以脱了,win7 由于某些原因没有成功,不过也dump了一份供IDA分析。

用IDA分析dump文件,分分钟找到关键点:

跟进DialogFunc:

流程是不是很清晰

关键call是不是也很简单。。。。。。。。。。。。。。。。

然而算了两个小时也并不还原。

这一切都是假的。。。。。。。。

接着回头从脱壳开始,一步一步跟踪,发现了很多有意思的API

CreateToolhelp32Snapshot

WaitForDebugEvent

SetThreadContext

WriteProcessMemory

从新梳理流程,发现main函数有猫腻:

发现某些条件下竟然可以跳过产生对话框,what fuck this,那我们看到的对话框是什么???

接着详细跟踪。。。

sub_4015B0 提权

这部分后续更新。。。。。。20170623更新

sub_401480 遍历进程,判断父进程:

判断是否为explorer 或者cmd,之后直接把OD改成explorer.exe调试。

其他反调试未留意。。。。。

1.跳过创建对话框

2.用自身程序创建一个进程,并与之交互

SEG001:0040170B E8 30 FF 00 00                          call    sub_411640 

sub_410A20

下断点WriteProcessMemory,ReadProcessMemory


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 3003
活跃值: (479)
能力值: ( LV15,RANK:1395 )
在线值:
发帖
回帖
粉丝
2
看了作者的wp,我这完全是非主流解法吧!
IV?用哪个加密就用哪个解密呗。怎么加密的?
IV:初始化向量
MSDN:基类库中提供的块密码类使用称作密码块链  (CBC)  的链模式,它使用一个密钥和一个初始化向量  (IV)  对数据执行加密转换。对于给定的私钥  k,一个未使用初始化向量的简单块密码将把相同的明文输入块加密为同样的密文输出块。如果在明文流内有重复的块,那么在密文流内也会有重复的块。如果未经授权的用户知道有关明文块的结构的所有信息,就可以使用该信息解密已知的密文块并有可能获得您的密钥。若要克服这个问题,可将上一个块中的信息混合到加密下一个块的过程中。这样,两个相同的明文块的输出就会不同。由于该技术使用上一个块加密下一个块,因此使用了一个  IV  来加密数据的第一个块。使用该系统,未经授权的用户有可能知道的公共消息标头将无法用于对密钥进行反向工程。 
原来IV就是来加密数据的。
170=0xAA=10101010(2)  正好能达到反转的效果。
但是为何我要分两组才能解出来呢?
2017-6-23 13:54
0
游客
登录 | 注册 方可回帖
返回
//