Friday, April 1, 2011

[TM]I hate CGF! 天朝的墙你大爷的

心血来潮花$44买了1年的FatCow,结果买完发现国内给墙了……
坐等明天退款然后搬家到GoDaddy……
哎- -明明FatCow那么便宜那么好使

[TM]Logo?最近很迷小Pro微距拍白纸黑字的感觉。。。


昨天阿猫说想成立美化组
我说我美么
阿猫说美!
好吧其实我跟美化什么的向来没缘分……
但是挺想加个组(这样就有勋章和权限啦!瞅我这点儿出息)
讨论说新板块叫什么呀
强迫症疗养院……挺适合的- -
闲来无事做个Logo玩
因为特别喜欢小Pro拍的白纸黑字
明明我写的字那么烂结果被拍出来还挺带感的



发现蓝配黑很赞嘛。

还有那天新开了张信用卡
幻想一下以后结帐签这么个卡通的名字……
最后还是放弃了
用在Blog的LOGO上也不错





Thursday, March 31, 2011

【翻译+实验】给电源键菜单里添加“重启”等选项

[Post only for the purpose of personal study]
转贴备忘,仅供个人学习参考

背景:其实八键开关神马的能轻易地给你添加一个重启按钮,怕麻烦的请不要再往下看了。即使不用八键开关,非要在电源菜单里加重启的话,XDA上也有直接可以刷进去就高枕无忧的包。我为什么贴了这个教程过来呢?因为我一直相信授之以鱼不如授之以渔这件事,做完这一系列看起来毫无意义的工作其实可以学到不少东西,比如我就学到了自定义xml元素。不只是重启菜单,用同样的原理以后还可以为手机定制不同的功能,让我想起了A2时代啊……好怀念。

准备工作:

  1. Java当然是必备品,记得配置好环境变量再来。验证配置是否正确的方法:在cmd中输入命令javac,显示所有命令帮助
  2. 确保xRecovery正常工作,出错了有后悔药可吃。或者你不介意用FlashTool或US、PCC什么的重刷。
  3. 准备好要修改的framework-res.apk和framework.jar,用RE或者adb从手机中提取;或者从固件中直接提取。
  4. 准备好你喜欢的反编译apk的工具。
  5. 懂得用两个非常简单的java命令反编译和编译jar包。

第一阶段:修改framework-res.apk

  1. 反编译framework-res.apk后,会得到framework-res包里的所有文件,其中的xml文件就可以用任意文本编辑器打开浏览,而不是乱码。
  2. 用记事本等单纯的文本编辑器打开“res/values/”路径下的“String.xml”文件。
  3. 给xml文件添加元素。添加电源菜单里要出现的字符串Reboot,如果需要的话还可以添加Recovery之类

      <string name="reboot_recovery">Recovery</string>
      <string name="reboot">Reboot</string>

      add string

      Click to view large pic

  4. 用记事本等单纯的文本编辑器打开“res/values/”路径下的“Public.xml”文件。
  5. 给刚刚定义的菜单项分配id.观察一下这个xml文件,会发现每一行都是这样的结构:

    eg:

    <public type="string[变量类型]" name="mochi_strings_playback_speed_mochi_lock_txt[变量名称]" id="0x0104042b[变量id]" />

    因为刚刚我们在string.xml里添加了元素,所以要在public.xml里也添加相应的定义。通过观察源文件的规律,发现id的分配是有顺序的十六进制数,为了避免添加重复的id,我们找到string类变量的最后一个,在这个教程里是mochi_strings_playback_speed_mochi_lock_txt

    有可能根据固件的不同而有所区别,请注意。

    string id 1

    Click to view large pic

  6. 观察一下最后一个string的id数值【eg: 0x0104042b】,同时对比一下紧挨着它的下一个元素的id【eg: 0x01050000】,最后的string的id的下一位没有被后面元素占用,那么我们就可以把最后string的id的下一位分配给新定义的菜单项Reboot了。
  7. [Tips]用Windows自带的计算器就可以方便地把十六进制数转换成我们熟悉的十进制数:

    hex2dec

    Click to view large pic

    在本教程中,换算得到结果

    最后一个String的id是:0x0104042b=17040427 它后面那个变量的id是:0x01050000=17104896

    可以看到17040427的下一位17040428=104042C(怎么换过来的再怎么换回去)没有被占用,所以我们可以把它分配给新定义的Reboot选项。在刚刚看到的最后一个String后面添加:

    <public type="string" name="reboot" id="0x0104042c" />

    add id

    Click to view large pic

    如果刚刚你还添加了别的选项,就按照同样的方法继续往下分配id.

  8. 为Reboot菜单项添加一个图标。很简单,找一个你喜欢的图标放到res\drawable-ldpi文件夹里。这个文件夹在不同的固件里可能会不一样,我看到原教程是drawable-hdpi文件夹(因为那是给三星Vibrant写的)。我们只要找到power off这个图标在哪儿就可以把我们新添加的图标放在它旁边了。而且还可以在power off图标的基础上修改一个Reboot的图标,既保险又风格统一。Click to view large picicon
  9. 假设你的新图标名称叫ic_lock_reboot.png(随便取吧,记住这个名字)我们还要在“res\values”里的public.xml给图标分配id,方法跟4、5步一样。这次变量类型就不是string而是图片drawable了,找到同类的最后一个,添加到它的下一位【这里我分配的是0x10800b1】。

    <public type="drawable" name="ic_lock_reboot" id="0x10800b1" />

    add icon id

    Click to view large pic

  10. 至此framework-res.apk已经修改完毕。用apk工具再给编译回去,我用的当然还是apktool。

