• 5.elf

    5.elf教会了我需要注意数据的类型与数据的长度,不然也容易犯错误 关键在于看懂那几个强制类型转化,和运算符的顺序 其main函数为 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869i...
  • 4.elf

    装好了ubuntu 它的glibc版本够用 通过动态调试找到了其存储数据的正确顺序 先依次输入数组中存起来备用 123456789101112if ( v3 == v9 ) { for ( i = 0; i <= 16; ++i ) { if ( (unsigned __int8)s[i] > 0x60u && (un...
  • 学习报告(一到二周)

    学习报告(一到二周)语言学习汇编语言已基本了解其使用语法,及其功能(函数调用,返回父函数) mov,jmp,push,pop(基本语句) call(调用子函数),ret(返回父函数),leave(将栈中的指向子函数地址去除,恢复父函数指令) stack用法存储函数在内存中的位置,存储变量,存储命令等 C语言基本理解指针用法(用于指向变量地址),可用于子函数中调用外部变量,也可用于间接修改和间...
  • 学习报告(三到四周)

    学习报告(三到四周)base16可通过位运算(高效率)进行加密 基本已经知道其加密模式 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#i...
  • 汇编语言调试

    寄存器在动态调试中需知道各寄存器意义及作用 寄存器分为两类,通用寄存器和特殊寄存器。 通用寄存器 EAX(寄存器寄存器-累加器):最常用于算术,逻辑和数据传输指令、乘法和除法运算使用此寄存器。对于Windows API函数,函数的返回值通常将存储在EAX寄存器中。 EBX(基址寄存器):EBX寄存器可以直接访问存储器数据,它也是一个通用寄存器。 ECX(计数寄存器):ECX是一个共享寄存器,...
  • Re

    汇编语言cpu中储存需要用到的数值地址之类的名叫寄存器(AX,BX,CX诸如此类)。 cpu执行命令是按次序进行的通过cs,ip共同决定cs(段地址),ip(偏移地址) cs*16+ip便为此次命令的地址,若此次命令并不改变cs或ip,则ip+3或2(由下条命令长度决定) 然后执行下次命令。如下图(由左至右CS:IP,指令在十六进制下的表现,指令含义) 工具Dosbox常用命令 r命令-展...
  • 学习报告(最后一次任务)

    RE1.PYC先启动该文件看下运行结果 不知道是因为什么无法再次运行,通过搜索找到是因为没有原py文件所以无法再次运行,那就通过ida(32位)看看其源代码 pyc文件主要是无法通过f5反汇编查找代码逻辑 尝试通过shift+f12查询字符串,结果如下 一般有效的字符串,线索之类的会出现在此,如果不有效也一般会放在内存附近(一般) 通过双击寻找,往上翻后最终找到了对应的密文(非flag...
  • 3.elf

    尝试对3.elf进行动态调试 寄,我的glibc库版本低了 但根据2.elf的经验,其存储顺序应该是按上到下的顺序存储的,从低位到高位存储的 同时这个每两位就代表了一个字符刚好就有42个字符符合校验的字符个数 所以z3破解代码为 12345678910111213141516171819202122232425262728293031323334353637383940414243444...
  • 2.elf z3暴力破解

    通过进行动态调试发现确实 ![image-20230104221103045](E:\note\re\pythonz3\2.elf z3暴力破解.assets\image-20230104221103045.png) 此处是进行校验的字符串 但是开始我所理解的顺序不是从左到右而是从低位到高位如图 ![image-20230104221209637](E:\note\re\pythonz3\2...
  • 1.elf z3暴力破解·改

    源代码如下 123456789101112131415161718192021222324252627282930313233343536373839404142unsigned __int64 level1(void){ char v1; // [rsp+Fh] [rbp-81h] int v2; // [rsp+10h] [rbp-80h] int i; // [rsp+...
119202122