首页
社区
课程
招聘
[求助]ida代码修改请教
发表于: 2011-10-19 22:36 26063

[求助]ida代码修改请教

2011-10-19 22:36
26063
ida代码修改请教

用od调试了一个32位的软件
之后再用ida同启相同的64位软件,要修改暴破点

以前我都是用ida查找到暴破点
再用ultraedit这软件以二进制方式修改代码
例如74改为75

己知暴破点代码为
mov     [r9-10h], r15b
二进制为45 88 79 F0

想要修改成
mov     [r9-10h], 1
二进制该如何修改??

因为我只会用ultraedit来修改64位的dll

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 102
活跃值: (85)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
IDA   cfg 目录下-> idagui.cfg ,把DISPLAY_PATCH_SUBMENU    = NO  修改这个 NO 为 YES
这样在编辑菜单下会多出一个 PATCH Program 的选项,然后就可以用里头的assemble来修改了
2011-10-19 23:45
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
IDB 是数据库,与 可执行文件无关,楼上修改的只是 “数据库”
2011-10-20 07:38
0
雪    币: 260
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上正解,IDA分析修改完全与原程序无关,只与它生成的数据库有关。
2011-10-20 09:34
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可以用2楼的方法,但最后还要将结果保存为dif文件,这个文件里面存放着 位置+修改数据,自己再实现一个小工具去批量修改,并不难。
2011-10-20 16:32
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
6
用OD修改吧,找到代码位置
2011-10-20 16:37
0
雪    币: 135
活跃值: (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好像新的6.2中可以支持patch到原始文件(由于ida中保存了相关数据在原文件中的偏移,因而要做patch应该不难)

或者输出diff文件,手动修改
2011-10-20 20:22
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
6楼的朋友
这dll档是64位的
而且这是个外挂软件
单load这个dll
od是load不来的
所以才改用ida啊
2011-10-23 21:30
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
ida的dif生成后如何修改
因为我不会用ida
只会用来查找64位和32位的相对位址
2011-10-23 21:31
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
找到对应位置,UE 等都可以的吧
2011-10-24 09:23
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
ue我有找到相对应位址
只是我不知道
mov     [r9-10h], 1
二进制该如何修改??
2011-10-24 10:06
0
雪    币: 2242
活跃值: (488)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
12
如果byte ptr [r9-10h]为0的话,可以使用
41 FE 41 F0       inc     byte ptr [r9-10h]
刚好4byte

如果没有上下文可利用的
41 C6 41 F0 01    mov     byte ptr [r9-10h], 1
不过5byte,需要patch下
2011-10-24 11:33
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
可以在 IDA 里,修改后查找对应机器码,记下,然后回到 UE 里写入啊
2011-10-24 11:56
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
[QUOTE=疯子;1012723]如果byte ptr [r9-10h]为0的话,可以使用
41 FE 41 F0       inc     byte ptr [r9-10h]
刚好4byte

如果没有上下文可利用的
41 C6 41 F0 01    mov     byte ptr [r9-10h], 1
不过5byte,需...[/QUOTE]

能否请教
inc     byte ptr [r9-10h]
解释其意思
2011-10-24 12:59
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
原始码为
mov     [r9-10h], r15b
二进制为
45 88 79 F0 48 8D 3D 10 F8 00 00 48 8B F0 B9 07
修改为
mov     [r9-10h], 1
二进制一样为
45 88 79 F0 48 8D 3D 10 F8 00 00 48 8B F0 B9 07
是我的方法不对吗
2011-10-24 13:00
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
请问有什么调试器能和OD一样
直接看到代码是
mov     cl,al
而不是
mov     [r9-10h], r15b
最好还能如od一样可以直接修改存档
因为od单开不了这类型软件的dll档
2011-10-24 13:50
0
雪    币: 463
活跃值: (111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=疯子;1012723]如果byte ptr [r9-10h]为0的话,可以使用
41 FE 41 F0       刚好4byte

如果没有上下文可利用的
41 C6 41 F0 01    mov     byte ptr [r9-10h], 1
不过5byte,需...[/QUOTE]

这个流程只到这里一次吗?  如果只执行到这里一次.当我没说..

如果是,
inc     byte ptr [r9-10h]  //每次加1.

mov     byte ptr [r9-10h], 1 //固定为1.
2011-10-26 05:58
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
[QUOTE=Pan88168;1013369]这个流程只到这里一次吗?  如果只执行到这里一次.当我没说..

如果是,
inc     byte ptr [r9-10h]  //每次加1.

mov     byte ptr [r9-10h], 1 //固定为1.[/QUOTE]

这里固定为1
为1表示有license
为0表示无licnese
2011-10-26 07:49
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
无意间翻到c32asm
这软件符合我的需要
可单开这怪怪的64位dll
又可直接编修
2011-10-26 07:50
0
游客
登录 | 注册 方可回帖
返回
//