ozzy 发表于 2015-2-13 10:59

DLL动态地址补丁的特殊情况,召唤大神!!!

Executable modules, 条目 4
基址=02650000
大小=0026C000 (2539520.)
入口=02668E9F SYS.<ModuleEntryPoint>
名称=SYS
文件版本=2.13.2013.4
路径=D:\测试\SYS.DLL


0267C262    0000            add byte ptr ds:,al
0267C264    0000            add byte ptr ds:,al
0267C266    0000            add byte ptr ds:,al
0267C268    52            push edx                           ; 这里开始补码
0267C269    6967 68 742CD7A>imul esp,dword ptr ds:,0>
0267C270    B2 E1         mov dl,0xE1
0267C272    B3 C9         mov bl,0xC9
0267C274    B9 A62C7C5B   mov ecx,0x5B7C2CA6
0267C279    CA B13A         retf 0x3AB1
.
.    ;中间太长,省略。
.
0267C2D0    B2 CE         mov dl,0xCE
0267C2D2    47            inc edi
0267C2D3    67:0000         add byte ptr ds:,al

0267C268 - 02650000 = 2C268   <----偏移
52696768742CD7A2B2E1B3C9B9A62C7C5BCAB13A3838313436313637357C5BBEB23A71696E676361697C5BB8E63ABBB6D3ADCAB9D3
C3C7E0B2CBB3E6BDC5B1BE7C5BB1BE3A3339347C5BD6B73A7C5BB7BD3A307C5BCFD63A3136313435393837357C5BBFAA3A3100B2CE
4767


02657F2D    8BE5            mov esp,ebp
02657F2F    5D            pop ebp
02657F30    C2 0C00         retn 0xC
02657F33    68 68C26702   push SYS.0267C268                ; 这里要 push 补码的动态地址
02657F38    58            pop eax
02657F39    C2 0800         retn 0x8
02657F3C    C745 FC 0000000>mov dword ptr ss:,0x0
02657F43    C745 F8 0000000>mov dword ptr ss:,0x0

02657F33 - 02650000 = 7F33   <----偏移
6868C2670258C20800





还是上图吧,简洁点。。。









DLL地址每次都会变,如果只是简单的修改jmp或NOP掉某语句的话,小生的这个补丁源码很容易就搞定了,可是现在这个测试例子需要补码,而且还要push 补码后的地址,我这个易语言渣渣想了下也只能在这里修改试看看了,修改2 = 还原为字节集 (“68” + 到文本 (地址1) + “58C20800”),结果还是不行,来位大神拯救下我这个E渣渣吧{:5_187:} @Crook @亚轩 @西西 @雨季 @520Kelly @童真丶   

Crook 发表于 2015-2-13 10:59

你那个到文本就错了
修改2 = { 104 } + 到字节集 (到整数 (地址1)) + { 88, 194, 8, 0 }
或者是修改2 = { 104 } + 到字节集 (到整数 (地址1+十六进制文本到整数 (“58C20800”)))
这样试试 师傅你就不能大方点的给点HB嘛好长的问题呢

阿菜 发表于 2015-2-13 11:48

飘零云的么,PYG补丁工具试试吧。

倾城 发表于 2015-2-13 11:49

这个问题我前天也没研究明白 问了鲨鱼师傅最后我也没弄明白 就是不知道那个动态地址怎么写到另一处要写入的数据当中 这个数值还得是反着写入的

ozzy 发表于 2015-2-13 12:17

Crook 发表于 2015-2-13 11:14
你那个到文本就错了
修改2 = { 104 } + 到字节集 (到整数 (地址1)) + { 88, 194, 8, 0 }
或者是修改 ...

第一次感受到解答那么快,那么神速,那么给力!{:5_191:}
别闹了我还要叫你师傅呢{:5_188:}



对了,这么写不行哦,直接报错。。。
修改2 = { 104 } + 到字节集 (到整数 (地址1+十六进制文本到整数 (“58C20800”)))



ozzy 发表于 2015-2-13 12:19

阿菜 发表于 2015-2-13 11:48
飘零云的么,PYG补丁工具试试吧。

试过了PYG的补丁,劫持dll补丁也不行的,这特殊情况工具不一定好用{:5_116:}

冷月浮华丶 发表于 2015-2-13 19:23

不懂怎么打DLL的补丁,有个视频就好了、。。。

520Kelly 发表于 2015-2-13 23:26

写法问题吧、我就会易语言的写内存字节集、、
页: [1]
查看完整版本: DLL动态地址补丁的特殊情况,召唤大神!!!