*如果实在学不会或者懒得改framework,直接下载我改好的吧……当然仅限U20i的2.1.0.A.06固件,我还改过状态栏图标。其他机型、固件的,请去XDA找。

第二阶段:修改framework.jar

  1. 从手机中提取出framework.jar

  2. 在cmd中反编译之。反编译得到的文件夹里,找到“com\android\internal\app”路径下的ShutdownThread.smali文件。

  3. 用记事本打开,在# instance fields段的末尾,也就是.field的最后一行,添加以下语句:

    .field public static mReboot:I

    add integer

    Click to view large pic

  4. 在# direct methods段中找查找invoke-static {}, Landroid/os/Power;->shutdown()V这一行,在其之前添加以下语句:
  5. sget v1, Lcom/android/internal/app/ShutdownThread;->mReboot:I

    const/4 v2, 0x1

    if-eq v1, v2, :reboot

    add methodClick to view large pic

  6. 然后紧接着在下面的

    .line 303
        return-void

    之后添加以下语句:

    :reboot

    const-string v4, "now"

    invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V

    return-void

    add method 2Click to view large pic

  7. 至此framework.jar已经修改完毕,编译回去:

*反编译和编译jar包的方法请参考使用smali的教程。简单来说就三步:

反编译:java –jar baksmali.jar 源文件.jar –o 输出文件夹

编译: java –jar smali.jar 待编译的文件夹 –o classes.dex

然后把得到的classes.dex拖拽到原来没解压的jar包里覆盖旧的classes.dex。

第三阶段:修改android.policy.jar

  1. 从手机中提取android.policy.jar
  2. 在cmd中反编译之,得到的文件夹里一层一层点开,直到最后一层“\com\android\internal\policy\impl”,找到GlobalActions.smali,用记事本打开。
  3. 找到createDialog方法(查找const/4 v0, 0x3),在431行处把原来长度为3的数组改成4,因为我们给原来只有三项的菜单添加了一项。如果你除了Reboot还添加了其他的选项,那这个数组的长度要对应着增加。
  4. 把    const/4 v0, 0x3    改为

        const/4 v0, 0x4

    array


     


  5. 查找aput-object v2, v0, v1,定位到第457行。在这句后面添加以下语句:



    1. const/4 v1, 0x3


          new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;


          const v3, 0x10800b1 # reboot icon resource id


          const v4, 0x0104042c # reboot string resource id


          invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V


          aput-object v2, v0, v1



      红色部分的id就是刚才改framework-res.apk的时候我们分配的id,第一行icon的id对应drawable那个,第二行string的id就对应string那个,请参照第一阶段的步骤改。


      add item



    *如果除了Reboot,还添加了Recovery等项,也需要添加相应的代码,方法一样,只需要改一下id的值、变量名称以及数组的索引号。


  6. 添加按了新选项之后执行的动作。复制一个GlobalActions$3.smali动作文件,更名为GlobalActions$7.smali,这个是给Reboot选项用的。

  7. 用记事本打开刚刚造出来的GlobalActions$7.smali文件,查找替换所有的GlobalActions$3变成GlobalActions$7.(一共好像就3处)

  8. 在52行处,“invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V”这一句之前添加以下语句:

  9. const/4 v2, 0x1


    sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I


    action


    *如果还添加了其他选项,就依照6、7步,为其他选项也建立动作,例如为Recovery选项复制修改一个GlobalActions$8,然后文件中所有的GlobalActions$3也都替换成8,添加语句的时候把对应的数组索引号改成0x2。


  10. 至此android.policy.jar修改完毕,编译回jar。

 


