冥界3大法王 发表于 2021-2-8 23:37

0F 84 87 1B 01 00看着机器码,直接转换成JMP 到xx地址的机器码

本帖最后由 冥界3大法王 于 2021-2-8 23:38 编辑

0F 84 87 1B 01 00看着机器码,直接转换成JMP 到xx地址的机器码?
怎么才能手动的计算出来? 编了一个自动化汇编爆破的程序
0F 84 ?? ?? ?? ==> JMP xx
0F 85 ?? ?? ?? ==> JMP xx不会了。{:301_972:}
近跳,远跳,这个查表就行了。偏移量就不会算了。

冥界3大法王 发表于 2021-2-9 20:54

无闻无问 发表于 2021-2-9 13:08
要跳的地址 - 当前指令的下一行地址,然后反向取,即为机器码…

@无闻无问
求教x32dbg/x64dbg里的计算器取反,怎么输入?
Delphi的实现代码又长成啥样?

00427B7C | E8 3C6B0000          | call keygen.42E6BD                      | 假如当前,这是当前行!
00427B81 | E9 78FEFFFF          | jmp keygen.4279FE                     | 这里算下一行?
00427B86 | 8BFF               | mov edi,edi                           |
00427B88 | 55                   | push ebp                              |
00427B89 | 8BEC               | mov ebp,esp                           |
00427B8B | 51                   | push ecx                              | ecx:EntryPoint
00427B8C | 53                   | push ebx                              |
00427B8D | 8B45 0C            | mov eax,dword ptr ss:            | 这里要跳的地址

00427B8D -00427B81 然后结果 再取反? 这理解的对吧?

冥界3大法王 发表于 2021-2-9 23:47

无闻无问 发表于 2021-2-9 21:58
过年了还在研究,令人敬佩…厉害,你把x64弄精了,我也学到了很多…


@无闻无问   用了三四天时间编了个自动化的工具
我现在已经很少用OD了,还是x36dbg用起来香各种组合技,各种自定义按键,
自创心法《36路爆破经典定式》+Ollydbg/x36dbg贴心伴侣
还有最近半年多新领悟的技能。
瞬间就定位到关键代码处。
全在总结和运用了。
没解决的问题就画思维导图和2分法化难为易的拆解掉。

lcwxxf 发表于 2021-2-9 06:03

目标地址-当前指令地址-5

沧恋 发表于 2021-2-9 06:09

用的是E9 目标地址-当前地址-5我想公式应该是一样的
64的地址好像是 目标地址-当前地址-7

westcafe 发表于 2021-2-9 09:11

本帖最后由 westcafe 于 2021-2-9 09:19 编辑

e9 88 1B 01 00 90

冥界3大法王 发表于 2021-2-9 09:14

本帖最后由 冥界3大法王 于 2021-2-9 09:23 编辑

westcafe 发表于 2021-2-9 09:11
eb 85 87 1B 01 90
005EFE47E9 881B0100jmp gsp5.6019D4
@westcafe
然而与实际不符,看正确答案。
楼上两位的,至少能对上。

westcafe 发表于 2021-2-9 09:15

本帖最后由 westcafe 于 2021-2-9 09:19 编辑

长跳转就是地址+1最后补90    0f 84   或者   0f 85是操作码   后面的是地址 ,比如 原来是0f 8412 01 00 00   就改为e9 13 01 00 00 90 , 同理如果是0f 8522 05 00 00   就改为e9 23 05 00 00 90 很好记得!

无闻无问 发表于 2021-2-9 13:08

要跳的地址 - 当前指令的下一行地址,然后反向取,即为机器码…

冥界3大法王 发表于 2021-2-9 21:01

@无闻无问
明白了,谢谢。{:301_1006:}

冥界3大法王 发表于 2021-2-9 21:13

@无闻无问

计算公式为:
要跳的地址 - 当前指令的下一行地址,然后反向取,即为机器码
当前行为:005EFE47 0F84871B0100je gsp5.6019D4
下一行为:005EFE4D 83EC08      sub esp,8
要跳的地址为6019D4
006019D4-005EFE4D= 得这个00011B87(这个如何取反成87 1B 01 00) 用x32dbg/x64dbg命令行实现?有取反的现成命令吗?{:301_982:}
页: [1] 2
查看完整版本: 0F 84 87 1B 01 00看着机器码,直接转换成JMP 到xx地址的机器码