1625-5 王子昂 总结《2017年10月3日》 【连续第368天总结】
A. Reversing.kr-CSHOP
B.

CSHOP

这次只有一个文件,没有可怕的ReadMe了

打开是个空荡荡的窗体,没有可操作的地方

心惊胆战地查壳,发现没有,是.NET程序

用.NET Reflector进行反编译
可以看到程序生成了很多个命名猎奇的Label:

在Form1_load中将它们初始化为空白标签

在CLick事件中对它们赋值

试着输了一下这些字符,当然是错的(。

那么很明显,只要”点击”这个按钮就能得到flag了

从初始化代码中可以发现按钮的大小被设置为0了

this.ƒƒƒƒ.Size = new Size(0, 0);

不过只要它存在,我们就还是能抓到它的

最先想到的方法是
1.上次改按钮可用设置的Spy++

点击子窗口列表,很容易找到了Button:

发现在状态中,窗口可见是激活的
不过还有个最大化的选项,勾上
就得到了一个占满屏幕的按钮,点击,然后把最大化取消,就成功实现了Click事件:

这种方法的原理和直接去OD中修改内存是相同的,因为GUI程序的某个控件都拥有ID和属性,通过操作这些可以修改控件
Spy++可以通过句柄更加方便一些

2.第二种方法

复盘的时候看到代码中有:

    this.ƒƒƒƒ.TabIndex = 0;

平常使用中,当无鼠标的时候,可以用TAB键切换选中按钮,空格/回车确认,被选中的单位会有虚线和按压效果标明
小时候台式机没有触摸板都是这么玩儿的

TabIndex这个属性就意味着TAB键的切换顺序,0表示第一个,即默认选中
所以,打开程序后直接按空格/回车就可以直接触发按钮啦

3.然后想到还可以强行分析代码
Click的赋值顺序估计是打乱的,但是为了使flag可读,Label的Point属性一定可以看出来
观察发现在初始化函数中,Label们的y坐标是相等的,x坐标依次排列
因此只需要按照x坐标的大小顺序输出Click中的赋值即可
本程序的x坐标是依次增大,因此只需要直接复制赋值顺序即可
再用Click中的赋值建立一个字典,依次输出即可

过程中发现Label的命名区分为lbl**的值为不可见字符

脚本为:

s = """lbl
,lbl
,lbl,lbl,lbl,lblT,lbl,lbl,lbl,lbl"""
s1 = s.split(',')
s = {"lbl":"W","lbl\n":"5","lbl\n":"4","lbl":"R","lbl":"E","lbl":"6","lbl":"M","lblT":"I","lbl\n":"P","lbl":"S","lblT":"P","lbl":"6","lbl":"S"}
print("flag:", end=' ')
for i in s1:print(s[i], end='')
print()
print("排列顺序:", s1)
print("赋值字典", s)

脚本输出为PPW6RP6SES
错误的原因是
大部分不可见字符都可以正常复制和识别,但是前两个值都被.NET Reflector识别为’\n’了,而赋值处有三个’\n’,导致混淆
9种排序(大概率只有6种,即不重复)都试一下也是可以接受的

5、4、P都可能是\n的赋值,参考之前的结果可知“P4”是正确的

这次的程序虽然难度很小,不过很有意思~

C. 明日计划
Reversing.kr

171003 逆向-Reversing.kr(CSHOP)相关推荐

  1. 171019 逆向-Reversing.kr(MetroApp)

    1625-5 王子昂 总结<2017年10月19日> [连续第384天总结] A. reversing.kr B. MetroApp 这次的逆向处理了很多麻烦,学到了不少关于MetroAp ...

  2. 170929 逆向-Reversing.kr(Ransomware)

    1625-5 王子昂 总结<2017年9月29日> [连续第362天总结] A. Reversing.kr-Ransomware B. Ransomware readme提示解密文件,运行 ...

  3. 171002 逆向-Reversing.kr(AutoHotKey)

    1625-5 王子昂 总结<2017年10月2日> [连续第367天总结] A. Reversing.kr-AutoHotKey B. AutoHotKey 解压出来一个ReadMe一个e ...

  4. 171013 逆向-Reversing.kr(AutoHotKey2)

    1625-5 王子昂 总结<2017年10月13日> [连续第378天总结] A. reversing.kr B. AutoHotKey2 解压出来又来了ReadMe 不过这次比较简单,翻 ...

  5. 170926 逆向-Reversing.kr(ImagePrc)

    1625-5 王子昂 总结<2017年9月26日> [连续第359天总结] A. Reversing.kr-ImagePrc B. ImagePrc 首先查壳,运行发现是一个光秃秃的窗口, ...

  6. 170925 逆向-Reversing.kr(Replace)

    1625-5 王子昂 总结<2017年9月25日> [连续第358天总结] A. Reversing.kr-Replace B. Replace 先查一波壳,还好没有 运行,是一个GUI程 ...

  7. 【reversing.kr逆向之旅】Position的writeup

    有提示是说flag就是当Serial为76876-77776时的Name    有多解    提示有四位 且最后一位是p ReversingKr KeygenMe Find the Name when ...

  8. reversing.kr学习之路-ransomeware

    ransomeware - writeup 题目来源 http://reversing.kr 题目知识点:upx + 花指令 + 堆栈不平衡 + exe特征码提取key 前言 文章只是记录一下自己在r ...

  9. 逆向工程实验——pre3(reversing.kr写题)

    reversing.kr写题 登陆网站http://reversing.kr 点击challenge选项 选一个题目完成. PEPassword 首先拿到这道题的时候我们发现有两个exe文件,开始不太 ...

最新文章

  1. 高效Tensor张量生成
  2. 【ICLR2022】序列生成的目标侧数据增强
  3. 我的机器学习入门之路(上)——传统机器学习
  4. 魅影远程监控(企业版)
  5. clickhouse建库_ClickHouse高性能数据库
  6. Pointers On C 1
  7. log4j无厘头异常
  8. jQuery源码分析 Sizzle选择器
  9. 记录在WIN10家庭版下安装LR11出现问题
  10. fw300r 虚拟服务器,迅捷FW300R无线宽带路由器怎么开启UPnP
  11. 设计四位移位寄存器shifter_4
  12. 打开 Windows 10 默认共享
  13. 解决docker nacos exited(137)
  14. 中南大学计算机学院闭委,2019-2020计算机学院第一学期学委会议顺利召开
  15. 从“赌场”到“大市场”——巴菲特进阶式看中国
  16. 程序员笔记软件cherrytree推荐
  17. [学习笔记]黑马程序员-Hadoop入门视频教程
  18. Ubuntu安装Visual studio code(VScode),并配置远程资源管理器,VScode安装服务器(SSH)
  19. web实验报告——JSP动态网页编程
  20. 机器学习系列(7)_机器学习路线图(附资料)

热门文章

  1. uni-app实战之社区交友APP(10)登录、个人空间开发和动画优化
  2. Shopee使用虚拟信用卡绑卡测试购物教程
  3. matlab高斯型隶属函数,图高斯型隶属函数.PPT
  4. 采用FFmpeg从视频中提取音频(声音)保存为mp3文件
  5. 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?(强烈推荐)
  6. Gallary(中)
  7. 类似华为麒麟鸿蒙类的名字,华为除了“麒麟”,还有四款顶级芯片,名字背后隐藏寓意令人感动...
  8. 对接百度api之银行卡识别
  9. 数理逻辑学习笔记[0] 命题逻辑:语义
  10. Apache OpenNlp的初探