首页
社区
课程
招聘
[求助]如何修改内存使得每次运行都是需要的固定的值!
发表于: 2006-4-8 11:19 5018

[求助]如何修改内存使得每次运行都是需要的固定的值!

2006-4-8 11:19
5018
最近在分析一个常用软件   部份代码如下  问题在40215E 那行!
00402102   .  8965 F8       mov     [ebp-8], esp
00402105   .  C745 FC 90164>mov     dword ptr [ebp-4], 00401690
0040210C   .  8B75 08       mov     esi, [ebp+8]
0040210F   .  8B06          mov     eax, [esi]
00402111   .  33DB          xor     ebx, ebx
00402113   .  8D4D D8       lea     ecx, [ebp-28]
00402116   .  51            push    ecx
00402117   .  56            push    esi
00402118   .  895D E4       mov     [ebp-1C], ebx
0040211B   .  895D E0       mov     [ebp-20], ebx
0040211E   .  895D DC       mov     [ebp-24], ebx
00402121   .  895D D8       mov     [ebp-28], ebx
00402124   .  895D D4       mov     [ebp-2C], ebx
00402127   .  895D D0       mov     [ebp-30], ebx
0040212A   .  895D CC       mov     [ebp-34], ebx
0040212D   .  895D BC       mov     [ebp-44], ebx
00402130   .  895D AC       mov     [ebp-54], ebx
00402133   .  895D 9C       mov     [ebp-64], ebx
00402136   .  895D 8C       mov     [ebp-74], ebx
00402139   .  899D 7CFFFFFF mov     [ebp-84], ebx
0040213F   .  899D 6CFFFFFF mov     [ebp-94], ebx
00402145   .  899D 5CFFFFFF mov     [ebp-A4], ebx
0040214B   .  899D 4CFFFFFF mov     [ebp-B4], ebx
00402151   .  66:899E 58010>mov     [esi+158], bx
00402158   .  FF90 E8090000 call    [eax+9E8]
0040215E   .  8B55 D8       mov     edx, [ebp-28] ;  此时EDX的值UNICODE"4*******" 如何把这4                                                       开头的8位数EDX改为我需要的"opopopop"
00402161   .  8B3D DC124000 mov     edi, [<&MSVBVM60.__vbaStrMove>]  ;  MSVBVM60.__vbaStrMove
00402167   .  8D4D E4       lea     ecx, [ebp-1C]
0040216A   .  895D D8       mov     [ebp-28], ebx
0040216D   .  FFD7          call    edi                              ;  <&MSVBVM60.__vbaStrMove>
0040216F   .  8B16          mov     edx, [esi]
00402171   .  8D45 D8       lea     eax, [ebp-28]
00402174   .  50            push    eax
00402175   .  8D4D E4       lea     ecx, [ebp-1C]
00402178   .  51            push    ecx
00402179   .  56            push    esi
0040217A   .  FF92 EC090000 call    [edx+9EC]
00402180   .  8B55 D8       mov     edx, [ebp-28]
00402183   .  8D4D E4       lea     ecx, [ebp-1C]
00402186   .  895D D8       mov     [ebp-28], ebx
------------------------------------------------------------------------
代码我是看不大懂  也懂一点点 也懒得细分析  水平有限 反正暂时也没打算把汇编学深入(头痛)!
看上面0040215E  EDX的值UNICODE"4*******" 如何把这4开头的8位数EDX改为我需要的
                                             "opopopop"
我在按照高手指点修改程序时用以下格式汇编代码:
mov  dword ptr[edx],0X6f706f70
mov  dword ptr[edx+4],0X6f706f70
但它破坏了原程序的其他执行部份!在后续程序运行时出现异常错误  然后程序就死了!
我在内存的一个地址(是不是写在不能写的地方了)直接写上  然后送入这个地址  程序
内存也会出现错误  然后死!
不知道  像这种情况应该怎么解决!搞得大伤脑筋呀!
其实有好多软件像这种情况  它给你一个申请号(随机的或与主板硬盘有关)  然后验证你的注册码
调试者大都在分析算法 我大都爆破  当找不到爆破点(我菜呀) 我反其道 直接在内存更改其程序送出的申请号  让申请号“变态”甚至为空(与众不同) 有些算法不完善  注册码可能也就“变态”或为空了(只是猜想没见过这样的) 我以此来考验他的程序和算法  然后再想办法!(正在调试的这个软件有这个毛病 还有一个用处就是有了一个申请号的注册码就可以  ...... 呵呵)唉 做软件保护  也挺难呀!)
--------------------------------------------------------------------------
这是我的一种思路   不知道像以上这种问题  应该怎样解决!
最好大家介绍的方法能结合上面的代码  我马上就能实践!  考虑到我的水平缘故请大家尽量细致!
再次向各位深藏不露  又乐于助人的老前辈  拜谢!(以后有了进步再来这里献上我的一些爆破经验!
唉  太烂了  怕 误人子弟!)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
在0040215E 处EDX的值是来自[ebp-28]内存处,
往上看就会知道[ebp-28]的值在00402121 处被
清空了,
由00402113  处的指令可知,ECX是这段内存的指针
,而且也被当作参数压栈,
所以00402158 处的CALL应进去看一下
或许会有发现^-^
2006-4-8 11:36
0
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
我知道这个值来自哪里
我也知道它怎么来的
我只是不知道怎样让这个值成为一个特定的一个固定数!
我只想知道
不论软件怎样计算  它的值怎么变  最后到了40215E 这行
EDX 它就是我需要的"opopopop"!如此而已
唉  是不是我的表达能力不强  引起大家误解!
可我是学中文的呀!
2006-4-8 11:46
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
理解错误,
  mov  dword ptr[edx],0X6f706f70
  mov  dword ptr[edx+4],0X6f706f70
这两条指令你是写在什么地方,
为什么会说:但它破坏了原程序的其他执行部份!
是不是没有保存被你覆盖掉的指令
2006-4-8 11:59
0
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
现在你应该教我呀!
到底这些应该写在什么地方!
才不影响原程序!
如果影响了  应该怎么补救  程序才不死!
2006-4-8 12:02
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
6
首先将0040215E 处写成跳转指令,跳到一个没有人烟的地方,
它有可能覆盖掉一些指令,在那个没有人烟的地方,写入
  mov  dword ptr[edx],0X6f706f70
  mov  dword ptr[edx+4],0X6f706f70
然后将覆盖掉的指令再补上,最后跳回00402167 处,
可以试一下,
2006-4-8 12:16
0
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
这个方法好呀!

0040215E  jmp ******

我倒着找  从下往上找空的!

没有人烟的地方  当然在最下面

写上我的东东  然后返回  再用jmp!

一定试试!

非常感谢一直不厌其烦的指点我这个菜菜!
2006-4-8 12:24
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
00402161 jmp code

空白地方,也就是在text段的最后0000处
code:
  mov  dword ptr[edx],0X6F007000
  mov  dword ptr[edx+4],0X6F007000
  mov  dword ptr[edx+8],0X6F007000
  mov  dword ptr[edx+c],0X6F007000
  mov  edi, [<&MSVBVM60.__vbaStrMove>]  
jmp 00402167
2006-4-8 12:26
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
9
没事,等我有时间回老家去的时候,
请我搓一餐就得了
2006-4-8 12:31
0
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
非常感谢我已经把那个软件干掉了!

你过来这里  我一定请你!  
2006-4-9 09:37
0
游客
登录 | 注册 方可回帖
返回
//