————————————————————————————


framework-res.apk,framework.jar和android.policy.jar三个文件修改完成之后,修改权限为644然后刷入手机中,重启即可看到效果。


*644就是第一行前两个勾,第二行第一个勾,第三行第一个勾。



     


 




     


 



    Original Post:
untermensch@XDA How to add Reboot to power menu

[REF] How to add Reboot to power menu (updated 10/21/2010) - xda-developers

[REF] How to add Reboot to power menu (updated 10/21/2010) - xda-developers

[MOD] Reboot Options in Power Menu - xda-developers

[MOD] Reboot Options in Power Menu - xda-developers

Monday, March 28, 2011

[TuT]图解-自己动手做FlashTool用的固件-附工具

[Post only for the purpose of personal study]
老物马克


此帖写给用US和PCC解决不了问题的孩子们。

前提是你得会用FlashTool,或者到了不得不用FlashTool的地步,板儿砖状态,不能正常进系统什么的(人生无常嘛……)

还有一个好处就是,只要FlashTool这个方法一直有效,那咱以后就可以随意刷固件了。把US下载的固件以这种方法保存起来,以后就可以比较放心地虐待你的手机。。。

FlashTool刷固件的方法见置顶教程:
http://sebbs.it168.com/thread-1815134-1-1.html

XDA的德国哥给的FlashTool for mini/mini pro,可能跟X10的不一样:
FlashTool for mini/mini pro



需要的材料:

1、以前通过US保存下来的固件文件。两个最大的文件,就以前你们玩强刷的时候那俩,眼熟吧?
XXX\Update Service\db\13740270\blob_fs



2、转换工具
下载:(不许歧视SkyDrive= =|||我用不了国内的网盘)
http://cid-455ad768bb049cf0.office.live.com/embedicon.aspx/.Public/DecryptFirmware.zip再试一个网盘:
http://www.multiupload.com/QWK5Y05012

解压出来是这么几个东西:



——————————————————我不确定这个步骤是不是必要的———————————————————————
黄色的那两个,可以从US里的插件文件夹里提取,我不太清楚US的更新会不会影响效果。我是Mini Pro,每次连US的时候一开始都会更新一下,所以插件有时候可能会变吧,我猜的。


大家从自己的US文件夹里拿出来比较放心。在这里: XXX\Update Service\plugins
耐心找一下文件名跟工具包里一样的两jar文件,然后复制到工具包文件夹。


然后用记事本编辑一下SeusDecrypt.bat这个文件,把里面那个jar文件的名称给改成跟刚刚粘过来的那个一样,就是后面几个数字的区别。
————————————————————————————————————————————————————————

3、7zip解压软件,免费的,基本万能。
去他们家下载:http://www.7-zip.org/

4、Java http://www.java.com/zh_CN/
之前忘了说,没有Java是不能解密固件的,更不能用FlashTool了,先去看置顶那个贴里的Java环境配置方法。


——————————————————————————————————————————————
开始咯~以下以mini pro为例,X10和mini照着来就行了

1、把你要用的两个固件文件粘到工具包目录下
就这么放这儿就成。






2、运行cmd(Vista/Win7用户建议关掉UAC或者用管理员帐户运行)
cd到工具包这个目录下
cd X:\XXX\XXX\DecryptFirmware

运行 SeusDecrypt.bat 来转换固件
SeusDecrypt.bat FILE_XXXXXXXXX





3、回车以后,就会在那个文件夹下生成.tgz文件。两个固件文件都这么解密一下,得到两个.tgz文件





