吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 10094|回复: 89
上一主题 下一主题
收起左侧

[CTF] 第二届广东省大学生网络攻防大赛 simple_re

  [复制链接]
跳转到指定楼层
楼主
muyilin 发表于 2022-5-31 22:31 回帖奖励
本帖最后由 muyilin 于 2022-6-7 08:58 编辑

第二届广东省大学生网络攻防大赛 simple_re

流程总结:(思路及原文出自  JANlittle  师傅)
程序将关键函数以对象元素的形式存在对象里,然后在申请内存中搭配指针间接调用,关键是把内存空间中对应位置的函数和变量用流程图梳理清除。
sub_140002110 有反调试,主要是 IsDebuggerPresent 和获取 ThreadContext 并检测是否有硬件断点。
加密流程为先打乱每个字节的比特顺序,其实就是把比特串倒过来;然后利用打乱比特顺序的前 4 字节输入 SMC 解密一段代码,并开一个线程检测 SMC 解密后的代码段是否有 0xcc,有的话说明前 4 字节输入错误;之后调用上述代码段进行魔改 XTEA 加密。
.
.
下载程序,照例扔入 exeinfope 中查看信息:
在这里插入图片描述
.
.
64 位 exe 文件,无壳,照例扔入 IDA64 中查看伪代码,有 main 函数看 main 函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
.
.
第一部分是输入字符比特流倒序,接下来我们看第二部分:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
.
.
第二部分的 SMC 解密处后面再说,因为要用到第三部分的数据,所以卡住不要紧张,说不定答案在后面呢。现在我们来看第三部分:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
.
.
第三部分——用 Str1 的前 4 个字节生成 SMC 代码:

b=[  0x27, 0x44, 0x7F, 0xEB, 0x3A, 0x8F, 0x1A, 0x2E, 0xFB, 0x41, 
  0xE6, 0x46, 0xFB, 0x59, 0xEE, 0x42, 0xFB, 0x49, 0xD6, 0x46, 
  0xF9, 0x49, 0xEE, 0x85, 0x72, 0x85, 0xB3, 0xF6, 0x3A, 0x87, 
  0xB3, 0x16, 0xF9, 0x4C, 0xF2, 0x87, 0x37, 0xF8, 0x31, 0x4B, 
  0x82, 0x0C, 0xF6, 0x0E, 0x72, 0xCB, 0xB3, 0xE2, 0x0D, 0xA0, 
  0x9C, 0x89, 0xB5, 0x49, 0x0A, 0x0E, 0x72, 0x0C, 0xF6, 0x85, 
  0x37, 0xF0, 0xCD, 0x4B, 0x62, 0x03, 0x75, 0x8A, 0x72, 0x0C, 
  0xF6, 0x85, 0x37, 0xF8, 0x7B, 0x1A, 0xB7, 0x0C, 0xF6, 0x0E, 
  0x72, 0x87, 0xB3, 0xFA, 0xB3, 0xE4, 0xF0, 0x3F, 0xB0, 0x87, 
  0xB3, 0xFA, 0x73, 0xCE, 0x7D, 0x4B, 0x82, 0x8F, 0x16, 0x0D, 
  0x3A, 0x81, 0xFA, 0x8B, 0x72, 0x0C, 0xF6, 0x0E, 0x3A, 0x87, 
  0xB3, 0x2E, 0x3A, 0x0D, 0x3E, 0x85, 0x7A, 0x87, 0xB3, 0xFE, 
  0x73, 0xC4, 0xC7, 0xDE, 0x73, 0x49, 0x0E, 0x85, 0x37, 0xE0, 
  0xF7, 0x4B, 0x82, 0x87, 0xB3, 0xF6, 0xFF, 0x18, 0x33, 0x0E, 
  0x72, 0x0C, 0xF6, 0x85, 0x37, 0xF4, 0x37, 0xE6, 0x74, 0x3D, 
  0x34, 0x85, 0x37, 0xF4, 0xF7, 0xCC, 0xF9, 0x49, 0x06, 0xCF, 
  0x9A, 0x07, 0x7F, 0xCE, 0xF1, 0xEC, 0xF5, 0x46, 0xFF, 0x00, 
  0x73, 0x0E, 0x72, 0x0C, 0xF6, 0x46, 0xF9, 0x49, 0xD6, 0x46, 
  0x73, 0xC4, 0x7D, 0x06, 0xF9, 0x49, 0x06, 0x0F, 0xBA, 0x3D, 
  0x26, 0x0F, 0x37, 0xF8, 0x75, 0x4B, 0x8E, 0x0D, 0x1F, 0x7E, 
  0x8D, 0xF3, 0x09, 0x46, 0xF9, 0x49, 0xEE, 0x85, 0x27, 0xF4, 
  0x7F, 0x1E, 0x3A, 0x87, 0xB3, 0x16, 0x3A, 0x8F, 0x36, 0x0A, 
  0xF9, 0x59, 0x02, 0x87, 0x62, 0x9C, 0xBE, 0x8D, 0xB6, 0x2C, 
  0xAB, 0xCD]

