摘要: g++内联(x64) int add1(int x,int y) { return x+y; } int main() { int x =0,y=0; scanf("%d %d",&x,&y); asm( ".globl _start\n\t" "_start:" "call _sec\n\t"); 阅读全文
posted @ 2023-03-19 20:43 润梧 阅读(50) 评论(0) 推荐(0) 编辑
摘要: C\C++语言具有asm关键字 在我vscode中我使用的g++编译器进行编译的(g++跟gcc一样使用的是AT&T语法) 跟visualstudio中的MSCV编译器不同(MSCV使用的是intel语法) 其需要用asm关键字 asm( "语句1\n\t" "语句2\n\t" )//"\n\t"用 阅读全文
posted @ 2023-01-18 20:55 润梧 阅读(224) 评论(0) 推荐(1) 编辑
摘要: 5.elf教会了我需要注意数据的类型与数据的长度,不然也容易犯错误 关键在于看懂那几个强制类型转化,和运算符的顺序 其main函数为 int __cdecl main(int argc, const char **argv, const char **envp) { char s[64]; // [ 阅读全文
posted @ 2023-01-07 15:30 润梧 阅读(51) 评论(1) 推荐(1) 编辑
摘要: 装好了ubuntu 它的glibc版本够用 通过动态调试找到了其存储数据的正确顺序 先依次输入数组中存起来备用 if ( v3 == v9 ) { for ( i = 0; i <= 16; ++i ) { if ( (unsigned __int8)s[i] > 0x60u && (unsigne 阅读全文
posted @ 2023-01-06 23:14 润梧 阅读(99) 评论(1) 推荐(1) 编辑
摘要: 头一次遇到glibc库版本有问题导致无法调试的 正在尝试其他的linux系统 阅读全文
posted @ 2023-01-06 18:07 润梧 阅读(21) 评论(0) 推荐(1) 编辑
摘要: 尝试对3.elf进行动态调试 寄,我的glibc库版本低了 但根据2.elf的经验,其存储顺序应该是按上到下的顺序存储的,从低位到高位存储的 同时这个每两位就代表了一个字符刚好就有42个字符符合校验的字符个数 所以z3破解代码为 from z3 import * DataCmp=[ 0x66,0x4 阅读全文
posted @ 2023-01-04 22:56 润梧 阅读(36) 评论(0) 推荐(1) 编辑
摘要: 通过进行动态调试发现确实 此处是进行校验的字符串 但是开始我所理解的顺序不是从左到右而是从低位到高位如图 0x04,0x46,0x81,0x63......正是v4从低位到高位的顺序排列的,我又犯了些低级错误。。。。。 所以此处通过z3 from z3 import * a=[0x4,0x46,0x 阅读全文
posted @ 2023-01-04 22:15 润梧 阅读(36) 评论(2) 推荐(1) 编辑
摘要: 可通过如下代码 "前面需要输入条件" f=Solver() print(f.model) 可以查找自己所输入的条件 通过对z3的检验发现自己出现了个python的低级常识性错误 for循环时range输出的可遍历对象实际是小于该对象的 如range(10)其应该是<10 所以经过对遍历对象的修改 真 阅读全文
posted @ 2023-01-04 22:06 润梧 阅读(36) 评论(0) 推荐(1) 编辑
摘要: 根据下列的校验过程,应该需要长度为42的字符串, for ( i = 0; i <= 41; ++i ) { if ( *((_BYTE *)v6 + i) != v4[i] ) { printf("wrong2 wrong2"); return 0; } } printf("woc,you got 阅读全文
posted @ 2022-12-30 17:43 润梧 阅读(37) 评论(0) 推荐(1) 编辑
摘要: 尝试通过z3暴力破解1.elf 具体代码如下 from z3 import * f = Solver() DataCmp=[ 161, 186, 110, 70, 128, 244, 217, 170, 180, 54, 90, 204, 140, 30, 149, 33, 143, 67, 225 阅读全文
posted @ 2022-12-29 16:50 润梧 阅读(107) 评论(0) 推荐(1) 编辑