【Re】 HomuraVM

南邮平台逆向 前面几题太基础就不写了。 WxtVM1 IDA打开直接查看主函数,可以看到flag的长度为24,经过一个函数调用后,与密文进行对比。 那么关键点就是sub_4005B6函数了,内部是这样的, 这个流程说明它是个虚拟机,字节码存在byte_6010C0中,一共有15000个字节,3个字节为一条指令,第1个字节决定操作符,第2个字节决定flag的偏移,第3个字节作为值与flag对应偏移... 阅读详情

南邮Homura师傅出的一个虚拟机的题目。
比较关键的函数。
在这里插入图片描述这里根据程序内部的指令序列,进行dispatch,每个字符对应一个代码片段,这边我是看汇编分析的,将每个片段的功能分析了一下,把反调试patch后,稍微动态调一下,还是比较简单就能分析出来。

h: ptr+4 (指向输入的下一个字符)
o: ptr- 4 (指向前一个字符)
u: input[ptr]-1
m:input[ptr]+1
r: [register1]+1
a: [register1]-1
G:[register2]-1
v:[register2]=register1
M:[register2]=[register1]+input[ptr]
C:[register2]=[register2]-([register1]&input[ptr])*2
[ ]: 判断input[ptr]是否为0,不为0则循环执行括号内部指令
{ }:判断[register2]是否为0,不为0则循环执行括号内部指令

开始想的是将这些操作都逆一下,但是发现有困难,两个寄存器的值比较难获取。后来还是分析了一下程序中的指令序列,发现了规律。

h[ur]ovMCh{mG}
hv{aG}[ur]ovaaaMCh{mG}
hv{aG}[ur]ovrrMCh{mG}
hv{aG}[ur]ovrararaMCh{mG}
hv{aG}[ur]ovrararrrMCh{mG}
hv{aG}[ur]ovararaaMCh{mG}
hv{aG}[ur]ovrararraraMCh{mG}
hv{aG}[ur]ovrrrarrrMCh{mG}
hv{aG}[ur]ovaarrarrMCh{mG}
hv{aG}[ur]ovaaarrarMCh{mG}
hv{aG}[ur]ovrrrarrMCh{mG}
hv{aG}[ur]ovaarrraaMCh{mG}
hv{aG}[ur]ovarraarMCh{mG}
hv{aG}[ur]ovrrraaarrMCh{mG}
hv{aG}[ur]ovaaarrrrarrMCh{mG}
hv{aG}[ur]ovrrrraarrarrMCh{mG}
hv{aG}[ur]ovrrarraMCh{mG}
hv{aG}[ur]ovaaraarMCh{mG}
hv{aG}[ur]ovrrarraMCh{mG}
hv{aG}[ur]ovaarrrarMCh{mG}
hv{aG}[ur]ovrraarraMCh{mG}
hv{aG}[ur]ovrrarMCh{mG}
hv{aG}[ur]ovaarrarMCh{mG}
hv{aG}[ur]ovrrraarMCh{mG}
hv{aG}[ur]ovrrrraaMCh{mG}
hv{aG}[ur]ovrrarraMCh{mG}
hv{aG}[ur]ovrrrrrrMCh{mG}
hv{aG}[ur]ovaaaarMCh{mG}
hv{aG}[ur]ovrraaaMCh{mG}
hv{aG}[ur]ovaarraMCh{mG}
hv{aG}[ur]ovrrarMCh{mG}
hv{aG}[ur]ovaarraaMCh{mG}
hv{aG}[ur]ovaarraraMCh{mG}
hv{aG}[ur]ovaarrararMCh{mG}

比较一下这些原子操作组成的每一行都只有a,r不同。然后分析一下相同部分。

h: ptr=n
v{aG} 效果等价于 [reg1]=[reg2]=0
[ur] 等价于 [reg1]=input[n],input[n]=0
o: ptr=n-1
v: [reg2]=[reg1] 这个操作好像是废的
然后是a,r对[reg1]加加减减
Mc: [register2]=[reg1]+input[ptr]-([reg1]&input[n-1])*2
对逻辑运算熟悉一点会发现这个是异或操作,可简化为[reg2]=[reg1]^input[n-1]
h: ptr=n
{mG} input[n]=[reg2]

综上,每行实际上的操作就是c[i]=(c[i]+k) ^ c[i-1]。结合最后进行比较的值,我们就可以计算出初始flag的值,(c[i] ^ c[i-1])-k。脚本如下:

