当前位置: 首页 > news >正文

素材网站怎么做商业网站建设教程

素材网站怎么做,商业网站建设教程,网店设计模板免费,免费ppt模板在哪里下载目录 一.查壳 二.运行缺少dll 三.主函数 四.hObject线程 五.Thread线程 六.judge函数 七.解题脚本 这题的关键在于了解一定的线程相关知识 一.查壳 32位带壳,用upx脱壳 二.运行缺少dll 后续尝试了各种方法修复dll但是还是运行不了 值得一提的是脱壳后的程序不能动态调试…

目录

一.查壳

二.运行缺少dll

三.主函数

四.hObject线程

五.Thread线程

六.judge函数

七.解题脚本


这题的关键在于了解一定的线程相关知识

一.查壳

32位带壳,用upx脱壳

 

二.运行缺少dll

后续尝试了各种方法修复dll但是还是运行不了

 

 值得一提的是脱壳后的程序不能动态调试,如果动态调试会导致原本识别出来的函数和线程名变成红色的JMPOUT(地址)的形式,难以阅读和理解

三.主函数

1.menu函数

打印一个menu,执行输入输出

 

2.两个线程

根据微软官方文档可以得知由CreateMutexW()创建的::hObject是一个互斥锁(与下方的hObject线程区分开)

hObjectThread是两个线程,其中CreateThread()函数第三个参数是运行的线程函数

CloseHandle()可以关闭线程

3.judge函数用于判断输入字符是否满足条件

 

四.hObject线程

1.线程函数基本功能
WaitForSingleObject 函数实际上就是抢占主函数创建的::hObject互斥锁,抢占成功后执行判断

这里的count初始值是29,用于控制循环次数,所以可以猜测flag有29位

显然执行encode()函数后休眠一段时间,最后释放互斥锁,释放之后会使Thread线程开始运行

2.encode()函数的功能

①先判断输入字符串的count下标字符是否为字母,不是字母则结束程序,也就是说flag全是字母

②第二条if语句是判断该字符是否为大写字符,如果是大写字符那么在off_418000指针指向的字符表中根据chr-38后的偏移值查表确定字符

③如果是小写字符,根据chr-96的偏移值查表确定字符

④值得一提的是off_418000指针指向的字符表为 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm

这里的0-25是大写字母,26-52是小写字母,所以经过查表操作后,原来的小写字母必定变成大写字母,大写字母必定变成小写字母

 

五.Thread线程

当hObject线程交出互斥锁后,轮到Thread线程运行线程函数,很显然这个函数的功能是--count

那么count初始值是29,由hObject运行后变成28,再由Thread线程运行后变成27

这样往复循环,所以hObject线程中,只对下标为奇数的字符进行了操作,偶数字符由于Thread线程对count的作用所以不被执行

 

 

六.judge函数

 可以看到是对输入的字符串和off_418004指针指向的字符表进行比较

off_418004 : TOiZiZtOrYaToUwPnToBsOaOapsyS

七.解题脚本

根据比较用的字符表可以得知flag经加密后内容为:TOiZiZtOrYaToUwPnToBsOaOapsyS

同时只对奇数下标进行操作,偶数下标不操作,所以不妨直接令flag=arr

根据每个字符在字符表中的位置可以确定偏移值

如果加密后的字符是小写,那么原来是大写,要加38

加密后的字符是大写则原来是小写,加96

#include <iostream>
using namespace std;
unsigned char table[53] = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
unsigned int find(unsigned char ch)
{for (int i = 0; i < 52; i++)if (ch == table[i])return i;
}
int main()
{unsigned char arr[30] = "TOiZiZtOrYaToUwPnToBsOaOapsyS";unsigned char flag[30] = "TOiZiZtOrYaToUwPnToBsOaOapsyS";for (int i = 29; i >-1;i--){if (arr[i] <= 'Z'&& arr[i]>='A')flag[i] = find(arr[i]) + 96;elseflag[i] = find(arr[i]) + 38;i--;}flag[29] = 0;cout << flag;//ThisisthreadofwindowshahaIsESreturn 0;
}

最终输出ThisisthreadofwindowshahaIsES

但是提交flag{ThisisthreadofwindowshahaIsES}是错误的,看了其他大佬的wp才知道最后一位要加一位E

http://www.yayakq.cn/news/284673/

相关文章:

  • 做网站公司排行榜基于微信公众平台的微网站开发
  • 网站模板管理网站设计怎么自学
  • 建设网站的申请信用卡分期wordpress手机底部菜单
  • 网站设计行业资讯郑州竞价托管公司哪家好
  • 如何做建材团购网站建设网站的效果目的及其功能
  • 电商网站设计公司易思网站系统
  • 做点效果图赚钱的网站自助建站系统官方版
  • 网站建设价格差别为什么这么大用博客网站做淘宝客
  • 什么网站做外贸好什么网站流量高
  • 擦彩网站开发农副产品网站建设目标
  • 广州网站设计推荐柚米做网站的相关教程
  • 如何做一个完整的网站百度互联网营销
  • 网站建设 需求模板漂亮又简单的logo图片
  • 天津开发区建设工程管理中心网站有域名有服务器怎么做网站
  • 404过多会不会影响网站排名门户网站平台建设方案
  • 网站建设企划动力素材库视频免费下载无水印
  • 顺义区网站建设html网站设计模板
  • 有个网站专做品牌 而且价格便宜微信网站建设流程
  • 英德市建设及城乡管理局网站余姚网站建设设计服务
  • 网站管理密码自己ip做网站
  • 网站开发实习富锦建设局网站
  • 湖南电商平台网站建设网站对联代码
  • 好网站开发策划要求网站建设都需要什么
  • 做电影网站需要多打了服务器wordpress.htaccess
  • 创建网站用突唯阿做响应式网站秀米官网登录入口
  • 网站的建设及推广建设网站费用预算
  • 常州网站建设公司渠道网页网站怎么做的
  • 网站开发的价格南宁网站建设醉懂网络
  • 微信公众号做电影网站要域名吗wordpress商品列表对比插件
  • 站长统计入口贵阳网站建设哪家