4、用7Zip解压这两个文件,两步:
第一次: 提取到"*\" 得到俩*.tar文件,分别放在俩文件夹里
第二次: 到这俩文件夹里,分别再提取一遍,两个tar一共得到8个*.sin文件,一个*.ta文件,还有xml文件可以无视。







5、把这些文件都改改名:
amss_fs.sin
amss.sin
cache.sin
fota0.sin
fota1.sin
kernel.sin
simlock.ta
system.sin
userdata.sin

6、Tada~完成了,把这9个文件放到FlashTool的Firmware文件夹下,就可以刷自己做的固件了。

大家好运^_^

——————————————————————————————————————————————————

补充:
X10固件Decrypted之后是这些:


Original Post:

[TuT]两个小工具 + 不到三分钟 = 从固件直接提取文件

[Post only for the purpose of personal study]
老物马克

开学前最后一个晚上,我又来得瑟骗威望了……咱没啥技术,就会翻译整理
今天教大家从sin格式的固件里提取system文件夹里的全部内容。


————————————————————
前情提要:
你要有sin格式的固件才行
你可以直接下载做好的sin格式固件
也可以学会方法以后甭管SE怎么更新都自己动手丰衣足食
方法请参考这里(这家伙又在做广告了):


图解-自己动手做FlashTool用的固件-附工具



————————————————————


需要的工具就两个,都是只有丁点儿大。
SIN2IMG:把sin格式的固件文件转换成img镜像文件 --->
http://www.rayfile.com/files/41ed59c5-145d-11e0-bbf2-0015c55db73d/
unyaffs:解压img文件 --->
http://www.rayfile.com/files/5be9f34f-145d-11e0-b16e-0015c55db73d/


使用方式:


1. 一套固件里有9个sin文件,把其中的system.sin那个文件给揪出来
2. 把system.sin放到你刚刚下载好的SIN2IMG那个工具的目录下,跟工具一起呆着。


3. 如果发现双击打不开SIN2IMG这个工具,就用CMD命令。
按win+R键,输入"cmd"回车,即打开命令提示符窗口。
4. cd到你放SIN2IMG这个工具的文件夹下,不会cd的请百度补课。

5. 输入以下命令: sin2img system.sin system.img
其中"system.sin"是你需要转换的源文件名,"system.img"是你需要传换成的目标文件名



6. 按回车,稍等一会儿,你会在同一个文件夹下得到一个img文件。

7. 现在该轮到第二个工具unyaffs了。把刚刚得到的system.img文件放到它的文件夹下。
那个工具的文件夹里还带一个cygwin1.dll,保险起见我们不要删它。



8. 继续用CMD运行程序,超级没创意的命令: unyaffs system.img
其中"system.img"是你刚刚得到的img镜像文件的文件名


9. 回车,继续等……等到CMD提示你"end of img"的时候,就看到你当前的文件夹下终于有了你想要的东西:



10. 整理整理工具目录,把得到的这一大堆东西收起来放到别处,留着以后用吧。


——————————————————————————


总结……真是够无聊的教程= =|||一般没有人会需要用到。
不过如果你想以后自制ROM,这些是少不了的^_^
你可以自己增加/删除ROM里预置的应用
更改CDF等版本信息号
修改界面外观
预先取得Root权限等等等等……
但是啊但是!
把这些已经拆开玩儿透了的东西再打包签名回去
做成可以刷的固件
那又是另外一回事了
那个需要用到Linux环境

以上!祝我自己开学快乐^_^





PS:
我痛恨那堵墙……传图传不上来,只好用Flickr相册了
如果图在国内挂了,请发挥想象力……
反正这是毫无技术含量的事情……只要有了工具,会用CMD命令就够了。


Original Post:

[TuT]通过wifi把Android手机变成网络摄像头-可用于QQ、Skype

[Post only for the purpose of personal study]
老物马克


如果不想用线,家里又有无线路由器,那么可以试试这个:DroidCamX


APK下载:http://www.megaupload.com/?d=XUR2SPK4
PC端下载:http://www.megaupload.com/?d=NLTW70V0


1. 下载后分别安装,然后保证手机和电脑都在同一个无线网络内。