Str1=[0x72, 0x0C, 0xF6, 0x0E]

address=0x140042000
for i in range(232):
    patch_byte(address+i,Str1[i%4]^b[i])

print("success")

在这里插入图片描述
在这里插入图片描述
.
.
最后梳理流程,写解密代码:(代码出自  JANlittle  师傅)
请添加图片描述
请添加图片描述

#include <stdio.h>
#include <stdint.h>

void decipher(unsigned int num_rounds,uint32_t v[2],uint32_t const key[4]){
        unsigned int i;
        uint32_t v0 = v[0], v1 = v[1], delta = 0x78955381, sum = delta * -num_rounds;
        for(i = 0; i < num_rounds; i++){
        v1 -= (((v0 << 3) ^ (v0 >> 6))+v0) ^ (sum + key[(sum >> 11) & 3]);
        sum += delta;
        v0 -= (((v1 << 3) ^ (v1 >> 6)) + v1) ^ (sum + key[sum & 3]);
        } 
        v[0] = v0; v[1] = v1;
}

uint8_t rebits(uint8_t n)
{
        uint8_t count = 0;
        for(int i = 0; i < 8; i++)
        {
                count = count *2 + n % 2;                 
                n /= 2;
//超简便的 bit 逆序算法, + n % 2 就是取 8 bit 最后一位,搭配  *2 就是从 0 开始不断把最后一位往前移动,n / 2 是无余数的也就是不断舍弃最后一位 
        }
        return count;
}

 int main(){
        uint8_t enc[]={0x72, 0x0C, 0xF6, 0x0E, 0x8C, 0x69, 0x23, 0x69, 0x59, 0xA8, 0x06, 0xEF, 0x2A, 0x1A, 0x56, 0xB6, 0x96, 0xAC, 0xEE, 0x92,0x5C, 0xF2, 0xED, 0x0A, 0x5F, 0x36, 0x8E, 0x41, 0xA6, 0x36, 0x86, 0x72, 0x56, 0xD2, 0x54, 0xC2, 0x00, 0xC8, 0xA8, 0x00};
    uint8_t key1[33] = "Welcome to the g";                                                        //适用于 IDA 单 bit 或字符串取数 
    uint8_t key2[32] = "ame!\nYour key: ";                
        unsigned int r=12;                                //这里是加密轮数,自己设置 
        decipher(r,(uint32_t *)(enc+4),(const uint32_t *)key1);                        //适用于 IDA 单个 bit 取数的类型强制转换法 
        decipher(r,(uint32_t *)(enc+20),(const uint32_t *)key2);
        for(int i =0; i < 40; i++)
                enc[i]=rebits(enc[i]);
        printf("%s",enc);
        return 0;
}

在这里插入图片描述
.
.
在这里插入图片描述

参考博客:
http://blog.leanote.com/post/xp0int/2022-%E5%B9%BF%E4%B8%9C%E7%9C%81%E5%A4%A7%E5%AD%A6%E7%94%9F%E7%BD%91%E7%BB%9C%E6%94%BB%E9%98%B2%E5%A4%A7%E8%B5%9B%E9%83%A8%E5%88%86#p-4