import re 
c=[0x1b,0x72,0x11,0x76,8,0x4a,0x7e,0x5,0x37,0x7c,0x1f,88,104,7,112,7,49,108,4,47,4,105,54,77,127,8,80,12,109,28,127,80,29,96]

with open('opstr.txt','r')as f:
    op=f.read().split('\n')

flag=[]
for i in range(len(op)):
    s=re.findall('ov[a|r]+',op[i])
    if s:
        cnt=s[0].count('r')-s[0].count('a')
        flag.append((c[i-1]^c[i])-cnt)
    else:
        flag.append(c[-1]^c[-2]^c[0])

print(''.join([chr(i) for i in flag]))

VMProtect 逆向分析 VMProtect, Part 0: BasicsAuthor: RolfRollesVMProtect is a virtualization protector. Like other protections in the genre, among others ReWolfs x86 Virtualizer and CodeVirtualizer, it works by disassem 阅读详情

相关推荐

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6061

170928 逆向-Reversing.kr(Direct3D_FPS)

1625-5 王子昂 总结《2017年9月28日》 【连续第361天总结】 A. Reversing.kr-Direct3D_FPS B. 这次DX让我有点怂…… 一直对这种大型程序都心有畏惧,可能是因为没写过不了解其原理吧解压出来可以看到包含一个DX库,一个Data文件夹下放置着各种图片和音效资源,一个exe运行一打开就把我吓了一跳,差点以为不小心打开的恐怖游戏…… 这囧囧的怪物,

whklhhhh的博客 867

SAP FICO 银企直连

银企直联或者自动付款的目的是和银行做一个接口,把SAP中的到期应付款(也包括预付款)按照一定格式(银行要求的)在审批后发送给银行,请银行按照这个付款指定进行付款,并跟踪付款状态的过程,这个过程在SAP中如何实现呢?根据个人项目经验,客户需求可分为如下三种: 1. 第一种是完全不自动方式,仅批量生成付款凭证,实际的付款还是通过原来的流程执行,和银行没有任何接口; 2. 第二种是半自动方式,这种方式下需要按照银行的要求的格式生成付款条件,然后把付款文件下载下来,通过企业版的网银接口把付款文件进行上载,提交后

IamRunjiang的博客 9290

CGctf re方向的俩道题

CGctf re方向的俩道题 1.simple machine 有俩个主要函数,第一个是加密 c=“feeddeadbeefcafe” for i in range(54): flag[i]=flag[i]^ord(c[i%16]) 第二个函数是换位。。。这个没看懂一开始 嵌套循环,外层令他为i,内层为j, 简述一下就是把原flag中i+3j给了新flag的18i+j 下面附上py #!/usr/...

皮三宝好菜的博客 809

Android GNSS 可视卫星星空图/卫星天顶图 原理及画法介绍

目录1 概念介绍2 绘制步骤2.1 获取卫星信息2.2 绘制底图 效果图: 1 概念介绍 首先介绍一下方位角和高度角的概念: 方位角:是从某点的指北(地理北极)方向线起,依顺时针方向到目标方向线之间的水平夹角。 高度角:从一点至观测目标的方向线与水平面间的夹角。 卫星天顶图 即是根据每一颗卫星的方位角和高度角将其画在以观测位置为中心的天顶图上。 天顶图其底图为由外向内的三个圆和四条直线。三个圆由外向内依次代表高度角0°、30°、60°,中心点代表90°;四条直线分别表示正北-正南、东北-西南、正东

x1471898145的博客 1万+

SAP MM 物料描述MAKTX 40个字符不够用的问题处理

SAP物料描述表,长度40个字符一般情况下,40个字符在描述中也够用了,但是要加上规格之类的额外描述就不一定了,特别是对于辅助件-刀具。解决方案一:对maktx增强,换成CHAR80或者CHAR100的,但是风险较大,涉及到好多地方,另外SAP+ 算号器 也不支持。解决方案二:增强字段。内部顾问,建议在 那就在这里加一个字段,具体过程如下:1、创建域2、创建架构3、附加架构4、GUI 设置 5、后台设置6、MASS/MM17字段新增。过程1、创建域 SE112、创建结构 se11 3、MARA附加架构

GAVIN 4729

CG CTF MISC 丘比龙De女神

https://cgctf.nuptsast.com/files/gif 题目: 丘比龙是丘比特的弟弟,由于吃了太多的甜甜圈导致他飞不动了! 没错 里面隐藏了一张女神的照片 flag是照片文件的md5值(小写) 记住加上flag{} 题解: 工具: binwalk 010 Editor WinRAR 下载 无法直接打开 使用binwalk 图片里有zip文件结束...

