VB程序NAG窗口方法-4C法
@[TOC]
最近在练习破解,学习了一种新方法,可以去掉VB程序的NAG窗口,觉得非常好玩,记录下来。
NAG窗口原程序启动有一个NAG窗口,若干秒后会自动关闭。NAG窗口就是为了让用户注册软件经常出现的注册窗口或者软件启动时出现的注册窗口.
去除1用od载入 VB程序有个特点-入口点处都是一个PUSH指令,然后一个CALL指令2 把push后面的数据加上0x4c0x004067d4+0x4c=0x00406820在数据窗口跟随3取dword大小的值 即00406868 再次在数据窗口上跟随4发现两个大小为0x50的数据块每块数据的第三行第五个数据是指定了每块代码(也就是程序启动后要加载的窗体)出现的顺序,我们交换他们的值,就可以去除NAG窗口
作用 好像没啥卵用
DASCTF July X CBCTF 4th re wp
@TOC这两个题在当时都没有做出来
shellcode一看到附件是很多文件的题我就头大,包括上次那个省赛四叶草的内核题,无从下手,这次,我由于对web知识缺乏,没有一眼看出来part1是一个服务器,导致很多时间浪费在这上面,再加上这还是个go的服务器…..碰巧那天ida7.6的服务器还坏了
第一个难关:识别part1是一个golang的服务器主要的代码还是在part3上,当时我也逆了这个,没有想到他把检测flag的逻辑放在了返回函数上,,我这也太粗心了吧,啥函数都看了,既然没有注意到这个艹原封不动的rc4,key也给了,密文也给了…
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include <inttypes.h>3 #include <stdio.h>4 #include <string.h>56uint8_t f[]={0x64, 0x2e, 0x90, 0x34, 0x41, ...
读书笔记
18c641843e597c01c3cc995e4a8f3faa45d74213973003601b95f4787652c73ceb8963fb887d8de50c680e28d60b0bf3830563f1a471314ed24cbe5b5525c08f719368ac22ccdbb12223fb6a5e55e7d9993c0dee4076c699accf22f6d6282d46e2b77890b49757ab1792c05940c56efa6ac8ccc2f9d3a7e397fd9cd16afe1cc0f6eedd69b7d138617d4400b21b18e7aa5b8caf661b723a2b6d98d45cb9156dc91a2aa574959bb7a7cd5072595a81bf358af3d6c18e7f2a1d7efadec24ed877829bd25365079eb137fc9e9d4e54ac5ba9b080d629bae431df408b43bbda7c0d4e9701c07e97d9f3336df63a449f04d6eabd89e4951ba85fdd3 ...
内嵌汇编练习
@[TOC]
定义通俗点来讲,内嵌补丁就是把我们写好的补丁代码镶嵌在原有的代码里。举个例子,假设这里有一个代码,随机的控制骰子的点数,现在要求我们不管什么时候,最后运行完骰子后点数都为6,我们该怎么办呢,由于不清楚代码里到底写了什么,是否有加密,所以我们不能随意的修改代码,而这里,我们采用内嵌补丁技术,只要在代码的末尾跳到我们的我们的补丁上,再写一句代码,让骰子的点数为6,再跳回去即可。
练习(Patchme)文件例子:https://pan.baidu.com/s/1j_LJ72KWmUtnGpp70r0weA5ze1(百度网盘)
要求要求更改显示的字符串
提示1修改字符串,最简单的就是用od查找字符串,直接修改(不过和我们用的内嵌补丁无关)这里如果修改字符串后,触碰到一些算法,那么就可能让代码流程发生变化,这也体现出内嵌补丁的优点2如果代码有加密操作,类似upx这种,那么我们可能无法搜索到相关的字符串
分析1按照上述方法我们可以先试着搜索字符串,果然没有
分析2搞懂代码流程(遇见函数f7进去分析)
1进入401001加密代码2第一个解密循环4010a3:对b区域异或44 (加密的字 ...
游玩日记
18c641843e597c01c3cc995e4a8f3faaa102222f17c15fe2fa2485624b0417bd366789bd11c54a4e2ddf75c9db0834047e0f10d2705ea751d1eac0c66d6d6263a2e062322edd196b14607d0c51b7a6d0721907b7e18ab965f43cedd98cc858e032d2b4e32a5933a95e048598a5ea865b962f00a59a9eea174f6ceb3e2910f1de3d1418ae9e0a1d2628b1512f26c41650a37e23d47694fc6ea17b7744d268a7fc92751052f5c7bcbe67d15a1a9d8e836db34b335847e350568715fc029b110615ae90f8310d3384f3194c59813861e2b6c3dcb60f074abcc19ea79345cc70ee7c8bbc6462f12cbb7efb5efe279aed2057bc7e807313ce51e51 ...
一次unicorn的学习
@TOC
起因自己在打MTCTF 2021 100mazes的比赛时,第一次接触到这种大量代码结构相似,却无法使用idapython自动化完成题目,无奈只能手动导出地图,一个一个的解密迷宫,这消耗了大量的时间,最终我在第十关放弃了作答并期待学习像这种结构大量相似的题该如何去做,最后在观看wjh的博客时,发现了他又用unicorn解决了此题目,我参照式的记录了此篇文章,鼓励自己学习更多的关于unicorn的知识。
什么是unicornUnicorn是一个轻量级, 多平台, 多架构的CPU模拟器框架,我们可以更好地关注CPU操作, 而忽略机器设备的差异.缺点:无法模拟整个程序或系统, 也不支持系统调用. 你需要手动映射内存并写入数据进去, 随后你才能从指定地址开始模拟.用处:使用unicorn可以在比赛中解决大量相似功能模块的题目,完成自动化操作
使用方法导入模块123from unicorn import *from unicorn.x86_const import *uc = Uc(UC_ARCH_X86, UC_MODE_64)
寄存器读写1234567891011121314151 ...
2021cybrics re wp
@TOC
Listing打开是sse指令集
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758BITS 64global checksection .textcheck: mov rbp, rsp sub rsp, 0x100 VMOVDQA ymm0, [rdi] and rsp, 0xffffffffffffff00 mov rax, 0xfeca50051345b0b0 push rax push rax push rax push rax VMOVDQA ymm1, [rsp] VPXOR ymm2, ymm1, ymm0 mov rax, 0x0100030205040706 push rax mov rax, 0x09080b0a0c0d0f0e push rax mov rax, 0x1110131215141716 ...
2021GKCTF re wp
@TOC
QQQQT点击运行
发现是一个窗口 如果输入正确的flag会显示正确猜测文件里包含这flag用CE打开 查看内存
发现flag的上面是字符串 和base58的码表 用工具在线解密即可
CrashIda7.5打开后发现是go语言 用脚本还原符号表不成功 用ida7.6打开发现函数名可以查看 定位到加密函数
Main_check检测成功即可拿到flag 进入细看
大概意思就是把flag分成四部分 分别进行加密处理 最后与四个字符串比较第一个加密:3des
这里可以找见他的key 和密钥 用在线工具还原
拿到第一部分的flag第二部分:sha256 分析可知长度为四位 可以爆破
12345678910import hashlibhash="6e2b55c78937d63490b4b26ab3ac3cb54df4c5ca7d60012c13d2d1234a732b74"for i in range(90000000): pwd1=hex(i) pwd1=pwd1[2:] h1=hashlib.sha256(pwd1.encode( ...
2021陕西省省赛 re wp
@TOC
Give me num打开题目后只有一个nc地址尝试连接给了一个图片出来 提示信息是lcg百度一下利用多次nc得出来的数可以破解 a c m的值
贴出官方的python脚本
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677from pwn import *import requestsimport gmpy2from bs4 import BeautifulSoup# LCG solverdef lcg(m, a, c, x=0): return (a * x + c) % mdef rlcg(m, a, c, x=0): ainv = gmpy2.invert(a, m) return ainv * (x - c) % mdef solve_a(lcg0, lcg1, lcg2, m): a = (lcg2 - ...
2021 ciscn re wp
@TOC
逆向题质量太高了,本菜鸡在比赛只做出来两个题。 其他的题会在赛后继续复现出来。持续更新中….
glassjeb打开主函数发现调用了native层
ida打开
输入长度39位第一个函数跟进发现调用了rc4第二个函数用v7对flag加密(数组移位+异或)第三个直接对flag加密(三位一组进行加密处理+异或)
大体思路:根据已有的字符串,首先逆掉第三个函数 得到用rc4数组加密后的然后求出rc4的数组 最后在第二个函数里进行异或拿到flag
(变量名用的有点乱)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include<stdio.h>#include<string.h>int a[100]={163, 26, 227, 105, 47, 187, 26, 132, 101, 194, 173, 173, 158, 150, 5, 2, 31, 142 ...