2. 手机端运行之,设置什么的基本不用动,想开补光灯的可以在设置里给FlashLight那项打钩,不过真的很刺眼- -
正常启动的话,会看到一个IP地址192.168.X.XXX:XXXX,冒号后面四个数字是Port端口。


3. PC端的也运行之,连接方式选“wifi/Lan”,Phone IP填冒号前的,DroidCam Port填冒号后面的,然后点Connect。


4. 顺利的话,Connect那个按钮一会儿会变成Stop,手机那端可以看到摄像的画面了,这就说明连接成功。


不顺利的话,Connect那个按钮一直都是Please wait,然后程序半天没响应,一会儿跳出个对话框跟你说连接失败请检查IP地址和端口什么的。


*如果你再三检查都觉得自己没搞错,那就继续点Connect连,或者断开wifi重新连接,关闭手机端的程序重新打开什么的,不断地试,总会成功的。


5. 成功之后,在QQ的视频设置里,选择设备的下拉菜单里就会出现DroidCam,选它,测试的窗口就能看到摄像的画面了。


如果前一步连接不成功,那么测试的窗口里出现的就是个小绿机器人,返回上一步继续挑战人品。


Skype、MSN、IM等即时通讯程序的设置类似QQ,请自行尝试。


把手机背对着你放到稳当的地方,开始聊吧~


以上!


[FS]去除PDF和EPUB的DRM保护 - 两个Python脚本

[Post only for the purpose of personal study]
转贴备忘,仅供个人学习参考

工具打包:
Multiupload
http://www.multiupload.com/IADRRO538H
RapidShare
http://rapidshare.com/#!download|810l36|454843865|eBook_Decryptor_Collection.zip|15777


  1. 下载并安装JDK - Download 官网下载
  2. 下载并安装Python - Download 工具包中有
  3. 下载并安装Pycrypto - Download 工具包中有
  4. 解压工具包,运行ineptkey.pyw得到证书,然后运行ineptpdf.pyw或ineptepub.pyw来解密相应的电子出版物。



Original Post:
i♥cabbages: Circumventing Adobe ADEPT DRM for EPUB

Sunday, March 13, 2011

Top 5 WikiLeaks Quotes - Joe Lauria

"The word 'security' is a broad, vague generality whose contours should not be invoked to abrogate the fundamental law embodied in the First Amendment. The guarding of military and diplomatic secrets at the expense of informed representative government provides no real security for our Republic."-- Supreme Court Justice Hugo Black, Pentagon Papers Case, 1971.

"The only effective restraint upon executive policy and power... may lie in an enlightened citizenry -- in an informed and critical public opinion which alone can here protect the values of democratic government." -- Justice Potter Stewart, 1971.

"In the First Amendment the Founding Fathers gave the free press the protection it must have to fulfill its essential role in our democracy. The press was to serve the governed, not the governors. The Government's power to censor the press was abolished so that the press would remain forever free to censure the Government. The press was protected so that it could bare the secrets of government and inform the people. Only a free and unrestrained press can effectively expose deception in government. And paramount among the responsibilities of a free press is the duty to prevent any part of the government from deceiving the people and sending them off to distant lands to die of foreign fevers and foreign shot and shell." -- Justice Hugo Black, 1971.

"I've heard the impact of these releases on our foreign policy described as a meltdown, as a game-changer and so on,. I think those descriptions are fairly significantly overwrought. ... Is this embarrassing? Yes. Is it awkward? Yes. Consequences for U.S. foreign policy? I think fairly modest." -- Bob Gates, US Defense Secretary, 2010.

"The best justification governments can find to shut down information is that lives are at risk. In fact, lives have been at risk as a result of the silences and lies revealed in these leaks." -- Jemima Khan, who provided surety to Julian Assange at his London hearing, 2010

BONUS QUOTE:
"WikiLeaks is the 9/11 of diplomacy."-- Franco Frattini, Italian Foreign Minister, 2010.

TIME's Julian Assange Interview: Full Transcript/Audio

TIME's Julian Assange Interview: Full Transcript/Audio

WikiLeaks Shows the Skills of U.S. Diplomats

WikiLeaks Shows the Skills of U.S. Diplomats

WikiLeaks' Russian Cables: Bad for the Reset, Good for Putin?

WikiLeaks' Russian Cables: Bad for the Reset, Good for Putin?