nicaia 发表于 2019-4-12 15:58

.Net零基础破解教程 —— 第七课(千变万化)

随着最近的几节课学习,那么我想大家已经有了一定的心得了。怎么逆向呢?首先你得脱壳,然后你要去找到注册机制的验证机制,找到了它怎么验证的,这个软件我们就能搞定PJ了。那么在之前的课里我们都是根据一定的特征去找到验证机制的,今天我们来学习下,怎么从一个没有弹窗的软件里找出关键位置。https://file.zsxq.com/335/f4/35f4e2d7da3614bbd991c0bc8f6d853f0625cca4da2b77e7638aa0c578d36e4f这是我写的一个小软件,中间这个数字会一直变啊变啊变啊变……我们此次的目的是让这个数字不要再变了。查壳,没壳,丢到dnSpy里走一波。因为没有啥太好的思路,所以直接F5让它跑起来https://file.zsxq.com/3d1/bb/d1bbf4fc332f5e345f07fe933ba9dba77134678758b5a4b9baca135e70ddcb1e既然变化发生在这个窗口,那么我们不妨在这里中断,看一下它的调用堆栈https://file.zsxq.com/31a/0b/1a0b56bc4d86838bd5d66e2be63a153b33b22808494d0c069b210d0e909ad892堆栈里从Main方法开始就调用了系统的各种dll,看起来我们只能从Main入手了,双击进入https://file.zsxq.com/3f1/ca/f1cac9511a3df6dbb4825372b118979fc36355fa4c3d6f70fb6001a4cc435aa1在这里我们能看到一个对窗口的初始化,说明这个程序在运行后显示了Form1窗口点击Form1,我们能找到这个窗口的初始化信息https://file.zsxq.com/324/7e/247e306ed03affa59618995671330e60e72f011aba8675714d246acb136bc207点击InitializeComponent方法,看一下这个窗口有哪些元素https://file.zsxq.com/342/6f/426f402b6e343a3e877d9fb17dfdcb80d2554f91fb81dd89b5e65d49a70afa5a如上图,引起我们注意的有两个元素,一个是500毫秒执行一次的Timer1(时钟1),另一个是一个label2(标签2)那么我们大概能猜到,是时钟1每隔500毫米改变了一次标签2的内容。为了验证我们这个想法,我在39行的label2上点击右键->分析在下方的分析器里,我们可以找到它的一些分析内容https://file.zsxq.com/38b/0e/8b0e697b9d7e45e0caf393e5d9490dd2d78a569a6f20e0276bd14519a75b6392双击跟进Timer1_Tick去看看https://file.zsxq.com/305/f3/05f3b6ff443a420e2efa3923799e6cd7409aae07f753767051065c1b1be0ffb8发现这个方法里写了对label2的Text属性和ForeColor属性的修改。右键编辑方法,把不需要的语句注释掉https://file.zsxq.com/394/62/94620422006ff2e96131924b2119234addc06db2848e77e69f57cdc2ea96f5b2编译,保存。https://file.zsxq.com/35e/16/5e1664ea3c25fabbfb2dcf7a0a63c8b493398845c3231baaeea00ab549d0e9eb这次它就不会变了。课件下载:https://www.lanzouw.com/i3r1yuf课后作业是,想想明明laber2被赋值了文本内容和颜色,但为什么我们在被赋值里找不到它而是在被读取里找到了?

byh3025 发表于 2019-4-12 16:59

谢谢你的教程

wpsys 发表于 2019-4-12 17:00

学习了,感谢分享!

misf 发表于 2019-4-12 18:32

看看学习下 谢谢分享

李沉舟 发表于 2019-4-12 22:38

woc,能直接编辑源代码了,成精了。

HlccFu 发表于 2019-4-13 12:47

回帖是一种美德,顶贴是给楼主热心分享的动力!!!

进来看看 发表于 2019-4-18 16:42

请问我同样分析却没有出现那个timer是哪里的问题。
另外我不太明白,课后作业是,想想明明laber2被赋值了文本内容和颜色,但为什么我们在被赋值里找不到它而是在被读取里找到了?这句话。
是这样,他初始化的时候可能是赋值了一个颜色,当然也可能在不设置的情况下有默认颜色。因为颜色是有三种元素按一定比例混合后显示,它好像把这三种元素的比例随机化然后赋值,这样颜色就会一直变(每隔一段时间赋值一次),而且应该说每次变化都是随机的。

nicaia 发表于 2019-4-20 14:08

进来看看 发表于 2019-4-18 16:42
请问我同样分析却没有出现那个timer是哪里的问题。
另外我不太明白,课后作业是,想想明明laber2被赋值了 ...

你的dnspy和我版本一样吗?按你截图的分析也是可以的,跟进就行了。

nicaia 发表于 2019-4-20 14:12

对int a进行赋值:int a = 1;
读取a的值:int b = a;
然后读我留的作业去理解。

进来看看 发表于 2019-4-20 14:25

nicaia 发表于 2019-4-20 14:08
你的dnspy和我版本一样吗?按你截图的分析也是可以的,跟进就行了。

不是版本的问题,与你分析时点的地方有关。
页: [1] 2 3
查看完整版本: .Net零基础逆向教程 —— 第七课(千变万化)