无限迭代中...... 1204

STM32CubeMX、keil、simulink联合开发MCU教程

一、整体思路 利用Matlab的simulink搭建模型生成C代码,通过stm32cubemx生成工程,最后在KEIL或者IAR等工具里面编译生成代码下载至MCU中执行。 本文以流水灯建立模型和简单使用定时器为例进行演示。 二、开发环境 1、安装Matlab Matlab版本建议在2013B以上,本文使用Matlab 2016a。 2、安装STM32硬件支持包 下载地址(https://www.stmcu.org.cn/document/detail/index/id-216053) 安装完成后重启MAT

tzlaa的博客 7736

GCC下的BSD Socket简单使用

GCC下的BSD Socket简单使用 亲手在用GCC编过没问题。之前老是写成C++的,要用G++才能编得过。包含头文件:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/socket.h>#include <arpa/inet.h>#incl...

weixin_33800593的博客 182

117、HDR多帧融合算法:曝光序列、运动鬼影消除与合成权重的高效实现

HDR多帧融合算法实战经验总结 本文分享了HDR多帧融合算法在实际应用中的关键技术和优化经验。主要内容包括: 曝光序列设计:强调动态调整曝光时间比、帧间间隔和拍摄顺序的重要性,特别指出短-中-长的拍摄顺序优势。 运动鬼影消除:比较了三种运动检测方法,推荐梯度域检测方案,并强调在RAW域进行检测的必要性。 合成权重设计:提出基于高斯型权重函数的多因素考量方法,包括基础权重、运动权重和噪声权重的综合处理策略。 高效实现方案:提供NEON指令集加速的具体代码示例,包括梯度计算、权重查表和融合处理等关键步骤。 实用

zzfmlxs的博客 65

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1633

南邮ctf-Remove Boyfriend

搜索文件名称关键词Remove Boyfriend 这种灰色的是 右键追踪tcp 可以点击 跳转 显示分组字节 同理 导出一个png文件 保存为原始数据

a3uRa的一个窝 674

基于Simulink的光伏-储能-柴油机混合微网仿真

摘要:本文基于Simulink平台构建光伏-储能-柴油机混合微网仿真模型,实现可再生能源与备用电源的协同控制。通过光伏优先、储能调节、柴油机兜底的规则控制策略,在24小时仿真中验证了系统在晴天、阴天和夜间三种典型工况下的运行性能。模型采用PVArray模块模拟光伏发电,Simscape电气库构建储能系统,自定义MATLAB函数实现柴油机启停逻辑和能量管理。仿真结果显示系统功率平衡误差<5%,储能SOC维持在20%-80%,柴油机日均运行时间<4小时,满足设计指标。文章详细说明了建模步骤、参数设置

xiaoheshang_123的博客 69

cgctf RE HomuraVM

咕王也不知道今天能不能做出来,从分值上来看,这个是第二男的题目呢 ELF,拖进IDA 我听见雨滴落在青青草地,这一堆指令是还没解析过么,还是什么的,比前两个VM难多了 最终的判断模块 还算OK,起始的v43和最终的v6开始的字符串我们可以知道 函数存在两个比较可疑的,8DC和8AA,8DC中还潜套了另外的8AA 8AA里就是一大堆getpid 8DC最后有个JUMPOUT,跳...

qq_42192672的博客 540

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

171217 逆向-HomuraVM

1625-5 王子昂 总结《2017年12月17日》 【连续第443天总结】 A. CG-CTF(HomuraVM) B. 南邮的Re师傅们真是热爱VM啊……OTZ这一题比WxyVM的两个要难一点,却又比asm汇编级别的解释器简单许多,感谢南邮师傅们(吼姆拉酱?ww)恰到好处的难度控制拖入IDA,结构很清晰 将输入拷贝到一个数组中,然后初始化机器码 变换后进行check很明显解释器就是s

whklhhhh的博客 984

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

171012 逆向-Reversing.kr(SimpleVM)

1625-5 王子昂 总结《2017年10月12日》 【连续第377天总结】 A. reversing.kr B.SimpleVM本来以为这个标题跟南邮CTF平台上的题目一样,只是个简单的虚拟机壳题…… 没想到南邮的是入门类型,这个是复杂入门类型啊QAQELF文件,拖入IDA发现EP地址在映像范围之外,于是无法正常分析 gdb加载又没有任何函数可下断参考了一下WP,发现可以直接用IDA附

whklhhhh的博客 1073

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

170707 逆向-南邮CTF逆向(WxyVM1)

1625-5 王子昂 总结《2017年7月7日》 【连续第278天总结】 A. 南邮CTF逆向(4) B. 4: 记事本打开发现文件头是ELF,拖入IDA进行反编译,发现只有几个函数 查看main函数,发现输入以后调用sub_4005B6()函数,然后判断长度是否为24和字符串0x601060比较 再进一步看4005B6,发现是按照0x6010C0的14

whklhhhh的博客 2408

2017年南邮集训队选拔 题解

2017年南邮集训队选拔 题解

言叶与梦之端 1029

南邮ctf逆向最后一题

你大概需要一个优秀的mac //虽然是osx下的程序,但并不一定真的要有mac…. 正好我也没mac,只能拖到ida里面了,发现还真可以….ida有点厉害 找到right wrong字符串,观察下主框架然后果断f5看下伪代码 可以看出来就是简单的输入长度为56的字符串然后经过func1,xfun1,xfun2,xfun3,xfun4,xfun5这几个函数加密然后check函数比较 ...

笔记本 1369

Reading symbols from ...(no debugging symbols found)...done.不能打断点调试的原因

UNIX的调试工具GDB调试出现如下错误 Reading symbols from ...(no debugging symbols found)...done. 错误的原因是:代码编译时,未添加-g选项。 gcc -g -o test test.c 先写-g 再写 -o 再次进入调试界面即可 gdb test  ...

luoyir1997的博客 8756

南邮CTF平台-Vigenere题解(穷举法)

题目链接:http://ctf.nuptzj.cn/challenges#Vigenere题目提示使用重合因子,但是我尝试失败了我从文章https://blog.youkuaiyun.com/qq_31344951/article/details/77934717受到启发,明文必定是可见字符,然后对密钥进行穷举以下为解题思路:假设加密者使用的密钥为vigenerekey,长度为keylen,密文为字符串arr...

无意中流逝的博客 2941

CGCTF

CGCTF 第一题,hello,re。 小端序:高位数据放在高位地址,即输出相反; 大端序:高位数据放在低位地址,输出相同。 strcmp:设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1&lt;str2,则返回负数; 若str1&gt;str2,则返回正数。 ida:R键转换字符;f5查看伪代码。 第二题 下载后,用记事本打开文件,发现是对func函数的汇编解...

weixin_43225801的博客 1463

南邮CTF逆向题第四道WxyVM解题思路

首先看下题目   ELF文件 直接载入64位IDA 进入main函数 F5查看C代码 分析main函数代码:    __int64 __fastcall main(__int64 a1, char **a2, char **a3)

iqiqiya的博客 4514

南京邮电大学网络攻防平台逆向writeup之[WxyVM]

#1 找到主函数,看上去很简单,把输入的字符串拿去一个函数作运算,然后拿字节和一个固定的dword对比 坑点1:动态调试的时候才找到,是拿byte和dword对比,这里卡了好久,终于找到拿出来对比的字符串了。 #2 进入sub_4005b6();这个就是加密函数,byte_6010C0 是一个类似hash表的东东,有1500字节长,为了方便读取截出来

qq_31344951的博客 2005

bugkuctf 游戏通关玄学式速通

bugkuctf 游戏通关玄学式速通 菜鸡第二个博客,homuraVM先咕咕咕了,周六去图书馆弄。 先讲讲这道有意思的题目~ 点开一看是个游戏,好了,大致方向出来了,爆破。。。 当然我也试着通了下(经舍友半小时尝试看来,是通不了了,其实我没玩2333) od加载,字符串查找,发现flag输出前的字符串 点进去,下面有很多mov,可以猜测(凭着做题经验和运气),那些便是flag了。 ok,那就...

皮三宝好菜的博客 403

iscc_obfuscation and encode

iscc_obfuscation and encode 没事做了一道iscc的逆向题,题目还是有点意思的。首先ida反汇编。 发现有两个关键的函数fencode()和encode(),输入的字符串通过这两个函数,最后转换成s1与字符串”lUFBuT7hADvItXEGn7KgTEjqw8U5VQUq”进行比较。先进入到fencode()里看一看。 打开之后惊了,数了一下大概11层循环...

Nothing 878
上一篇: 格式化字符串总结
下一篇: Pwn题中修改程序连接库的方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值