文章目录
制作日志
assembly : 汇编
1.阳光
**偏移 **
5578
868
总基础地址
popcapgame1.exe+331C50=
00731C50
2. 卡槽CD
偏移
0
4
10
20
总基础地址
"popcapgame1.exe"+0014C6FC=
0054C6FC
——有两种实现方式——
方法一,找到了四层偏移(非基础地址)
.局部变量 one, 整数型
.局部变量 ka, 整数型
.局部变量 kacao, 整数型
.局部变量 ff, 整数型
.局部变量 ff1, 整数型
.局部变量 ff2, 整数型
.局部变量 ff3, 整数型
.计次循环首 (10, ka)
ff = 读内存整数型 (进程ID, 十六到十 (“0054C6FC”))
ff1 = 读内存整数型 (进程ID, ff + 十六到十 (“20”))
ff2 = 读内存整数型 (进程ID, ff1 + 十六到十 (“10”))
ff3 = 读内存整数型 (进程ID, ff2 + 十六到十 (“4”))
kacao = 读内存整数型 (进程ID, ff3 + 十六到十 (“0”))
one = 读内存整数型 (进程ID, kacao + (ka - 1) × 80)
写内存整数型 (进程ID, ff3 + 十六到十 (“0”) + (ka - 1) × 80, 5000)
.计次循环尾 ()
切记,切记——————最后得到偏移无法直接使用,是数值不是地址
切记,切记——————流程为:基址——(偏移1)地址——(偏移2)数值
易语言应用时应该使用:
(偏移1)地址+偏移2
方法二、改写汇编
inc [edi+24](冷却自加1)
地址:004958BC
使用CE脚本
直接赋值5000:newmem:mov [edi+24],#5000
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
mov [edi+24],#5000
originalcode:
inc [edi+24]
mov eax,[edi+24]
exit:
jmp returnhere
"popcapgame1.exe"+958BC:
jmp newmem
nop
returnhere:
[DISABLE]
找空内存
本人找的————00759C44
使用CE脚本得出修改前后的字节集
易语言
.如果 (选择框4.选中 = 真)
写内存字节集 (进程ID, 十六到十 (“004958BC”), 还原字节集2 (“E9 83 43 2C 00 90”))
写内存字节集 (进程ID, 十六到十 (“00759C44”), 还原字节集2 (“C7 47 24 88 13 00 00 FF 47 24 8B 47 24 E9 6C BC D3 FF”))
.否则
写内存字节集 (进程ID, 十六到十 (“004958BC”), 还原字节集2 (“FF 47 24 8B 47 24”))
写内存字节集 (进程ID, 十六到十 (“00759C44”), 还原字节集2 (“00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00”))
.如果结束
方法三、0 1大法
BOOL 逻辑形 (字节型) 0——1
植物冷却完成=0或1,没有冷却=0或1——(卡槽亮暗)
冷却逻辑地址 00497513
mov byte ptr [ebp+48],00
0为暗,改1
.如果 (选择框4.选中 = 真)
写内存字节集 (进程ID, 十六到十 (“00497513”), 还原字节集2 (“C6 45 48 01”))
.否则
写内存字节集 (进程ID, 十六到十 (“00497513”), 还原字节集2 (“C6 45 48 00”))
3.自动收集
BOOL (4字节)——
阳光掉落 未点击=0 点击后回收=1
方法一:瞬间收集
判断阳光是否点击 ⟶ \longrightarrow ⟶
判断阳光是否点击的地址 = 004352EE
其代码:
popcapgame1.exe+352EE - 80 7B 50 00 - cmp byte ptr [ebx+50],00 { 判断是否点击 }
popcapgame1.exe+352F2 - 75 09 - jne popcapgame1.exe+352FD { 点击跳转 }
popcapgame1.exe+352F4 - 8B FB - mov edi,ebx
popcapgame1.exe+352F6 - E8 55F5FFFF - call popcapgame1.exe+34850
popcapgame1.exe+352FB - EB 07 - jmp popcapgame1.exe+35304
popcapgame1.exe+352FD - 8B CB - mov ecx,ebx
popcapgame1.exe+352FF - E8 CCF8FFFF - call popcapgame1.exe+34BD0
popcapgame1.exe+35304 - 83 7B 60 00 - cmp dword ptr [ebx+60],00
so 易语言使用
.如果 (选择框5.选中 = 真)
写内存字节集 (进程ID, 十六到十 (“004352F2”), 还原字节集2 (“EB 09”))
.否则
写内存字节集 (进程ID, 十六到十 (“004352F2”), 还原字节集2 (“75 09”))
.如果结束
汇编知识补充 :
助记符 | 英文翻译 | 说明 |
---|---|---|
JE | Jump if left Equals right | 相等跳转 (左操作数=右操作数) |
JNE | Jump if left Not Equals right | 不相等跳转 (左操作数≠右操作数) |
JCXZ | Jump if CX equals Zero | CX=0 跳转 |
JECXZ | Jump if ECX equals Zero | ECX=0 跳转 |
JRCXZ | Jump if RCX equals Zero | RCX=0 跳转(64 位模式) |
方法二:缓慢收集
判断地址 = 0043485B
popcapgame1.exe+3485B - 75 3E - 'jne popcapgame1.exe+3489B'
so 易语言使用
.如果 (选择框6.选中 = 真)
写内存字节集 (进程ID, 十六到十 (“0043485B”), 还原字节集2 (“90 90”))
.否则
写内存字节集 (进程ID, 十六到十 (“0043485B”), 还原字节集2 (“75 3E”))
.如果结束
日志结束–感谢观看!!!!!-----(o゚v゚)ノ
萌新学习心得总结—仅学习使用