re.zip

140.33 KB, 下载次数: 29, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 34威望 +2 吾爱币 +130 热心值 +29 收起 理由
yangyou719 + 1 + 1 虽然我看不懂,但觉得很厉害的样子
fz52033 + 1 用心讨论,共获提升!
blindcat + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
pandore + 1 + 1 我很赞同!
nightmare77 + 1 + 1 热心回复!
fjyuxin + 1 + 1 我很赞同!
yazhou098 + 1 用心讨论,共获提升!
Radiumlrb + 1 + 1 我很赞同!
黑猫永不败北 + 1 + 1 用心讨论,共获提升!
哇卡s + 1 + 1 热心回复!
Flytom + 1 + 1 热心回复!
404undefined + 1 + 1 我很赞同!
jackies + 1 + 1 用心讨论,共获提升!
235956 + 1 + 1 谢谢@Thanks!
azcolf + 1 + 1 热心回复!
ZHHua + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
TonyKing + 1 大佬太强了
17606004414 + 1 + 1 谢谢@Thanks!
duck007 + 1 热心回复!
EulerNN + 1 + 1 我很赞同!
yangchen520 + 1 热心回复!
yixi + 1 + 1 谢谢@Thanks!
time2s + 1 + 1 我很赞同!
s3nake + 1 我很赞同!
seei + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
努力加载中 + 1 + 1 谢谢@Thanks!
天空宫阙 + 2 + 1 用心讨论,共获提升!
永恒与时光 + 1 我很赞同!
吾之名翎 + 1 我很赞同!
Long0296 + 1 鼓励转贴优秀软件安全工具和文档!
heimaojingzhang + 1 + 1 用心讨论,共获提升!
Hmily + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

推荐
JANlittle 发表于 2022-6-6 23:23
muyilin 发表于 2022-6-5 10:22
你好,我是跟着你的wp才复现出来的,官方wp没发,所以思路都是你给的,非常感谢你的分享。但是没有纯粹抄 ...

没事,你把我的思路具体化发表出来给大家学习我还是很赞同的,本来wp发出来就是给大家交流学习的。但你这样前后这样直接引用但一个出处都不给确实膈应人。。打CTF技术是其次,人品可别差,我个人不太打算作什么表示,你把出处加上就行,剩下的留给Hmily师傅处理,看看他怎么说
推荐
JANlittle 发表于 2022-6-6 23:24
Hmily 发表于 2022-6-6 10:54
那你应该明确在帖子中说明这个问题,可以追加对方的出处地址,@JANlittle 你看是否需要进一步处理。

谢谢Hmily师傅,我没啥表示,已经跟他说了,让他加上出处就行,剩下的就麻烦您如果论坛对这种行为还有什么惩罚再麻烦您进行处理,有劳了

点评

口头警告吧。  详情 回复 发表于 2022-6-6 23:40
4#
 楼主| muyilin 发表于 2022-6-2 10:09 |楼主
5#
卢瑟福瓜皮 发表于 2022-6-2 11:24
TQL,师傅有MISC的题目吗
6#
 楼主| muyilin 发表于 2022-6-2 11:27 |楼主
卢瑟福瓜皮 发表于 2022-6-2 11:24
TQL,师傅有MISC的题目吗

没有耶,MISC方向不是我负责
7#
oksuqianyu 发表于 2022-6-2 16:50
总是学习,还会突破不了自己屌瓶颈
8#
oksuqianyu 发表于 2022-6-2 16:51
什么时候搞一种算法只能自己能跑就厉害了。
9#
MXZHT 发表于 2022-6-2 18:50
感谢分享!
10#
sojurice 发表于 2022-6-2 20:37
感谢分享!
11#
73033 发表于 2022-6-2 20:42
学习使我快乐
12#
Jackamy 发表于 2022-6-2 23:47
学习学习再学习。基础差看不懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2022-6-27 06:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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