安卓逆向前置之JAVA学习
花了两个下午粗略看了以下java的基础语法,写了一份备份向的博客,大概能够java的基本语法,变量,对象,方法,各种类的用途,然而能不能看懂安卓开发就另说了(:<)
注:他妈的,初稿丢了,这是补稿,网上的教程讲的实在太详细了,查重率100%。
另注:本次java学习使用的编译器是Eclipse。
再注:感谢 菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)
Hello World12345public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}
基础语法基本语法编写 Java 程序时,应注意以下几点:
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaC ...
TSCTF-J 2021 逆向WP
记得TSCTF-J刚开始的时候我连IDA都没下,easyxor对着代码瞅了半天,幸好ctrl+F5可以直接显示出数组的内容,让我似懂非懂的把签到题过了,赛后重新来看这些题,或许会有一些新的理解吧。
easy-xor新生赛光速入门RE,刚刚下载IDApro之后打开的第一道题。F5查看代码:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950int __cdecl main(int argc, const char **argv, const char **envp){ _BYTE *v3; // esi int i; // edx int v5; // eax char *v7; // eax char v8; // [esp-4h] [ebp-Ch] char v9; // [esp+0h] [ebp-8h] char v10; // [esp+0h] [ebp-8h] sub_401020("Welcome to TSC ...
RC4加密算法学习笔记
原理原理很简单,包括初始化算法(KSA)和伪随机子密码生成算法(PRGA)两大部分。
关键在于密钥流生成器的理解,个人认为该加密手段是通过生成密钥对256取模后得到下标的不确定性从而达到混乱和扩散的目的。
密钥生成先放上一张原理图:
在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,将S-box和明文进行xor运算,得到密文,解密过程也完全相同。
123456789101112131415/*初始化函数*/void rc4_init(unsigned char*s,unsigned char*key, unsigned long Len){ int i=0,j=0; unsigned char T[256]={0}; unsigned char tmp=0; for(i=0;i<256;i++) { s[i]=i;//s_box初始化为[0,255 ...
NCTF2021逆向WP(部分)
签到题一键F5直接获得flag:NCTF{We1come_2_Reverse_Engineering}
ShadowbringerC++逆向,反编译后乍一看头皮发麻:123456789101112131415161718192021222324252627282930313233343536int __cdecl main(int argc, const char **argv, const char **envp){ char v4[16]; // [rsp+20h] [rbp-60h] BYREF char v5[15]; // [rsp+30h] [rbp-50h] BYREF char v6; // [rsp+3Fh] [rbp-41h] BYREF char v7[16]; // [rsp+40h] [rbp-40h] BYREF char v8[16]; // [rsp+50h] [rbp-30h] BYREF char v9[16]; // [rsp+60h] [rbp-20h] BYREF char v10[32]; // [ ...
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初始置换表 ...