IDApro自带动调初探
由于不会汇编,每次对着Ollydbg或者恶心的Linux自带的GDB调试的时候都一脸懵逼,由于第一次尝试remote Linux debugger时一直连不上直接给我劝退了,后来经过几天的坐牢和学长帮助发现是vmware的虚拟网卡被防火墙给屏蔽了,关闭防火墙重新安装vmware终于可以实现虚拟机与主机的互ping之后,萌新开始了第一次动调。
先拿一道攻防世界题举例:no-string-attached反编译之后发现关键代码:12345678910111213141516void authenticate(){ wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch] BYREF wchar_t *s2; // [esp+801Ch] [ebp-Ch] s2 = (wchar_t *)decrypt((wchar_t *)&s, (wchar_t *)&dword_8048A90); if ( fgetws(ws, 0x2000, stdin) ) { ws[wcslen(ws) - 1] = 0; ...
HECTF-reverse部分writeup
因为期中考试(寄)所以很多题目没来得及复现,汇编也没学,感觉自己又变菜了qwq
hard直接扔进Ida64查字符串/查汇编/查代码都可以得到flag:HECTF{HElLo_RRRRe}
baby_upx尝试用指令脱壳失败,本来打算手动脱壳,但是后来偶然发现了upx-3.9.6封装好的一个脱壳软件,居然给脱出来了。反编译得到源代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // eax char String[26]; // [esp+1Eh] [ebp-46h] BYREF int v6; // [esp+38h] [ebp-2Ch] _DWORD v7[5]; // [esp+3Ch] [ebp-28h] BYREF char *v8; // ...
base64学习笔记
定义Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
作用我们先来看一张ASCII码表:![点击查看源网页](https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.mianfeiwendang.com%2Fpic%2Fec967465f3023381836682dd618aaa8320f1f9f9%2F1-1105-jpg_6_0_______-634-0-0-634.jpg&refer=http%3A%2F%2Fwww.mianfeiwendang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1640758791&t=75c98c6c1acbe23d991c90070a404249)
由于有些系统只能使用ASCII字符,那么对于控制字符,或者exe,jpg,pdf这样的文件如果用记事本打开,会出现一 ...
DES加密算法
DES简介DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。
DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的基本上是同一个算法。其密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
算法大致流程大概流程如下
具体一些的如下
原理和实现由第二节的流程图,我们大概知道了,DES加密算法大概流程为
IP置换 => 16轮迭代 =>IP逆置换 三个步骤
其中涉及到F轮函数的设计以及密钥生成方法,下面将分别介绍。
IP置换将64位二进制明文按照下表进行置换,经过置换后,明文的第i位变成了原来的IP_1[i]位。
置换之后再把64位明文分为L0和R0两部分,各32位。
代码实现:
123456789101112131415161718192021bool data[65],L_0[65],R_0[65]; // 明文以及打乱之后分开的L0和R0int IP_1[65] = // IP初始置换表 ...