最近在分析一个常用软件 部份代码如下 问题在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
但它破坏了原程序的其他执行部份!在后续程序运行时出现异常错误 然后程序就死了!
我在内存的一个地址(是不是写在不能写的地方了)直接写上 然后送入这个地址 程序
内存也会出现错误 然后死!
不知道 像这种情况应该怎么解决!搞得大伤脑筋呀!
其实有好多软件像这种情况 它给你一个申请号(随机的或与主板硬盘有关) 然后验证你的注册码
调试者大都在分析算法 我大都爆破 当找不到爆破点(我菜呀) 我反其道 直接在内存更改其程序送出的申请号 让申请号“变态”甚至为空(与众不同) 有些算法不完善 注册码可能也就“变态”或为空了(只是猜想没见过这样的) 我以此来考验他的程序和算法 然后再想办法!(正在调试的这个软件有这个毛病 还有一个用处就是有了一个申请号的注册码就可以 ...... 呵呵)唉 做软件保护 也挺难呀!)
--------------------------------------------------------------------------
这是我的一种思路 不知道像以上这种问题 应该怎样解决!
最好大家介绍的方法能结合上面的代码 我马上就能实践! 考虑到我的水平缘故请大家尽量细致!
再次向各位深藏不露 又乐于助人的老前辈 拜谢!(以后有了进步再来这里献上我的一些爆破经验!
唉 太烂了 怕 误人子弟!)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)